数据库设计及ER模型
数据库设计
1.第一范式(确保每列保持原子性)
基本的范式,保证数据库表中的所有字段都不可再分解。
2.第二范式(确保表中的每列都和主键相关)
在第一范式的基础上,第二范式需要表中的每一个字段都和主键相关,也就是说只能存在一种类型的数据。不可把多种类型数据放在一个表中。
3.第三范式(确保每列都和主键列直接相关,而不是间接相关)
在满足前两个范式的基础上,第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
- 1.1第一范式
错误:表中的字段还可以再次分解,再拆。
正确:表中字段不可以再分解。
- 第二范式
错误:表中订单号和商品id是主键,表中的字段没有和所有主键关联,再拆分
正确:表中的无关联的字段重新创建表,每一个表中的所有字段都和主键相关联
- 第三范式
错误:表中的客户信息和商品信息无直接关联,再拆
再拆:将间接关联的信息再创建表,每个表的字段信息都是直接关联的
- 最终实现的目标
E-R模型
E-R模型的基本元素是:实体、联系和属性
-
实体:现实生活中任何可以被认知,区分的事物。
-
联系:实体之间的关系,可以一点一,一对多哟,多对多。
-
属性:实体的某一特性称为属性。
关系也是一种数据,需要通过一个字段存储在表中
1、一对一:一对一关系是最好理解的一种关系,主键可以设置为在两个表中的任意一个表
在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面
2、一对多:主键应存放在多的表中
1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键
3、多对多:新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值
对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系