Craft6数据库设计教程——物理模型设计模式.docx
文本预览下载声明
一、实体分割模式(一对一)
? ? 针对实体表进行字段分割处理。
? ? 一般是将一张字段较多的实体表如产品实体、订单实体等,将若干字段分割出来,
独立设计一张一对一从表。原则是:
? ? 当查询实体集合时,一般不会用到的字段可以进行分割,如统计,详细描述等。
? ? 基于主体进行一对一形式的分割。如:
? ??
? ? 产品是主表,产品统计是从表。这些字段原先是设计在主表的,为了优化分割到从表中。
从表可以设计外键,也可以不设计,一般为一对一联系,即从表的主键值为主表的主键值。
二、继承扩展模式(一对一)
? ?继承扩展同样是一对一的形式,但是业务上和主从扩展不一样。
? ?继承扩展适合抽象实体和具体实体的扩展。
? ?比如抽象实体参与者和具体实体员工、组织、职位等的关联关系。
? ?
? ?设计时,可以将子表的主键设置为,既是主键又是外键。
三、主从扩展模式(一对多)
? ?这种是最为常见的模式,即主表和从表是一对多关系。比如对于论坛系统,
帖子和回复,则是明显的主从扩展模式。
? ?
? ?表示一张帖子可以有N个回复。
? ?设计是,从表是外键关联主表,一般外键字段设置为非空,级联约束则根据实际需要而
设置,如级联删除。
四、多对多转换
? ?当两个实体或多个实体之间存在多对多关联时,实际设计数据库是设计一张
多对多联系表,该表有独立的主键,但是外键关联各个实体表。
? ?这张表就是将实体之间的多对多联系转换为一对多联系。
? ?
? ?对于数据库范式,两个实体的多对多联系转换为两张一对多表是符合范式要求的,
但对于多个实体的公共的多对多联系转换为一张公共的联系表(超过2个外键),则
不符合第五范式,并且这样设计也容易混乱,所以这种情况会对实体两两分别设计
一对多联系表。
? ?即将下图的左边的联系 改成 右边的联系结构。
五、实体属性值扩展(EAV)
? ? 如果要对一个实体进行信息扩展,可以增加一些字段,但这样在系统运营时,则比较麻烦。
需要修改数据表,修改代码等。
? ? 所以对于一些非核心属性,如描述性的信息,可以通过实体属性值扩展模式处理,即EAV模型。
? ? 此模式可以参考笔者分享的方案 HYPERLINK /detail/b2c_schemes_eav_model.do \o C 电商研发方案 —— EAV实体属性值模型分析和设计 \t _self 《C 电商研发方案 —— EAV实体属性值模型分析和设计》
显示全部