当前位置: 首页 > news >正文

北京网站建设的搜多多搜索引擎入口

北京网站建设的,搜多多搜索引擎入口,wordpress主题pjax,最成功的个人网站多表关系描述 MySQL是一种关系型数据库管理系统,它支持多表关系,这在数据库设计和查询中非常重要。 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务…

多表关系描述

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 连接查询(多表查询 二)

http://www.jindili.cn/news/53/

相关文章:

  • 为什么最近好多网站打不开了域名权重