1.多表设计
1.为什么需要多表关联:数据冗余,将其拆分。
2.数据库的设计范式
(1)为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就成为范式。范式是符合某一种设计要求的总结。
(2)目前关系型数据库有5种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF,又称完美范式)。
(3)满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以此类推。一般来说,数据库只需要满足第三范式(3NF)就行了。
(4)数据库设计范式:
- 第一范式:确保每列保持原子性(列不可再分割),第一范式是最基本的范式,如果数据库表中的所有字段值都是不可分割的原子值,就说明该数据库表满足了第一范式。
- 第二范式:第二范式就是要有主键,要求其它字段都依赖于主键。没有主键就没有唯一性,没有唯一性在集合中就定位不到这行记录,所以要有主键。其它字段如果不依赖主键,就找不到他们,更重要的是,其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,他们只需要依赖于主键,也就成了唯一的。
- 第三范式:第三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”。
3.外键
(1)引入另外一个数据表的某条记录。
(2)外键列类型与主键列类型保持一致。
(3)数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)建立起来的。
(4)添加外键约束
创建表时添加外键约束:
CONSTRAINT 约束名 FOREINGNKEY(外键列) REFERENCES 关联表(主键);
CREATE TABLE buy(
buyer_id INT,
com_id INT,
CONSTRAINT buyer_id_fk FOREIGN KEY(buyer_id) REFERENCES buyer