声明:最近在准备考试,故整理数据库笔记。
关系数据模型
关系
域:
笛卡尔积
关系
域D1, D2, …, Dn上的关系r是笛卡尔积D1x D2…xDn的任意子集。n个域上的关系称为n-元关系,“元”又称目或度
关系的性质
1.关系是笛卡尔积的子集,即元组的集合,所以,关系中行的次序不重要,且关系(表)中不能包含两个相同的元组(行)
2.用二维表表示关系使得我们可以以任意列次序显示关系,或者说列的顺序不重要
3.在关系数据库中,任何有意义的关系都要满足一定的约束条件,这些约束都是语义约束
4.除了语义约束外,对关系的限制主要有两点:
第一,在关系数据库中,只考虑有限关系
第二,关系的每个属性都必须是原子的
关系的码
码:设K是关系R的属性集,如果K能唯一地标识一个元组,而其真子集不能,则K是R的码
超码:设K是R的码,K X,则X是关系R的超
主码:通常,当一个关系具有多个码时,应当选择其中的一个作为惟一识别关系元组的码,称为主码
候选码:主码用于表示由多个码中选出的作为惟一识别关系元组的码,而所有的码又称候选码
码中的属性称为主属性,而不在任何码中出现的属性称为非主属性
关系模式
关系有型和值之分
关系的值
关系就是具有特定类型的“变量”
关系的值即关系在某一时刻的快照,又称关系实例
关系的型
关系模式看作“类型”
关系的型用关系模式刻画
在实际的关系数据库中进行某个关系的定义时给出各个属性的数据类型、取值范围和完整性约束
注意:D和DOM是定义表时才考虑的,目前还不用考虑属性之间的数据依赖F ,因此关系模式简记为R(A1
, A2, …,An),或者简写为R(U)
从E-R模型到关系模型
ER图向关系模式转换
包括:属性处理、实体集处理、联系集处理
派生属性的处理:转换时我们忽略派生属性
复合属性的处理:忽略复合属性本身,而直接考虑它的成分属性
多值属性的处理:为每个多值属性M创建一个关系RM
①如果多值属性M是实体集E的属性,K是E的主码,则关系RM的属性由M和K组成。
②如果多值属性M是联系集R的属性,并且R涉及实体集E1, …, En,它们的主码分别是K1, …, Kn,则关系RM的属性由M和K1, …, Kn组成
实体集处理
联系集的处理
包括:联系是一对一的,则可以和任意一端
实体集转换得到的关系模式合并
联系是一对多的,则和多端实体集转换得到的关系模式合并
联系是多对多的,则该联系集转换成独立的关系模式
**例子:**将某高校教学管理系统的E-R图换成关系模式。图中的有向边表示该实体处于一端,无向边表示该实体集处于多端。假设该E-R图中的多值复合属性Phones已经转换成如下关系模式: Phones (Phone#, Dno, Office)
强实体集得到如下关系模式:
Departments(Dno, Dname)
Teachers(Tno, Tname, Sex, Birthday, Title)
Students(Sno, Sname, Sex, Birthday, Enrollyear, Speciality)
Courses(Cno, Cname, Period, Credit)
一对一和一对多联系的转换
Departments(Dno, Dname, Dheadno)
Teachers(Tno, Tname, Sex, Birthday, Title, Dno)
Students(Sno, Sname, Sex, Birthday, Enrollyear, Speciality, Dno)
多对多联系得到的关系模式
3个多对多联系集得到如下关系模式:
Teaches (Tno, Cno)
SC(Sno, Cno, Grade)
Evalues (Sno, Tno, Cno, Escore)
合并后得到的关系模式
Departments(Dno, Dname, Dheadno)
Teachers(Tno, Tname, Sex, Birthday, Title, Dno)
Students(Sno, Sname, Sex, Birthday, Enrollyear, Speciality, Dno)
Courses(Cno, Cname, Period, Credit)
Teaches (Tno, Cno)
SC(Sno, Cno, Grade)
Evalues (Sno, Tno, Cno, Escore)
Phones (Phone#, Dno, Office)
来源:CSDN
作者:西红柿炒番茄007
链接:https://blog.csdn.net/sinat_34953318/article/details/104595540