一、连表操作
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)表之间的关系多对一
约束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) );