一、连表操作

1)为何需要连表操作

1、把所有数据都存放于一张表的弊端
    1、表的组织结构复杂不清晰
    2、浪费空间
    3、扩展性极差

2)表设计,分析表与表之间的关系

寻找表与表之间的关系的套路
举例:emp表   dep表
步骤一:
    part1:
    1、先站在左表emp的角度
    2、去找左表emp的多条记录能否对应右表dep的一条记录
    3、翻译2的意义:
        左表emp的多条记录==》多个员工
        右表dep的一条记录==》一个部门

        最终翻译结果:多个员工是否可以属于一个部门?
        如果是则需要进行part2的流程

    part2:
    1、站在右表dep的角度
    2、去找右表dep的多条记录能否对应左表emp的一条记录
    3、翻译2的意义:
        右表dep的多条记录==》多个部门
        左表emp的一条记录==》一个员工

        最终翻译结果:多个部门是否可以包含同一个员工

        如果不可以,则可以确定emp与dep的关系只一个单向的多对一
        如何实现?
            在emp表中新增一个dep_id字段,该字段指向dep表的id字段

3)表之间的关系多对一

mysql数据库进阶篇

  约束1:在创建表时,先建被关联的表dep,才能建关联表emp。

      强调:生产环境不要加foreign key(dep_id),会强耦合在一起,以后无法扩展。应该从应用逻辑程序来限制

create table dep(
    id int primary key auto_increment,
    dep_name char(10),
    dep_comment char(60)
);

create table emp(
    id int primary key auto_increment,
    name char(16),
    gender enum('male','female') not null default 'male',
    dep_id int,
    foreign key(dep_id) references dep(id)
);
View Code

相关文章:

  • 2022-12-23
  • 2022-02-23
  • 2021-04-08
  • 2021-09-19
猜你喜欢
  • 2021-08-23
  • 2021-11-21
  • 2022-01-01
  • 2022-01-20
  • 2021-04-08
  • 2021-08-18
  • 2018-01-27
相关资源
相似解决方案