一.部分术语概念
1.域、笛卡尔积、关系、元组、属性
(1)域
一组具有相同数据类型的集合。其实就是属性的取值范围,不同属性可以来自同一个域。
栗子:整数集,实数集,也可以一些自定义的用于约束属性的取值的集合…
(2)笛卡尔积
所有域的所有取值的集合,就是自由组合,不可重复,也不可漏掉。
(3)关系
关系就是笛卡尔积的子集。
(4)元组和属性
笛卡尔积中的每一个元素称为一个元组。
关系的逻辑结构是一张二维表,一行表示一个元组,一列表示一个属性。
(5)联系
笛卡尔积是所有域的所有取值的组合。
关系是笛卡尔积的子集。
元组和属性分别是关系的行和列。
(“域”比作x,y的取值范围 , 笛卡尔积就是在取值范围内的所有x,y构成的点(x,y), 而关系就像是某个特定曲线或平面里的满足条件的点…)
2.主码、候选码、外码
(1)候选码
候选码就是可以唯一标识元组的某个属性值,可以有多个。
(2)主码
若一个关系中有多个候选码,选定其中一个为主码。
(3)外码
它的官方定义是这个样子的 ↓
其实就是 不是码的一个属性恰好和别人家(或自己家)的主码对应上了,叫外码,但它还是不算做参照关系的码。
(4)联系
候选码可以唯一标识元组,于是候选,入选了的候选码就是主码。
而外码不是本关系的候选码,本来没有机会,却碰巧与本关系或者其他关系的主码对应上(有后门!!),于是得到了一个新的职称——外码。
3.关系模式,关系,关系数据库
(1)关系模式
关系模式是对关系的描述。
抽象的“型”。
(2)关系
包含具体的“值”。
(3)关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
数据库是数据的集合,关系数据库当然就是关系的集合了。
(4)联系
关系相当于一张二维表。
关系模式就是对关系抽象的描述。
关系数据库就是某一领域所有关系的集合。
二、关系模型的完整性规则
1.实体完整性规则
若属性A是基本关系R的主属性,则属性A不能去空值。
↓
主属性不能为空
主属性是候选码的属性,候选码可以唯一标识元组,所以不能为空。
2.参照完整性规则
↓
外码要么为空,要么源于被参照关系的主码
在参照完整性中,当空值符合语义要求时,外码可以为空值。
栗子:
(1)
R:公司职员关系(工号,姓名,性别,部门,住址)
其中工号为主码
S:住户关系(住址,户主,人数…)
其中住址为主码
上述R中,“住址”是R 的外码,显然,“住址”不能为空值,没有人没有住处,该码的空值不符合语义要求,所以不可为空。
(2)
R:班级关系(班号,人数,班长,班主任)
S:学生关系(学号,姓名,性别,班号)
其中班长为班级关系的外码,与学生关系的学号来源于同一个域。
班号为学生关系的外码。
班长可以为空值,表示该班级未选出班长,但班号不可为空值,因为每个学生在入学前就已经被分好班级。(emmm…栗子不太恰当,大家凑合着看)
三、章末课后题
(1) Π S N O ( σ J N O = ′ J 1 ′ ( Π S N O , J N O ( S P J ) ) ) \Pi_{SNO}(\sigma_{JNO='J1'}(\Pi_{SNO,JNO}(SPJ))) ΠSNO(σJNO=′J1′(ΠSNO,JNO(SPJ)))
(2) Π S N O ( σ P N O = ′ P 1 ′ ( Π S N O , P N O ( σ J N O = ′ J 1 ′ ( S P J ) ) ) ) \Pi_{SNO}(\sigma_{PNO='P1'}(\Pi_{SNO,PNO}(\sigma_{JNO='J1'}(SPJ)))) ΠSNO(σPNO=′P1′(ΠSNO,PNO(σJNO=′J1′(SPJ))))
(3) Π S N O ( σ C O L O R = ′ 红 ′ ( Π P N O , C O L O R ( P ) ⋈ Π S N O , P N O ( σ J N O = ′ J 1 ′ ( S P J ) ) ) \Pi_{SNO}(\sigma_{COLOR='红'}(\Pi_{PNO,COLOR}(P)\Join \Pi_{SNO,PNO}(\sigma_{JNO='J1'}(SPJ))) ΠSNO(σCOLOR=′红′(ΠPNO,COLOR(P)⋈ΠSNO,PNO(σJNO=′J1′(SPJ)))
(4) Π J N O ( S P J ) − Π J N O ( Π P N O ( σ C O L O R = ′ 红 ′ ( P ) ) ⋈ Π S N O ( σ C I T Y = ′ 天 津 ′ ( S ) ) ⋈ Π S N O , P N O , J N O ( S P J ) ) \Pi_{JNO}(SPJ)-\Pi_{JNO}(\Pi_{PNO}(\sigma_{COLOR='红'}(P))\Join \Pi_{SNO}(\sigma_{CITY='天津'}(S)) \Join \Pi_{SNO,PNO,JNO}(SPJ)) ΠJNO(SPJ)−ΠJNO(ΠPNO(σCOLOR=′红′(P))⋈ΠSNO(σCITY=′天津′(S))⋈ΠSNO,PNO,JNO(SPJ))
(5) Π J N O , P N O ( S P J ) ÷ Π P N O ( σ S N O = ′ S 1 ′ ( S P J ) ) \Pi_{JNO,PNO}(SPJ) \div \Pi_{PNO}(\sigma_{SNO='S1'}(SPJ)) ΠJNO,PNO(SPJ)÷ΠPNO(σSNO=′S1′(SPJ))
以上为参照老师博文打出的公式。
以下为手写版作业:
8.
五个基本运算有:
σ \sigma σ 、 Π \Pi Π 、 ∪ \cup ∪ 、 − - − 、 × \times ×
其余运算
∩ \cap ∩ 、 ⋈ \Join ⋈ 、 ÷ \div ÷
将其余运算用基本运算表示:
(1)R ∩ \cap ∩ S = R − ( R − S ) R -(R - S) R−(R−S)
(2)关系R(A,X),关系S(B,Y)
R ⋈ A θ B \underset{A θ B}\Join AθB⋈ S = σ A θ B ( R × S ) \sigma_{A θ B}(R \times S) σAθB(R×S)
(3)关系R(X,Y),关系S(Y,Z)
R ÷ \div ÷ S = Π X − Π X ( Π X × Π Y ( S ) − R ) \Pi_{X} - \Pi_{X}(\Pi_{X} \times \Pi_{Y}(S) - R) ΠX−ΠX(ΠX×ΠY(S)−R)