当前位置:主页 > 365bet体育在线投注 >

数据库范式分析(1NF,2NF,3NF)

作者:365bet体育在线平台发布时间:2019-03-04 02:14

目前,可以在命令中发现的范式八:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。
通常,仅使用前三种范例。它是第一种正常形式(1NF),第二种常规形式(2NF)和第三种正常形式(3NF)。
下面我们简要介绍这三种范式。
第一范式(1NF):突出显示列的原子性质。换句话说,您不能将列分成其他列。
我们来考虑这种类型的表格。[联系方式](姓名,性别,电话)如果联系人在实际场景中有特定的电话和公司电话,则表格的结构设计不会达到1NF。。
为了满足1NF,我们需要拆分列(电话),即:[联系人](姓名,性别,家庭电话号码,公司电话号码)。
1NF很明显,2NF和3NF容易混淆。
第二范式(2NF):在除了第一1NF,2两个部分,一个具有一主键,必须在其他未包括在主键列依赖完全主键,部分主键。
考虑订单详细信息表:[OrderDetail](OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。
由于您知道可以在一个订单中订购多个商品,因此仅使用OrderID成为主键是不够的。主键必须是(OrderID,ProductID)。
显然,折扣,金额是完全依赖(主键(OderID,产品ID)和单价,依赖于产品名称)仅依赖于产品ID。
因此,OrderDetail表与2NF不匹配。
不符合2NF的设计往往会产生冗余数据。
[的OrderDetail]表[的OrderDetail(订单ID,产品ID,折扣,数量)和[产品]划分(产品ID,单价,产品名称),可以防止在原始顺序表中的单价和产品名称是重复多次。
第三范式(3NF):首先,除了非主键列2NF必须直接依赖主键,没有传输依赖。
换言之,所述非主键的列A是依赖于非主键的列B中,非主键的列B是依赖于主密钥。
考虑订单表(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)。主键是(OrderID)。
订购日期,客户ID,客户名称,非主键列,如CustomerAddr,和CustomerCity是依赖于主密钥(订单ID),被设置为2NF。
然而,问题是,客户名称,CustomerAddr,CustomerCity而不是直接依赖于主键,因为它直接依赖于在客户(非主键列),因为它取决于在超车时的主键,它不符合3NF。
3NF是通过将[订购][订购](订单ID,订购日期,客户ID)和[客户](客户ID,客户名称,CustomerAddr,CustomerCity)至实现。
第二范式(2NF)和第三范式(3NF)的概念容易混淆。区分它们的重点是2NF。非主键列完全依赖于主键或主键的一部分。3NF:如果非主键列直接依赖于主键或直接依赖于非主键列。

上一篇:[蜱副作用]

下一篇:[我怎样才能获得良好的皮肤病变?

推荐新闻: