多表DDL
个表之间也可能存在关系
存在在一对多和多对多和一对多的关系
一对多(外键)
在子表建一哥字段(列)和对应父表关联
父表是一,对应子表的多(一个部门对应多个员工,但一个员工只能归属一个部门)
正常建表,但是这里没加外键约束!!!
# 新建个数据库(db03)来储存
create database if not exists db03 ;
use db03;
-- 部门表
create table tb_dept (id int unsigned primary key auto_increment comment 'ID',name varchar(10) not null unique comment '部门名称',create_time datetime not null comment '创建时间',update_time datetime not null comment '修改时间'
) comment '部门表';
-- 员工表
create table tb_emp (id int unsigned primary key auto_increment comment 'ID',username varchar(20) not null unique comment '用户名',password varchar(32) default '123456' comment '密码',name varchar(10) not null comment '姓名',gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',image varchar(300) comment '图像',job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管',entrydate date comment '入职时间',dept_id int unsigned comment '归属的部门ID',create_time datetime not null comment '创建时间',update_time datetime not null comment '修改时间'
) comment '员工表';
不加外键约束的话其实相当于两个表的数据没有连接起来
就算你把部门表其中一个部门删了,员工表属于那个部门的还是存在
外键定义
注意:子表 添加外键到 父表
那个外键名称其实可以不写
更建议用图形化
这时删除1号部门删不掉(因为有属于1的员工)
可以删掉没有员工关联的五号部门
白雪外键
现在已经不用这个低能技术了
都在业务层逻辑中实现一套逻辑,代替外键的作用
一对一
一对一场景
对用户信息查询的多,而对身份信息查询的少就分成两张表
可以提高查重效率