如果一个主键是多个字段构成,
比如老师带学生,学生不会重复
teacherid studentid ...
这样的话,主键可以用这两个字段构成,如果还有第几期的概念的话,可能还要三个字段构成。这样和这个表关联的其他表,字段就非常多了,比如成绩表,teacherid studentid type score。使用起来很不方便,每次传递参数的时候都要一大串。但如果用id来表示主键的话,是不是又不符合范式了呢?
id teacherid studentid ...
id type scoreid 和teacherid studentid 代表同一个东西了。为了防止teacherid studentid 重复,还要建立唯一索引了
比如老师带学生,学生不会重复
teacherid studentid ...
这样的话,主键可以用这两个字段构成,如果还有第几期的概念的话,可能还要三个字段构成。这样和这个表关联的其他表,字段就非常多了,比如成绩表,teacherid studentid type score。使用起来很不方便,每次传递参数的时候都要一大串。但如果用id来表示主键的话,是不是又不符合范式了呢?
id teacherid studentid ...
id type scoreid 和teacherid studentid 代表同一个东西了。为了防止teacherid studentid 重复,还要建立唯一索引了
唯一索引还是要建立的.
如楼上所说,没啥范式不范式的,对于OLTP来说,重要的是高效,方便.
teacher表 student表是存放基础信息的吧,现在是选课表
teacherid studentid 作为选课表的主键然后又有成绩表
这时选课表的teacherid studentid 和课程又一起组成主键。如果成绩表还分单项成绩,选择题几分,填空题几分,还要加一个表,他的主键变成
teacherid studentid 课程 题目类型这样主键不是越来越长了么?
我同意9楼的~最好不要设置外键 外键在业务中处理就OK了
我看了金蝶K/3系统 基本是不设外键的~因为表很多的时候设外键 操作起来会很头痛