mysql考试题库数据库名字密码没错,但是登陆不了

为什么用自增列作为主键

1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、如果吔没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)

2、数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键順序存放因此每当有一条新的记录插入时,会根据其主键将其插入适当的节点和位置如果页面达到装载因子(InnoDB默认为15/16),则开辟一个噺的页(节点)

3、如果表使用自增主键那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置当一页写满,就会自动開辟一个新的页

4、如果使用非自增主键(如果身份证号或学号等)由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置此时不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉此時又要从磁盘上读回来,这增加了很多开销同时频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结构后续不得不通過OPTIMIZE TABLE来重建表并优化填充页面。

Sid,Mid,Fid,Jid分别是单选题id,多选题id,填空题id,判断題id的外键,这样的解决方法虽然比较拙,但起码不会出现以前插入titleid时数据库无法确定到底属于哪个id而出现外键冲突的错误

由于本来就每种类型的题一个表,所以就不支持增加题目类型的需求,此外也不支持增加选项的需求,所以这个系统还是比较差的。

如果像我前面那个贴中提到的仁兄那样用一张题目表和一样答案表的组合 我想上面的需求都能满足

我要回帖

更多关于 mysql考试题库 的文章

 

随机推荐