设计过程
需求分析 > 逻辑设计 > 物理设计 > 维护优化
需求分析
- 一张表需要存什么信息。用户信息有
名称
、手机号
、身份证
、年龄
- 可以做唯一标识的字段:
手机号
或身份证
- 存储特点: 永久存储还是会删除
- 与其他表的联系
逻辑设计
- 注意事项:
更新异常:更新时应该更新指定的一条
删除异常:删除时应该删除指定的一条
数据冗余:数据重复出现 - 设计范式
- 第一范式:一张表应该是一张二维表,对应一个值
bad
名称 | 手机号 | 用户信息 | |
---|---|---|---|
年龄 | 地址 | ||
用户名1 | 1322672833 | 5 | 中国 |
good
名称 | 手机号 | 年龄 | 地址 |
---|---|---|---|
用户名1 | 1322672833 | 5 | 中国 |
-
第二范式:消除一张表中多种依赖关系,属性只依赖主键
bad
:更新异常、数据冗余
商品名称 | 供应商 | 价格 |
---|---|---|
可乐 | 供应商1 | 30 |
可乐 | 供应商2 | 30 |
good
商品id | 商品名称 | 价格 |
---|---|---|
1 | 可乐 | 30 |
供应商id | 供应商 | 供应商联系方式 |
---|---|---|
1 | 供应商1 | 132234234 |
2 | 供应商2 | 144434134 |
商品id | 供应商id |
---|---|
1 | 1 |
1 | 2 |
-
第三范式: 消除一行中的字段有依赖关系
bad
商品名称 | 价格 | 分类 | 分类描述 |
---|---|---|---|
手机 | 1 | 数码 | 电子产品 |
纸巾 | 2 | 生活 | 日常用品 |
good
商品名称 | 价格 | 分类id |
---|---|---|
手机 | 1 | 1 |
纸巾 | 2 | 2 |
分类id | 分类名称 | 分类描述 |
---|---|---|
1 | 数码 | 电子产品 |
2 | 生活 | 日常用品 |
物理设计
- 数据库选择:Oracle、MySql、PostgrcSQL ...
- 存储引擎选择: Innodb
- 表、字段命名规范:单词_分割命名、尽量不用缩写
- 字段数据类型选择:优先选择数字类型或占用字节小的
- 使用数据库设计软件:pdman powerdesign
维护优化
- 维护数据字典:创建表增加备注、保存好使用数据库设计软件设计的图形