[]
        
(Showing Draft Content)

【背景知识】数据库设计示例

符合范例的表结构

本章节示例来自:CSDN《数据库设计三大范式》

1NF:无重复的列(不可拆分的字段)

错误范例:


1NF错误的示例


在上面的表中,“家庭信息” 和 “学校信息” 列均不满足原子性的要求,故不满足第一范式,调整如下:


1NF调整后的示例


可见,调整后的每一列都是不可再分的,因此满足第一范式(1NF)。

2NF:属性完全依赖于主键(主从表)

错误示例:


2NF错误的示例


在上图所示的情况中,同一个订单中可能包含不同的产品,因此主键必须是 “订单号” 和 “产品号” 联合组成,但可以发现,产品数量、产品折扣、产品价格与 “订单号” 和 “产品号” 都相关,但是订单金额和订单时间仅与 “订单号” 相关,与 “产品号” 无关,

这样就不满足第二范式的要求,调整如下,需分成两个表,订单表和订单明细表(子表):


2NF调整后的示例

3NF:属性不依赖于其它非主键属性(字典表/主数据表)

错误示例:


3NF错误的示例


上表中,所有属性都完全依赖于学号,所以满足第二范式,但是 “班主任性别” 和 “班主任年龄” 直接依赖的是 “班主任姓名”,而不是主键 “学号”,所以需做如下调整:


3NF调整后的示例

选择合适的字段类型

以下是一些典型的场景中推荐使用的字段类型

场景

字段类型

文本

姓名、简介

自动编码(如GA-1-202110180002)

图文混排的富文本

整数

ID

关联字段(字典表中的ID,如省份、性别、状态、库位、SKU等)

人数

小数

金额 / 数量

是/否

开关(如是否启用、是否完成等)

时间

按日循环的执行时间

日期

具体的时间点

附件

文档 / 视频 / 音频

图片

图片

用户

用户