一 数据库设计三大范式
1.1 第一范式(1NF)
原子性、 数据不可再分。
原地址表
ID | StuAddress |
1 | 天津 10080 |
2 | 上海 10082 |
3 | 杭州 10083 |
4 | 深圳 10084 |
... | ... |
调整之后的表
ID | StuAddresss | StuCall |
1 | 天津 | 10080 |
2 | 上海 | 10082 |
3 | 杭州 | 10083 |
4 | 深圳 | 10084 |
... | ... | ... |
1.2 第二范式(2NF)
唯一性 使得每一行 数据具有唯一性,并消除数据之间的部分依赖。例如订单表只描述订单相关信息,所以所有字段都必须与订单id相关;产品表只描述产品相关的信息,所以所有字段都必须与产品id相关;因此不能在一张表中同时出现订单信息与产品信息。
orders
订单编号 | 产品编号 | 订购日期 | 产品名称 |
001 | A001 | 2000-2-3 | HP 3120 |
拆分之后:
orders
订单编号 | 订单日期 |
001 | 2000-2-3 |
products
产品编号 | 产品名称 |
A001 | HP 3120 |
- 如果一个关系满足1NF,并且除了主键之外的其他列,每个属性是功能依赖于整个键,而不是部分的键则满足第二范式。
- 第二范式要求每个表只描述一件事情。
1.3 第三范式(3NF)
独立性,消除传递依赖。例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户id即可,而不能有其他的客户信息。因为其他的客户信息直接关联于用户id,而不是直接与订单id直接相关。
orders
订单编号 | 订单日期 | 顾客编号 | 顾客姓名 |
001 | 2000-2-3 | AB001 | Tony |
拆分之后:
orders
订单编号 | 订购日期 | 顾客编号 |
001 | 2000-2-3 | AB001 |
二 数据库五大约束
- primary KEY:设置主键约束;
- UNIQUE:设置唯一性约束,不能有重复值;
- DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2
- NOT NULL:设置非空约束,该字段不能为空;
- FOREIGN key :设置外键约束。