javaweb学习3 -2024/9/25
今天学习了数据库的表关系和多表查询
一对一
- 用户和用户详细
- 一对一关系用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提高查询性能
实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)
一对多(多对一)
- 如员工表 和 部门表
- 一个部门对应多个员工,一个员工对应一个部门
实现方式:在多的一方建立外键,指向一的一方的主键
alter table emp3 add constraint fk_emp3_dept foreign key(dep_id) references dept(id);#添加外键
alter table emp3 drop foreign key fk_emp3_dept; # 删除外键
create table dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
create table emp3(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int
);
多对多
- 订单和商品
- 一个商品对应多个订单,一个订单包含多个商品
实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
create table tb_order (
id int primary key auto_increment,
payment double(7,2),
payment_type TINYINT,
status tinyint
);
create table tb_goods(
id int primary key auto_increment,
title varchar(100),
price double(7,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 foreign key (order_id) references tb_order(id);
alter table tb_order_goods add constraint foreign key (goods_id) references tb_goods(id);
一对一
- 用户和用户详细
- 一对一关系用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提高查询性能
实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)
一对多(多对一)
- 如员工表 和 部门表
- 一个部门对应多个员工,一个员工对应一个部门
实现方式:在多的一方建立外键,指向一的一方的主键
alter table emp3 add constraint fk_emp3_dept foreign key(dep_id) references dept(id);#添加外键
alter table emp3 drop foreign key fk_emp3_dept; # 删除外键
create table dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
create table emp3(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int
);
多对多
- 订单和商品
- 一个商品对应多个订单,一个订单包含多个商品
实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
create table tb_order (
id int primary key auto_increment,
payment double(7,2),
payment_type TINYINT,
status tinyint
);
create table tb_goods(
id int primary key auto_increment,
title varchar(100),
price double(7,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 foreign key (order_id) references tb_order(id);
alter table tb_order_goods add constraint foreign key (goods_id) references tb_goods(id);