数据库设计 -- 多表关系的实现

表关系之 一对多

  一对多(多对一):

    如:部门表 和 员工表

    一个部门对应多个员工,一个员工对应一个部门

  实现方式: 在的一方建立外键,指向的一方的主键  (具体实现已在外键章节实现)

    

 

 

 表关系之 多对多

  多对多:

    如:订单 和 商品

    一个商品对应多个订单 ,一个订单包含多个商品

  实现方式: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

 

 

     代码实现:

 

-- 订单表
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)

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2022-09-08 23:11  风陵南  阅读(179)  评论(0)    收藏  举报