ch8 数据库系统概念(第6版)第八章关系数据库设计.pdf

ch8 数据库系统概念(第6版)第八章关系数据库设计.pdf

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)

1亿VIP精品文档

相关文档