sql 范式 1NF=>2NF=>3NF=>BCNF=>4NF=>5NF 问题

羊美美爱护肤2022-10-04 11:39:541条回答

sql 范式 1NF=>2NF=>3NF=>BCNF=>4NF=>5NF 问题
刚开始学sql 用通俗点的语言来表述下 各个范式的特征,帮助我理解这些.谢谢各位了

已提交,审核后显示!提交回复

共1条回复
叶然 共回答了17个问题 | 采纳率88.2%
1NF:不说实体直接说表.若一个表中的所有列不能再拆分,则满足1NF.
例:客户目录表----客户编码、客户名称、家庭地址、工作单位、联系电话......非1NF
原因:联系电话可以分为家庭电话、单位电话、移动电话等等.
2NF:满足1NF的同时,每个列只能依赖于候选主键,不能依赖于不是非候选主键的列.
例:销售明细表----顾客编码、商品编码、商品名称、销售单价、销售数量、销售金额.非2NF
原因:候选主键是顾客编码+商品编码,所有其它列都依赖于候选主键,但商品名称又依赖于
商品编码,因此此表不是2NF
3NF:满足2NF的同时,不能存在传递依赖.
传递依赖---A依赖于B,B又依赖候选主键,A传递依赖候选主键
例:销售明细表----顾客编码、商品编码、销售单价、销售数量、销售金额.非3NF
(这里设销售单价不依赖商品编码,可以降价、打折等)
原因:候选主键是顾客编码+商品编码,所有其它列都依赖于候选主键,但销售金额又依赖于
销售单价+销售数量,形成了销售金额-->销售单价+销售数量-->候选主键,成了传递依
赖关系.因此,此表不满足3NF.去掉销售金额就是3NF了.
至于BCNF以上基本就不适用了.NF太高需要大量连接查询,数据库的性能急剧下降,不可取.
1年前

相关推荐