宁阳网站开发,石材网站建设方案,wordpress设置主题404模板,旅游商务网站开发多表关系描述
MySQL是一种关系型数据库管理系统#xff0c;它支持多表关系#xff0c;这在数据库设计和查询中非常重要。
项目开发中#xff0c;在进行数据库表结构设计时#xff0c;会根据业务需求及业务模块之间的关系#xff0c;分析并设计表结构#xff0c;由于业务…多表关系描述
MySQL是一种关系型数据库管理系统它支持多表关系这在数据库设计和查询中非常重要。
项目开发中在进行数据库表结构设计时会根据业务需求及业务模块之间的关系分析并设计表结构由于业务之间相互关联所以各个表结构之间也存在着各种联系基本上分为三种
一对一一对多(多对一)多对多 一对一1-1
关系: 一对一关系多用于单表拆分将一张表的基础字段放在一张表中其他详情字段放在另 一张表中以提升操作效率实现: 在任意一方加入外键关联另外一方的主键并且设置外键为唯一的(UNIQUE)
案例用户表 与 用户详情表的关系。
每个用户只能对应一个详情信息每个详情情信息只能对应一个用户 user_detail表 外键 指向 user表 主键
-- 创建用户表
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),-- 其他用户表字段...
);-- 创建用户详情表
CREATE TABLE user_details (id INT PRIMARY KEY,user_id INT UNIQUE,card_number VARCHAR(20),-- 其他用户详情表字段...
);-- 添加一对一关系的外键约束
alter table user_details
add constraint fk_user_id
foreign key (user_id) references users(id); 一对多1-N或N-1
关系一个表中的记录可以关联到另一个表中的多个记录
实现: 在多的一方建立外键指向一的一方的主键
案例部门表和员工表的关系。
一个部门可以有多个员工而一个员工只能属于一个部门emp表 外键 指向 dept表 主键
-- 创建部门表
CREATE TABLE departments (id INT PRIMARY KEY,name VARCHAR(50),-- 其他部门表字段...
);-- 创建员工表
CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),department_id INT,-- 其他员工表字段...
);-- 添加一对多关系的外键约束
alter table employees
add constraint fk_department_id
foreign key (department_id) references departments(id); 多对多N-N
关系一个表的记录可以关联到另一个表的多个记录反之亦然
实现在MySQL中无法直接实现多对多关系需要通过中间表来实现。建立第三张中间表中间表至少包含两个外键分别关联两方主键
案例学生表和课程表的关系。
一个学生可以选择多门课程而一门课程也可以被多个学生选择。为了建立多对多关系可以创建一个名为选课(student_course)的中间表它包含学生ID和课程ID两个字段用于记录学生和课程的关联关系。
-- 创建中间表、建立多对多关系(两个外键)
create table student_course(id int auto_increment comment 主键 primary key,studentid int not null comment 学生ID,courseid int not null comment 课程ID,constraint fk_course_id foreign key (course_id) references course (id),constraint fk_student_id foreign key (student_id) references student (id)
)comment 选课表;
上一篇MySQL - 外键foreign key约束的作用和使用
下一篇MySQL 连接查询多表查询 二