![数据库系统原理及MySQL应用教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/866/33892866/b_33892866.jpg)
3.6 关系的完整性、规范化理解与应用实验
一、实验目的
1)了解关系模型的基本概念,掌握候选码和主码的确定。
2)掌握并应用完整性规则。
3)掌握关系规范化的定义和方法。
二、验证性实验
某同学开发了X公司员工管理系统,其中部门信息表和员工信息表分别如表3-18和表3-19所示。
表3-18 部门信息表
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/66_01.jpg?sign=1739320819-F1K0f1rKKsLGdcrjoZopeP6iqlajXD1u-0-5c77d131dd946ca0ea0de689f1dec793)
表3-19 员工信息表
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/66_02.jpg?sign=1739320819-sKIbO2lAhxkiERjRHPcRsy3LoZMFDM5g-0-3baff7b3f96559c521702745c34662f6)
请分析:
1)确定部门表和员工表中的候选码,并陈述理由。
部门表:部门代码,(负责人,部门名)
理由:部门代码可以唯一标识一个部门,负责人和部门名也可以唯一标识一个部门
员工表:员工代码
理由:员工代码能唯一标识一个员工
2)选择部门表和员工表的关键字。
部门表:部门代码
员工表:员工代码
3)在部门表和员工表的结构中标注主关键字。
部门表(部门代码,部门名,负责人,地点)
员工表(员工代码,姓名,家庭住址,联系电话,邮政编码,部门代码)
4)在员工表中确定可能的组合关键字,并陈述理由。
员工代码理由:只有员工代码能唯一标识一个员工
5)确定在部门表和员工表中共有的属性。
部门代码
6)指出哪个表中的属性是外关键字。
员工表中的部门代号是外关键字
7)确定哪个表是主表,哪个表是从表。
主表是员工表,从表是部门表
8)部门表和员工表是如何通过关键字实施数据完整性的。
部门表中,部门代号不能为空,这就保证了部门的存在性;
员工表中,员工代码不能为空,这说明有这样的员工;
三、设计性实验
1.仿照第1题,已知系信息表和学生信息表分别如表3-20和表3-21所示。
表3-20 系信息表
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/67_01.jpg?sign=1739320819-tlgmawMTZVxNYRkRks2obSkB2g1SWgGv-0-8a2305e8b3aa468affa6e2a3755ef9cb)
表3-21 学生信息表
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/67_02.jpg?sign=1739320819-iLDR1VRTDdg50A40eIZgeVMGa4DbYLJO-0-7baf1c68b78718145c734daa9dce11c0)
请分析:
1)确定系信息表和学生信息表中的候选码,并陈述理由。
系信息表:
理由:
学生信息表:
理由:
2)选择系信息表和学生信息表的主码。
系信息表:
学生信息表:
3)在系信息表和学生信息表的结构中用下画线标注主关键字。
系信息表(系编号,系名,负责人,联系电话)
学生信息表(学号,姓名,性别,出生年份,系编号,家庭地址)
4)在学生信息表中确定可能的组合关键字,并陈述理由。
5)确定在系信息表和学生表中表示相同意思的属性。
系信息表的__________属性和学生信息表的________________属性
6)指出哪个表中的哪个属性是外关键字,这个外关键字的存在说明了两张表之间是什么联系?
7)确定哪个表是主表,哪个表是从表。
8)系信息表和学生信息表应如何实施3种数据完整性。
系信息表的实体完整性应怎么实施:_____________________________________
学生信息表的实体完整性应怎么实施:_______________________________
这两张表中的参照完整性应怎么实施的:________________________
2.某同学设计了图书在线交易系统,设计了如表3-22所示的订单表,请你用规范化理论将该表进行分解,使之满足3NF的规范化要求。
表3-22 订单表
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/68_01.jpg?sign=1739320819-xwcWuk4BARD5NLk9Y1wvpa4GcrbbYJ3d-0-853fa4a6e4c054331eee70f40b3e36f1)
四、观察与思考
1.有如表3-23和表3-24所示的两张表,如果向关系P中插入新行,新行的值分别列出如下。哪些行能够插入?若不能插入,为什么?
表3-23 供应商关系S(主码是“供应商号”)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/68_02.jpg?sign=1739320819-ftszSyRZsAyB2xhWAXO7pA5uwiGk52xN-0-53c2dbdf2cb21f8e70d0424a474d27fa)
表3-24 零件关系P(主码是“零件号”,外码是“供应商号”)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/68_03.jpg?sign=1739320819-awIimnobHfZRgidJKuZBAk0IN1aS6p5L-0-cbdfbe656e7bc9de842332ddba770535)
A.(′037′,′绿′,null)
B.(null,′黄′,′T20′)
C.(′201′,′红′,′T20′)
D.(′105′,′蓝′,′B01′)
E.(′101′,′黄′,′T11′)
2.非规范化数据表带来的不利影响是什么?