首页 技术 正文
技术 2022年11月11日
0 收藏 511 点赞 4,393 浏览 1525 个字

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

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

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

一对多关系处理:

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

【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。

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

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

代码示例:

— 创建班级表
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’)

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

多对多关系处理:

【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。

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

代码示例:

— 创建学生表
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
)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295