【软考】规范化(范式)

1. 说明
  • 1.关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化的程度。
  • 2.范式有 1NF、2NF、3NF、BCNF、4NF 和 5NF,其中1NF 的级别最低。
  • 3.这几种范式之间,5NFC4NFCBCNFC3NFC2NFCINF 成立。
  • 4.通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式,这个过程称为规范化。
  • 5.产生冗余和异常的两个重要原因是部分依赖和传递依赖。
  • 6.3NF模式中不存在非主属性对码的部分函数依赖和传递函数依赖,具有较好的性能。
  • 7.对于非3NF的1NF和2NF,性能弱,一般不宜作为数据库模式。
  • 8.将非3NF的1NF和2NF变换成3NF或更高级别的范式,这个变换过程称为关系模式的规范化处理
2. 1NF
  • 1.第一范式。
  • 2.若关系模式R的每一个分量都是不可再分的数据项,则关系模式R属于第一范式。
  • 3.要求:数据库表的每一列都是不可分割的基本数据项,即表中的每个属性值都是原子值,不可再分。
  • 4.目的:消除重复的列,确保每个列都包含原子值。
  • 5.举例:在客户信息表中,不能将姓名和地址放在同一个列中,应分别设为两个独立的列。
  • 6.存在的问题
    a.冗余度大。
    b.引起修改操作的不一致性。
    c.插入异常。
    d.删除异常。
3. 2NF
  • 1.第二范式。
  • 2.若关系模式 R∈1NF,且每一个非主属性完全依赖于码,则关系模式 R∈2NF。
  • 3.当 1NF 消除了非主属性对码的部分函数依赖,则称为2NF。
  • 4.要求:在第一范式的基础上,所有非主属性完全依赖于主键,而不是依赖于主键的一部分(针对组合主键)。
  • 5.目的:消除非主属性对部分关键字的依赖,提高数据的一致性和完整性。
  • 6.举例:在订单表中,如果订单ID是主键,而产品价格仅依赖于产品ID(非订单ID的一部分),则应将产品价格抽取到独立的产品表中,并通过外键关联。
4. 3NF
  • 1.第三范式。
  • 2.要求:在第二范式的基础上,所有非主属性不仅完全依赖于主键,而且还必须是直接依赖于主键,而不是通过其他非主属性依赖(即消除传递依赖)。
  • 3.目的:消除非主属性对主关键字的传递依赖,进一步提高数据的一致性和准确性。
  • 4.举例:在员工表中,如果员工ID是主键,部门名称依赖于部门ID,而部门ID又依赖于员工ID(传递依赖),则应将部门信息抽取到独立的部门表中,并通过外键关联员工表。
5. 规范化的好处
  • 1.减少数据冗余:通过将数据分解成多个表,避免了数据的重复存储,减少了存储空间的占用。
  • 2.提高数据一致性:通过定义适当的关系,确保数据在表之间的关联和一致性,有助于避免数据的不一致性和错误。
  • 3.优化查询性能:规范化使得查询更加高效,因为查询只需要在相关的表之间进行连接,而不是在一个大的表中搜索数据。
  • 4.简化数据更新:当数据需要更新时,只需在相关的表中进行更新,而不是在整个数据库中进行搜索和修改。
  • 5.提高存储空间的利用率:避免重复存储,降低了数据的冗余度。
6. 挑战与权衡
  • 1.过度规范化可能导致查询性能的下降和数据操作的复杂性增加。
  • 2.在数据库设计过程中,通常需要在规范化与性能之间做出权衡。
7. 例题
7.1 例题1
  • 1.题目
1.设有关系模式R(E,N,M,L,Q),其函数依赖集为F={E→N,EM→Q,M→L}。
则关系模式R达到了(A);该关系模式(D)。
问题1
A.1NF
B.2NF
C.3NF
D.BCNF
问题2
A.无需进行分解,因为已经达到了3NF
B.无需进行分解,因为已经达到了BCNF
C.尽管不存在部分函数依赖,但还存在传递依赖,所以需要进行分解
D.需要进行分解,因为存在冗余、修改操作的不一致性、插入和删除异常
  • 2.解析
1.首先解出其候选键,候选键即能唯一确定一个元组的属性或属性组,候选键是EM。
2.候选键中的属性是主属性,而其他属性是非主属性。
3.1NF要求关系模式中的属性都是原子属性,即不可再分的属性。
4.E、N、M、L、Q均是不可再分的属性。
5.2NF要求消除非主属性对候选键的部分依赖,而E→N、M→L是部分依赖,不符合2NF。
6.达不到2NF,不可能达到3NF或BCNF。
7.关系模式达不到2NF,存在冗余、修改操作的不一致性、插入和删除异常。
8.如果订单表的id、产品表的id、产品表的价格,
  • 17
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王佑辉

老板,赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值