表关系及外键约束

表关系及外键约束


# TODO:表关系

# 1、一对多(外键建立在多表上)

# 一方:主表或者1表 多方:从表或者N表

# 2、多对多 (外键字段建立在第三张表上)

# 3、一对一:这种表关系一般将两张表合为一张表或者随便选择一张表作为从表(多表)设置外键(为主表的主键字段)


一对多表设计

# TODO:一对多表设计:在多表(从表)上增加一个字段(外键字段)
# 外键字段下存储的数据全部是来自主表(1表)的主键值



多对多表设计

# TODO:多对多表设计:建立第三方中间表--》使之成为一对多的关系
# 由中间表承担两张表之间的联系,中间表有2个外键字段,分别来自两张表的主键


外键

外键的使用

1、外键字段(真正实现表和表之间关系)

2、外键约束(确保外键字段的值为主表中主键的值)

#外键约束
# 语法:
#TODO:1、建表的时候,设置外键约束
#     create table 表名(
#         id int auto_increment primary key,
#         name varchar(20),
#         外键字段名 int,
#         constraint 外键名称 foreign key(外键字段名) references 主表名(主表主键字段)
#     )
#     2、修改表的时候设置外键字段
#     alter table 表名 add constraint 外键约束名称 foreign key(外键字段) references 主表名(主键字段);

# 练习
#     一对多关系
# 部门表 (主表)
create table department (
    id int primary key auto_increment, -- 主键字段
    dep_name varchar(20),
    dep_location varchar(20)
);
-- 测试数据
insert into department (dep_name, dep_location) values
('研发部', '广州'),
('销售部', '深圳');

# 员工表 (从表)
create table employee(
    id int primary key  auto_increment,
    name varchar(20),
    age int ,
    dept_id int, -- 外键字段(和department表中的id字段有关联--》数据类型与主键字段的数据类型一致)
    -- 添加外键约束
    constraint FK_employee_dept_id FOREIGN KEY(dept_id) references department(id)
);
-- 测试数据
insert into employee (name, age,dept_id) values
('张三', 20, 1),
('李四', 21, 1),
('王五', 20, 1),
('老王', 20, 2),
('大王', 22, 2),
('小王', 18, 2);
-- 测试: 在主表中的主键字段下没有数据10(插入一个不符合外键约束的数据就会报错)
# insert into employee (name, age,dept_id) values ('测试',22,10);
posted on 2025-03-01 12:08  星星不打輰  阅读(22)  评论(0)    收藏  举报