关系型数据库

2021-06-15  本文已影响0人  Vergil_wj

关系

表和表之间的联系。

实现方式

通过设置不同形式的外键来体现表和表的不同关系。

分类

  1. 一对一关系;
  2. 一对多关系;
  3. 多对多关系;

一对一

夫妻关系,一夫一妻。

因为是一对一,完全可以将表 A 和表 B 合为一张表。
或者用表A的主键充当表B的外键,也可表B的主键充当表A的外键。

一对多

组织架构,一个上级对应多个下级。

把表A 的主键充当B的外键。在多的一方添加外键。

多对多

老师和学生的关系。一个老师带多个学生,一个学生由多个老师教课。

多对多必须通过第三张单独的一张表来表示。

例如:班级一张表,教师一张表,班级和教师的关系一张表。

班级:

编号 人数 班级名称
1 20 一班
2 30 二班

教师:

编号 姓名
10001 aa
10002 bb

第三张表:

班级编号 教师编号 课程
1 1001 sql
1 1002 java
2 1001 c

代码实现:

-- 班级
create table banji
(
  banji_id int primary key,
  banji_num int not null,
  banji_name nvarchar(100)
)

-- 教师
create table teacher
(
  teacher_id int primary key,
  teacher_name nvarchar(100)
)

-- 第三张表,模拟班级和教师的关系
create table banji_teacher_mapping
(
  banji_id int constraint fk_banji_id foreign key references banji(banji_id), -- 设置成外键,来自于 banji 表
  teacher_id int foreign key references teacher(teacher_id), -- 外键,来自于teacher 表
  kecheng nvarchar(20),
  constraint pk_banji_id_teacher_id primary key (banji_id,teacher_id) -- 设置 banji_id 和 teacher_id 的组合为主键
)
上一篇 下一篇

猜你喜欢

热点阅读