数据库设计 -- 多表关系的实现
表关系之 一对多
一对多(多对一):
如:部门表 和 员工表
一个部门对应多个员工,一个员工对应一个部门
实现方式: 在多的一方建立外键,指向一的一方的主键 (具体实现已在外键章节实现)

表关系之 多对多
多对多:
如:订单 和 商品
一个商品对应多个订单 ,一个订单包含多个商品
实现方式: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

代码实现:
-- 订单表 create table tb_order( id int primary key auto_increment, payment double (10,2), payment_type TINYINT, status TINYINT ); -- 商品表 create table tb_goods( id int primary key auto_increment, title varchar(100), price double(10,2) ); -- 订单商品中间表 create table tb_order_goods( id int primary key auto_increment, order_id int, goods_id int, count int ); -- 建完表后添加外键 alter table tb_order_goods add constraint fk_order_id foreign key (order_id) REFERENCES tb_order(id); alter table tb_order_goods add constraint fk_goods_id foreign key (goods_id) REFERENCES tb_goods(id);
模型:

-- 删除外键
alter table Review drop foreign key fk_Review_User;
alter table Review drop foreign key fk_Review_Music;
表关系之 一对一
一对一:
如:用户 和 用户详情
一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放一张表,用于提升查询性能
实现方式:在任意一方加入外键,关联另一方主键,并设置外键为唯一(UNIQUE)


浙公网安备 33010602011771号