SQL三范式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.2 关系范式理论 表的优化 一个关系模式由五部分组成 关系名 关系中的属性名,也就是列名 属性所属的域名 属性向域的映射 数据间的相互依赖关系 根据对关系的不同数据依赖程度,分为第一范式、第二范式、第三范式、BCNF、第四范式和第五范式 范式就是对关系的不同数据依赖程度的要求 First Normal Form——第一范式 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。 First Normal Form——第一范式 例如,如下的数据库表是符合第一范式的: 字段1??字段2??字段3??字段4?   ??  ??  ??  ?    而这样的数据库表是不符合第一范式的: 字段1??字段2??字段3??字段4?   ??  ??字段3.1??字段3.2??  ? First Normal Form——第一范式(续) 相关概念 第一范式就是所设计表的每一个分量必须是不可分的数据项,即每一列不许是集合、序列等非原子属性 非第一范式转化成第一范式的方法 把非原子属性的列变为原子属性的列 分解表 Second Normal Form——第二范式 Second Normal Form——第二范式(续) 假定选课关系表为 SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分), 关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) → (姓名, 年龄, 成绩, 学分) Second Normal Form——第二范式(续) 这个数据库表不满足第二范式,因为存在如下决定关系: (课程名称) → (学分) (学号) → (姓名, 年龄) 不符合第二范式引发的问题 (1) 数据冗余 (2) 更新异常   (3) 插入异常 (4) 删除异常  解决方法 把选课关系表SelectCourse改为如下三个表: 学生:Student(学号, 姓名, 年龄); 课程:Course(课程名称, 学分); 选课关系:SelectCourse(学号, 课程名称, 成绩)。 第三范式 第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。 所谓传递函数依赖,指的是如果存在A → B → C的决定关系,则C传递函数依赖于A 第三范式 假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字学号,因为存在如下决定关系: (学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话) 第三范式 (学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话) 这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:    (学号) → (所在学院) → (学院地点, 学院电话) 引起的问题 数据冗余 更新异常 插入异常 删除异常 解决办法 把学生关系表分为如下两个表:    学生:(学号, 姓名, 年龄, 所在学院);    学院:(学院, 地点, 电话)。 鲍依斯-科得范式(BCNF) 在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式 假设仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:    (仓库ID, 存储物品ID) →(管理员ID, 数量)    (管理员ID, 存储物品ID) → (仓库ID, 数量)    所以,(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。 但是,由于存在如下决定关系:    (仓库ID) → (管理员ID)    (管理员ID) → (仓库ID) 产生的问题 (1) 删除异常:    当仓库被清空后,所有存储物品ID和数量信息被删除的同时,仓库ID和管理员ID信息也被删除了。 (2) 插入异常:    当仓库没有存储任何物品时,无法给仓库分配管理员。 (3) 更新异常:    如果仓库换了管理员,则表中所有行的管理员ID都要修改。 解决办法 把仓库管理关系表分解为二个关系表 仓库管理:StorehouseManage(仓库ID, 管理员ID) 仓库:Storehouse(仓库ID, 存储物品ID, 数量)。 范式应用 我们来逐步搞定一个论坛的数据库,有如下信息: (1) 用户:用户名,emai

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档