一、关系模式设计的问题
1.数据冗余问题:在表9-1中,学生所在系和其所住宿舍楼的信息冗余,一个系有多少个学生,这个系所对应的宿舍楼的信息就至少要重复存储多少遍。(数据冗余带来的问题:存储空间的浪费、严重的数据不一致)
2.数据更新问题:如果某一学生从计算机系转到了信息管理系,那么不但要修改此学生的Sdept列的值,而且还要修改其Sloc列的值,从而使修改复杂化。
3.数据插入问题:新成立某个系,并且确定了该系学生的宿舍楼,但因为这个系还没有招生,其Sno和Cno列的值均为空,但因为Sno和Cno是这个表的主键,不能为空。
4.数据插入问题:如果一名学生最初只选修了一门课,之后又放弃了,那么应该删除该学生选修此门课程的记录。但由于这个学生只选修了一门课,因此,删除此学生选课记录的同时也就删除了此学生的其他基本信息(delete删除整个元组)。
二、函数依赖
1.基本概念
某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。一般把X函数决定Y,或Y函数依赖于X表示为:X→Y。
例如,对学生关系模式Student(Sno,Sname,Sdept,Sage)有以下函数依赖关系:
Sno→Sname, Sno→Sdept, Sno→Sage
对学生选课关系模式SC(Sno,Cno,Grade)有以下函数依赖关系