[]
本章节示例来自:CSDN《数据库设计三大范式》
错误范例:
在上面的表中,“家庭信息” 和 “学校信息” 列均不满足原子性的要求,故不满足第一范式,调整如下:
可见,调整后的每一列都是不可再分的,因此满足第一范式(1NF)。
错误示例:
在上图所示的情况中,同一个订单中可能包含不同的产品,因此主键必须是 “订单号” 和 “产品号” 联合组成,但可以发现,产品数量、产品折扣、产品价格与 “订单号” 和 “产品号” 都相关,但是订单金额和订单时间仅与 “订单号” 相关,与 “产品号” 无关,
这样就不满足第二范式的要求,调整如下,需分成两个表,订单表和订单明细表(子表):
错误示例:
上表中,所有属性都完全依赖于学号,所以满足第二范式,但是 “班主任性别” 和 “班主任年龄” 直接依赖的是 “班主任姓名”,而不是主键 “学号”,所以需做如下调整:
以下是一些典型的场景中推荐使用的字段类型
场景 | 字段类型 |
---|---|
文本 | 姓名、简介 自动编码(如GA-1-202110180002) 图文混排的富文本 |
整数 | ID 关联字段(字典表中的ID,如省份、性别、状态、库位、SKU等) 人数 |
小数 | 金额 / 数量 |
是/否 | 开关(如是否启用、是否完成等) |
时间 | 按日循环的执行时间 |
日期 | 具体的时间点 |
附件 | 文档 / 视频 / 音频 |
图片 | 图片 |
用户 | 用户 |