开门见山,目前的数据关系图有ER图和MERISE图等等,一般英美用ER的多,欧洲用MERISE的多,我先简单介绍一下
ER图
如下,表示一个老师上N门课,一门课只能被一个老师上
MERISE图
如下,表示老师一个老师对应1~n门课,一门课对应1个老师
那么我们应该把外键加在课程的地方,也就是ER的N处,MERISE的1处,为什么呢?我用MERISE列表举例
当插入一个上课关系时(谁上什么课),我们添加外键就是在已经有一方的条件下插入这个关系。
比如说,在“老师”表中插入外键,其实“谁上课”这个答案已经有了,因为“老师”表中每行都可以唯一确定一个老师,但是“上什么课”是不知道的,所以每当多了一个联系,就要多加一行,因为某个老师“上什么课”有n个选择呢,所以就会造成数据冗余。
而在“课”表中插入时,“上什么课”是知道的,现在只要知道是谁上的,而一个课唯一对应一个老师,所以可以看到其他行是没有信息冗余的。
所以这样可以保证冗余信息最少,结束