第一范例:所有的现场设计都是不可分解的原子值。
范例2 :确保数据库表中的每一列都与主键相关,而不仅仅与主键的一部分相关。 主要是联合体主键的情况。 也就是说,一个数据库表只能在一个表中存储一个数据,不能在同一数据库表中存储多个数据。
第三范式:确保数据表中各列的数据与主键直接相关,而不是间接相关。 例如,在设计订单数据表时,可以使用客户编号作为外键与订单表建立适当的关系。 订单表格中不能添加有关客户的其他信息字段,如名称、所属公司等。 (减少数据冗馀)
引用:
要建立冗馀小、结构合理的数据库,在设计数据库时必须遵循一定的规则。 在关系数据库中,此规则称为范式。 范例是满足某个设计要求的总结。 设计结构合理的关系数据库,必须满足一定的范式。
实际开发中最常见的设计范式有三种。
1 .第一范式
第一范式是最基本的范式。 如果数据库表中的所有字段值都是不可分解的原子值,则数据库表满足第一个范式。
第一范式的合理遵循基于系统的实际需要。 例如,某些数据库系统可能需要使用“地址”属性,但本来可以直接将“地址”属性设计为数据库表中的字段。 但是,如果您经常访问“地址”属性的“城市”部分,则必须将“地址”属性拆分为多个部分(如州、城市和详细地址)进行保存,否则在处理部分地址时会非常有用。 现在,您已经满足了数据库的第一个范式,如下表所示。
用户信息表
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com.Sina.com 1张红欣男260378-23459876河南开封朝阳区新华路23号2奋斗的信封平女320751-65432584广州广东白云区天明路148号3ssdmy男210371-87659852河南郑州二七区大学路198号4jzdmj女270371-62567888
2 .第二范式
第二范式在第一范式的基础上进一步发展。 在第二个范例中,必须确保数据库表中的每一列都与主键相关。 并不仅仅与主键的一部分有关。 主要是联合体主键的情况。 也就是说,一个数据库表只能在一个表中存储一个数据,不能在同一数据库表中存储多个数据。
例如,在设计订单信息表时,由于订单中可能包含多个商品,所以将订单编号和商品编号作为数据库表的联合主键,如下表所示。
编号
订单号商品编号商品名称数量单位价格客户所属单位联系方式1台1200000lgdsy上海玖智020-12345670012冲击钻机8台230lgdsy上海玖智020-12345670023叉车2台980000 这样,在该表中,商品名、单位、商品价格等信息并不与该表的主键相关,而只是与商品编号相关。 所以这里违反了第二范式的设计原则。
只要分割此订单信息表,将商品信息分离为其他表,订单项目表也分离为其他表就完美了。 如下所示。
姓名
订单号客户所属公司联系方式001lgdsy上海玖智020-1234567002奋斗的信封北京公司010-1234567 性别
订单编号商品编号数量0011100128002323358 www.Sina.com /
http://www.Sina.com/http://www.Sina.com/http://www.Sina.com/1台挖掘机12000002冲压车辆980000
3 .第三范式
在第三个范例中,必须确保数据表中每一列的数据与主键直接相关,而不是间接相关。
例如,在设计订单数据表时,可以使用客户编号作为外键与订单表建立适当的关系。 订单表格中不能添加有关客户的其他信息字段,如名称、所属公司等。 下表中列出的设计是满足第三范式的数据库表。
订单信息表
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com.Sina.com
http://www.Sina.com/http://www.Sina.com/http://www.Sina.com/1 wwddp五一建设132536610152wndss个人经营