2023年7月27日发(作者:)
数据库的建表原则(三⼤范式)数据库设计三⼤范式为了建⽴冗余较⼩、结构合理的数据库,设计数据库时必须遵循⼀定的规则。在关系型数据库中这种规则就称为范式。范式是符合某⼀种设计要求的总结。要想设计⼀个结构合理的关系型数据库,必须满⾜⼀定的范式。在实际开发中最为常见的设计范式有三个:第⼀范式(确保每列保持原⼦性)第⼀范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原⼦值,就说明该数据库表满⾜了第⼀范式。第⼀范式的合理遵循需要根据系统的实际需求来定。⽐如:某些数据库系统中需要⽤到“地址”这个属性,本来直接将“地址”属性设计成⼀个数据库表的字段就⾏。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就⾮要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进⾏存储,这样在对地址中某⼀部分操作的时候将⾮常⽅便。这样设计才算满⾜了数据库的第⼀范式,如下表所⽰。编号1234姓名张红欣李四平刘志国郭⼩明性别男⼥男⼥年龄26322127联系电话省份河南⼴州河南河南城市开封⼴东郑州郑州详细地址朝阳区新华路23号⽩云区天明路148号⼆七区⼤学路198号新郑市薛店北街218号第⼆范式(确保表中的每列都和主键相关)简单地说,第⼆范式是指在关系表中,不是主键的属性需要完全依赖于主键。⽐如要设计⼀个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所⽰:订单编号001002003商品编号123商品名称挖掘机冲击钻铲车数量182单位台个辆商品价格1200000¥230¥980000¥第三范式(确保每列都和主键列直接相关,⽽不是间接相关)第三范式需要确保数据表中的每⼀列数据都和主键直接相关,⽽不能间接相关。第三范式的⽬的是移除那些不是直接功能依赖于主键的属性,这些属性是借由另⼀个属性来依赖于主键的。⽐如:在设计⼀个订单数据表的时候,可以将客户编号作为⼀个外键和订单表建⽴相应的关系。⽽不可以在订单表中添加关于客户其它信息(⽐如姓名、所属公司等)的字段。如下⾯这两个表所⽰的设计就是⼀个满⾜第三范式的数据库表。订单编号001002003订单项⽬挖掘机冲击钻铲车负责⼈刘明李刚郭新⼀业务员李东明霍新峰艾美丽订单数量1台8个2辆客户编号121客户编号12客户名称李聪刘新明所属公司五⼀建设个体经营联系⽅式1325366158这样在查询订单信息的时候,就可以使⽤客户编号来引⽤客户信息表中的记录,也不必在订单信息表中多次输⼊客户信息的内容,减⼩了数据冗余。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690431044a348901.html
评论列表(0条)