【数据库篇】关系模式的表示——(1)问题的提出

1、关系模式的表示 

【数据库篇】关系模式的表示——(1)问题的提出_第1张图片

R:表示关系的名字比如:sc选课表,student学生表。

U:表示一个关系模式的所有属性,比如student表:U(sno,sname,sage,ssex)。

D:表示属性的取值范围比如:性别的取值范围为“男”或“女”。

DOM:表示属性到取值范围的依赖。

F:为属性U上的一组数据依赖。

比如:知道学号sno可以推测出sname,sage,ssex。

【数据库篇】关系模式的表示——(1)问题的提出_第2张图片

 2、数据依赖

【数据库篇】关系模式的表示——(1)问题的提出_第3张图片

比如:学号sno可以推测出sname,sage,ssex。

这就是一种数据依赖。

sname函数依赖于sno。

sage函数依赖与sno。

ssex函数依赖于sno。

3、函数依赖在现实生活中的体现

【例】描述一个学生关系,可以有学号、姓名、系名等属性。

一个学号只对应一个学生,一个学生只在一个系中学习,学号确定之后学生所在的系的值就被唯一确定。

Sno函数决定Sname,Sno函数决定Sdept。

sno -> Sname,Sno -> Sdept。

4、数据依赖存在的问题

比如一个选课表:

U(sno,cno,sdept,mname,grade) 

sno:学号,cno:课号,sdept:系名,mname:系主任名,grade:学生成绩

(1)数据冗余

        浪费大量储存空间,每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。

(2)更新异常

        数据冗余,更新的时候。维护数据完整性代价太大。如果某系更换系主任后,必须更改与该系学生有关的每一个元组,否则会出现数据不一致的异常。

(3)插入异常

        如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库。

(4)删除异常

        如果某个系的学生毕业了,则删除该系学生信息的同时,把这个系及其主任信息也丢掉了。

5、函数依赖的解决方式

        把单一的模式分为多个关系模式,使得每个模式只存在一个函数依赖。

你可能感兴趣的:(数据库,数据库)