Introducción a la relación de tablas múltiples SQL
- (1) Múltiples tablas en el proyecto
1: En el desarrollo real, el proyecto debe estar compuesto por múltiples tablas, y existe una relación entre estas tablas.2
: La clasificación de la relación entre las tablas:
una a una, una a una Muchos, muchos a muchos
(2) ¿Qué es uno a uno?
Una fila de la tabla A corresponde a una fila de la tabla B, y viceversa, en este momento, las dos tablas se pueden fusionar en una sola.
(3) ¿Qué es uno a muchos?
Una fila de la tabla A corresponde a varias filas de la tabla B, y lo contrario no es cierto
(4) ¿Qué es de muchos a muchos?
Una fila de la tabla A corresponde a varias filas de la tabla B, y una fila de la tabla B corresponde a varias filas de la tabla A
Relación de varias tablas: relación de uno a varios
(1) Inicializar datos
(2) Proceso de creación de uno a muchos
"Crear tabla maestra (tabla de categorías)
" Crear tabla esclava (tabla de productos)
"Agregar restricciones de clave externa entre la tabla maestra y la tabla esclava
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
" Agregar datos a la tabla maestra (agregarlos a voluntad)
"Agregar datos a la tabla esclava (agregar datos es necesario Depende de la tabla principal)
(3) Características de uno a muchos
Agregar datos: tabla principal: agregar a voluntad, tabla esclava:
eliminar datos sujetos a las restricciones de la tabla maestra: tabla maestra: si una fila de datos depende de la tabla esclava, no se puede eliminar. : Puede eliminar
(4)
provincia y ciudad de analogía a voluntad
create database day13_2
use day13_2
》创建主表(分类表)
create table category(
cid int primary key auto_increment,
cname varchar(20)
)
》创建从表(商品表)
create table product(
pid int primary key auto_increment,
pname varchar(20),
price double,
cid int -- 外键 表示属于哪个分类
)
》给主表和从表之间添加外键约束
`alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);`
alter table product add foreign key (cid) references category(cid)
》给主表添加数据(随便添加)
insert into category value(null,'电子')
insert into category value(null,'服装')
》给从表添加数据(添加数据是必须依赖主表)
insert into product value(null,'联想',2000,1)
insert into product value(null,'华为',4000,1)
insert into product value(null,'真维斯',100,2)
Relación de varias tablas: relación de varios a varios
- (1) Utilice el análisis de Excel
- (2) Proceso de creación de varios a varios
"Crear orden de tabla de orden (tabla principal)
" "Crear tabla intermedia (tabla esclava) guardar línea cruzada
" "Crear restricciones de clave externa para tabla intermedia (2 veces)
" "Agregar datos a la tabla de orden (Opcional)
》》 Agregar datos a la tabla intermedia (limitado)
》》创建订单表(主表) order
create table orders(
oid int primary key auto_increment,
money double
)
》》创建中间表(从表) 保存交叉线
create table orders_product(
oid int , -- 必须存在 外键
pid int -- 必须存在 外键
)
》》给中间表建立外键约束(2次)
alter table orders_product add foreign key (oid ) references orders(oid);
alter table orders_product add foreign key (pid ) references product(pid);
》》给订单表添加数据(随意)
insert into product value(null,'LV',30000,2)
》》给中间表添加数据(受限)
insert into orders_product value(3,6)
Practica uno a muchos
(1) Analizar la relación entre la tabla de provincia y la tabla de ciudad
(2) Crear una tabla: relación uno a muchos (tabla de provincia y tabla de ciudad)
"Crear tabla maestra (tabla de provincia)
" "Crear tabla esclava (tabla de ciudad)
" "Crear externa Restricciones clave
"Agregar datos a la tabla principal
" " Agregar datos a la tabla esclava
# 练习1
》》 创建主表(省表)
create table province(
pid int primary key auto_increment,
pname varchar(20)
)
》》 创建从表(市表)
create table city(
cid int primary key auto_increment,
cname varchar(20),
pid_fk int
)
》》建立外键约束
alter table city add foreign key (pid_fk ) references province(pid);
》》给主表添加数据
》》给从表添加数据
Práctica de muchos a muchos actores y roles
- (1) Analizar la relación entre la tabla de reparto y la tabla de roles
- (2) Crear una tabla: relación de muchos a muchos (tabla de actores y tabla de roles)
"" crear una tabla de reparto (tabla principal izquierda)
"" crear una tabla de roles (tabla principal derecha)
"" crear una tabla intermedia (desde la tabla)
" 》 Crear restricciones de clave externa (2 veces)
》》 Agregar datos a la tabla de reparto
》》Agregar datos a la tabla de roles
》》Agregar datos a la tabla intermedia
》》 创建演员表(左侧主表)
create table users(
uid int primary key auto_increment,
uname varchar(20)
)
》》 创建角色表(右侧主表)
create table role(
rid int primary key auto_increment,
rname varchar(20)
)
》》 创建中间表(从表)
create table users_role(
rid int , -- 数据必须在role存在
uid int -- 数据必须在users存在
)
》》建立外键约束(2次)
alter table users_role add foreign key (rid ) references role(rid);
alter table users_role add foreign key (uid) references users(uid);
》》给演员表添加数据
》》给角色表添加数据
》》给中间表添加数据
Tabla de roles de ejercicio y tabla de permisos
- (1) Analizar la relación entre roles y tablas de permisos
- (2) Crear una tabla: relación de muchos a muchos (roles y permisos)
》》 Crear tabla de permisos
》》 Segunda tabla intermedia
》》 Crear restricción de clave externa
》》 Agregar datos a la tabla de permisos
》》Agregar datos a la tabla intermedia
》》 创建权限表
create table privilege(
pid int primary key auto_increment,
pname varchar(20)
)
》》 第二个中间表
create table privilege_role(
pid_fk int , -- 外键
rid_fk int -- 外键
)
》》建立外键约束
alter table privilege_role add foreign key (pid_fk) references privilege(pid);
alter table privilege_role add foreign key (rid_fk) references role(rid);
》》给权限表添加数据
》》给中间表添加数据