【数据库】三种关系:一对一,一对多,多对多。

一对一:比如一个学生对应一个身份证号、学生档案;

一对多:一个班可以有很多学生,但是一个学生只能在一个班;

多对多:一个班可以有很多学生,学生也可以有很多课程;

一对多关系处理:

我们以学生和班级之间的关系来说明一对多的关系处理方法。
假设现有基本表班级表(班级号,备注信息,……)。学生表(学号,姓名),

方法一:
在学生表中新增字段(班级号),该字段作为学生表的外键与班级表中的班级号关联。每一个学生实体在班级号字段的值,表示该学生属于的班级。

方法二:
新增一个关系表,用来表示学生与班级的属于关系,该关系表包含字段(学生号,班级号)。通过学生号与班级号的对应关系表示学生属于的班级。

代码示例:

-- 创建班级表
CREATE TABLE t_class(
c_id INT PRIMARY KEY AUTO_INCREMENT, --班级id
c_name VARCHAR(20) NOT NULL UNIQUE --班级名称
)

-- 删除学生表
DROP TABLE t_student;

-- 创建学生表
CREATE TABLE t_student(
s_id INT PRIMARY KEY AUTO_INCREMENT,  --主键id
s_name VARCHAR(15) UNIQUE,   --姓名
s_sex VARCHAR(5) DEFAULT ‘男‘,  --性别
s_age INT, --年龄
s_class_id INT, --班级id

使用外键关联班级表的主键,附:表的外键必须是另一张表的主键
CONSTRAINT FOREIGN KEY(s_class_id) REFERENCES t_class(c_id)
)

-- 添加数据
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES (‘刘基‘,‘男‘,‘20‘)
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES (‘老刘‘,‘男‘,‘22‘)
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES (‘唐伯虎‘,‘男‘,‘20‘)

小结:一般情况下,一对多关系采用方法一来处理。

多对多关系处理:

在多对多关系中,我们要新增加一个关系表。在学生表和课程表的基础上增加选课表来表示学生与课程之间的多对多关系。在选课表中,必须含有的属性有学生号和课程号。(学生号,课程号)这个属性集刚好也就是选课表的关键字。

代码示例:

-- 创建学生表
CREATE TABLE student(
t_id INT PRIMARY KEY AUTO_INCREMENT, -- 学号
t_name VARCHAR(20), -- 学生名字
t_age INT, -- 年龄
t_sex CHAR(4), --性别
t_date DATE,
t_enrolDate DATETIME, 
t_class VARCHAR(20)
)
-- 创建班级表
CREATE TABLE class(
b_id INT PRIMARY KEY AUTO_INCREMENT,
b_name VARCHAR(20), --编辑编号
b_bname VARCHAR(50), --班级名称
b_start DATE --开班时间 类型 date   
)
-- 成绩表
CREATE TABLE grade(
c_id INT,
c_nameId INT,  --学生id 类型 int
c_courseId VARCHAR(40), --课程编号 类型 varchar
c_coursegrade INT, --课程成绩  类型 int 
c_exam DATE --考试时间 类型 date
)
-- 课程表
CREATE TABLE course(
k_id VARCHAR(40),  --课程编号 类型 varchar
k_name VARCHAR(40)  --课程名称 类型 varchar
)

时间: 2024-10-12 17:31:11

【数据库】三种关系:一对一,一对多,多对多。的相关文章

表关系(一对一,一对多,多对多)

可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的. 在一个关系型数据库中,利用关系可以避免多余的数据.例如,如果设计一个可以跟踪图书信息的数据库,您需要创建一个名为 titles 的表,它用来存储有关每本书的信息,例如书名.出版日期和出版社.您也可能保存有关出版社的信息,诸如出版社的电话.地址和邮政编码.如果您打算在 titles 表中保存所有这些信息,那么对于某出版社出版的每本书都会重复该出版社的电话号码. 更好的方法是将有关出版社的信息在单独的表,publ

mysql数据库--外键的三种关系

主要内容: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id)

外键的变种 三种关系

因为有foreign key的约束,使得两张表形成了三种关系: 多对一 多对多 一对一 查找两张表之间的关系的分析步骤: 1.先站在左表的角度去找: 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表的一个字段(通常是id) 2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表的一个字段(通常是id) 3.总结: 多对一: 如果只有步骤一成立,则是左表多对一右表. 如果只有步骤

10-外键的变种 三种关系

本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id)

Mysql外键的变种 三种关系

一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id) #3.总结: #多对一: 如果只有步骤1成立,则是

7-外键的变种 三种关系

一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id) #3.总结: #多对一: 如果只有步骤1成立,则是

三十九、表与表之间的三种关系

把所有数据都存放于一张表的弊端: 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 一.一对多:员工和部门 1.如何查找表与表之间的关系 以员工和部门表为例.查找表关系需要做到换位思考(站在两边去找表关系) 先站在员工表: 找员工表的多条数据能否对应部门表的一条数据 翻译: 多个员工能否属于一个部门 可以!之后不能直接下结论,还需要站在部门表的角度再确认关系 再站在部门表: 找部门表的多条数据能否对应员工表的一条数据 翻译: 多个部门能否有同一个员工 不可以! 只有站在两边表的角度都分析过了

用例图中的三种关系包含、扩展、泛化

用例图使用户 与开发人员交流的一种重要的方式,是对用户需求的一种描述.开发人员从用户的角度整体上理解系统的功能. 用例图主要有三种元素:参与者(Actor),用例,以及用例图中对象间到的关系.其中关系有包含.扩展是用例图中特有的,泛化在其他类图中同样存在. 包含:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含的关系来表示它们.其中这个提取出来的公共用例成为抽象用例,而把原始用例成为基本用例或基础用例.其中"<<include>>"是包含关系的构造型,

DataTable数据批量写入数据库三种方法比较

DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename);3)   sqlbulkcopy.WriteToServer(datatable); 1.生成测试的datatable表,表结构如下:UniqueID(主键,自动增长)   |   CompanyName   |   CompanyCode   |   Address   |   Owner   |

用例图中的三种关系包括、扩展、泛化

用例图使用户 与开发者交流的一种重要的方式,是对用户需求的一种描写叙述.开发者从用户的角度总体上理解系统的功能. 用例图主要有三种元素:參与者(Actor).用例.以及用例图中对象间到的关系.当中关系有包括.扩展是用例图中特有的,泛化在其它类图中相同存在. 包括:当能够从两个或两个以上的用例中提取公共行为时,应该使用包括的关系来表示它们.当中这个提取出来的公共用例成为抽象用例.而把原始用例成为基本用例或基础用例.当中"<<include>>"是包括关系的构造型,