多表关系实现 -- 添加外键

1.一对多实现方式:

        在多的一方建立外键关联一的一方主键

        例:员工与部门

-- 表关系之一对多

-- 删除外键
alter table work_emp drop foreign key dep_id;

-- 删除表
DROP TABLE IF EXISTS work_dep;
DROP TABLE IF EXISTS work_emp;

-- 部门表
CREATE TABLE work_dep (
	id int PRIMARY KEY auto_increment,
	dep varchar(20),
	address varchar(20)
);

-- 员工表
CREATE TABLE work_emp (
	id int PRIMARY KEY auto_increment,
	name VARCHAR(20),
	age int,
	dep_id int,
	constraint fk_dep_emp foreign key(dep_id) references work_dep(id)
);

-- 外键名 fk_表1_表2

2. 多对多实现方式:

        建立第三章中间表,中间表至少包含两个外键,分别关联双方的主键

        例:订单与商品

-- 表关系之多对多

-- 删除表
DROP TABLE IF EXISTS tb_order;
DROP TABLE IF EXISTS tb_goods;
DROP TABLE IF EXISTS tb_order_goods;

-- 订单表
CREATE TABLE tb_order (
	id int PRIMARY KEY auto_increment,
	payment DOUBLE(10,2) not NULL,
	payment_type TINYINT,
	status TINYINT
);

-- 商品表
CREATE TABLE tb_goods (
	id int PRIMARY KEY auto_increment,
	title VARCHAR(100) NOT NULL,
	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 order_id FOREIGN KEY(order_id) REFERENCES tb_order(id);
ALTER TABLE tb_order_goods ADD CONSTRAINT goods_id FOREIGN KEY(goods_id) REFERENCES tb_goods(id);

3.一对一实现方式

        在任意一方建立外键,并关联对方的主键,并设置外键唯一[UNIQUE]

        例:人与身份证 一般用于表的拆分 用户表与用户详情表

-- 表关系之一对一 在关联字段处加 唯一[unique] 约束
-- 创建用户表
create table db_user (
	id int PRIMARy KEY auto_increment,
	name VARCHAR(50) not null
	
);

-- 短评论 一对一 一个评论只属于一个用户 在user_id 后加上 唯一[unique]
create table db_essay(
	id int primary key auto_increment,
	content varchar(100),
	user_id int unique,
	constraint fk_essay_user foreign key(user_id) references db_user(id)
);

4. 删除外键

alter table 表名 drop foreign key 外键名;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值