实验12 数据库E-R图设计
1、注意事项:
1)、先完成实体的关系模型(表),确定实体的主码(尽量单列做主码)
2)、联系的转换:
①1:1的联系
联系合并到某个1端,并在该表中增加另一个实体的码(作为外码,不作为主属性!),以及添加联系本身的属性。
② 1:n的联系
合并到n端对应的表中,将1端的码添加到n端的表(作为外码,不作为主属性!),以及添加联系本身的属性。
③m:n的联系
必须增加一个新表,新表的码至少由联系两端实体的码组合而成,同时增加相关的联系属性(如有时间等辅助标识唯一属性,一般应作为主属性)。
3)、课本P232,1:1,1:n联系时,把转换新的关系模式打叉,以后工作时除非很特殊的场景,都不要转换为新的表。ER图的设计虽然理论上是最简关系,但关系型数据库的缺点之一就是表相对较多,多表查询可能时延较大,商用时还可能根据性能降低范式合表(只要业务模型能规避低范式的增删改问题即可)。
4)注意事项:取决于业务建模
① 联系需要有意义,而不仅是取值约束
② 联系可能需要新增时间等主属性
③ 两个实体之间可能存在多种联系
④ 三元联系之外,依然可能存在两两间联系
⑤ 联系可以再与实体或联系产生联系
⑥ 通过编号规则可增加信息量,减少主属性
⑦ 有时通过完整性约束(比如触发器)可约束取值,不一定要通过表来约束
题目1:
某医院病房信息系统中需要如下数据信息:
科室:科地址,科名(不重复),科电话
病房:床位数量,病房号
医生:姓名,职称,性别,工号
病人:姓名,病历号,性别
其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治(简化,只考虑每人一次诊断),一个病人入住病房后(一个病房可能住多名病人)的主管医生只有一个。(注:题目特意未描述医生与病房的联系,请按题意作答。因此分组综合实验宣讲时,都必须讲E-R图的设计,自然语言描述数据库设计容易二义性。)
完成如下设计:
(1)设计该信息系统的E-R图;(20分)
(2)将该E-R图转换为关系模型结构,注明每个关系模式的主码(下划线)和外码(可用FK标注),是否满足BCNF。(10分)
科室(科名,科地址,科电话)
病房(病房号,床位数量,科名(FK))
医生(工号,姓名,职称,性别,科名(FK))
病人(病历号,姓名,性别,病房号(FK),主管医生工号(FK))
没有任何部分码依赖、传递依赖、或非主属性到主码的依赖,所以均满足BCNF。
(3)假设病人可以看多个医生(同一个医生也可以看多次),那么是否需要新建表?请仅写出该新建的表,其他不用写。标注主码(下划线)和外码(可用FK标注)。(10分)
诊断(医生工号(FK),病历号(FK),诊断时间,诊断)
题目2:
某工厂信息系统需如下数据信息,集团有多个工厂,每间工厂可生产多种产品,且每种产品可以在多间工厂生产,每间工厂需记录生产产品的该月产量;每间工厂聘用多名职工,且每名职工只能在一间工厂工作,工厂聘用职工有聘期和工资。工厂的属性有厂名、工厂编号、地址,产品的属性有产品名、产品编号、规格,职工的属性有职工号、姓名。
(1)根据上述语义画出E-R图,要求画出属性;(15分)
(2)将该E-R模型转换为关系模型,指出每个关系模式的主码(下划线)和外码(可用FK标注),以及是否满足BCNF。(15分)
工厂(工厂编号,厂名,地址)满足BCNF;
产品(产品编号,产品名,规格)满足BCNF;
职工(职工号,姓名,聘期,工资,工厂编号(FK))满足BCNF;
生产记录(工厂编号(FK),产品编号(FK),生产年月,月产量)满足BCNF。
由于记录月产量肯定需要按月份划分,所以在生产记录表中引入生产年月这一属性。
题目3:
某高校设计的数据库需设计如下属性列:
① 首先课程号、准考证号均为唯一,请根据下表的列名确定对应属性列;(提示:唯一即能够标识一个实体,先读完题目,然后根据下表排除后的列名找出课程号、准考证号能唯一确定的列。此外,本题特意不用学号);
② 教室号和考试时间(含日期时间)决定唯一的考场,每门课可以有多个考场(而一个考场在某考试时间只能考一门课);一人可以考多门课(不同学期可以考同一门课);
③ 缓考情况里比如缓考/休学需记录在该学期的该次选课里,成绩为空;
请根据题干作答, 其他语义不再赘述 (题目并未给出很详细的信息,但可以按题意给出唯一参考答案。)
准考证号 | 姓名 | 教室号 | 考试时间 | 主监考工号 | 座位号 | 缓考情况 | 考试成绩 | 考试成绩 | 考试成绩 | 考试成绩 |
课程号 | 课程名 | 学期 | 成绩 | |||||||
缓考/休学/缺考… | 2022-1 |
(1)请回答以上关系是否满足3NF?是否满足2NF?
由题目可知,在考试成绩一列还可细分,不满足1NF,故不满足3NF和2NF
(2)若不满足,请将其转化为符合3NF,表名自定,不要增删属性,注明主码(下划线)和外码(用FK标注)。提示:用E-R图思想比列举函数依赖关系往往更直观,尤其商用需要描述上百个属性时。
学生信息(准考证号,姓名)
课程信息(课程号,课程名)
考场信息(教室号,考试时间,课程号(FK),主监考工号)
考场座位(准考证号(FK),教室号(FK),考试时间,座位号)
考试成绩(准考证号(FK),课程号(FK),学期,缓考情况,成绩)