ch8 数据库系统概念(第6版)第八章关系数据库设计
数据库系统
上海交通大学计算机系
张忠能
zhang-zn@cs.sjtu.edu.cn
1
第8章:关系数据库设计
关系数据库设计中易犯的错误
函数依赖
分解
第一范式与第二范式
第三范式
Boyce - Codd 范式
多值依赖与第四范式
3
关系数据库设计中易犯的错误
假设我们将 instructor 和 department 合并为 inst_dept
(关系集 inst_dept没有被连接)
结果有可能出现信息重复
关系数据库设计中易犯的错误
过度冗余——数据重复
更新异常——更新代价大、可能导致数据不一致
删除异常——部分信息的删除可能导致信息的丢失
插入异常——必须有完整信息
5
不重复的合并表
将以下关系进行合并
sec_class(sec_id, building, room_number) 和
section(course_id, sec_id, semester, year)
合并为一个关系
section(course_id, sec_id, semester, year,
building, room_number)
不会产生重复
有损分解
分解R = (A, B)
R1 = (A) R2 = (B)
A B A B
1 1
2 2
1 (r) B(r)
A
r
A B
(r) (r)
A B
1
2
1
2
7
有损分解 例
假设我们从 inst_dept 着手. 如何将它分开 (分解) 成为
instructor 和 department ?
定一个规则 “如果存在模式(dept_name, building,
budget), 则 dept_name 会成为候选码”
表示为 函数依赖:
dept_name building, budget
在 inst_dept 中, 由于dept_name 不是候选码, 故一个部
门的大楼和预算可能会出现重复.
由此说明需要分解inst_dept
不是怎样分解都合适. 假设我们把
employee(ID, name, street, city, salary) 分解为
employee1 (ID, name)
employee2 (name, street, city, sala
原创力文档

文档评论(0)