数据库中一对多的实现方式

1.数据库中一对一的实现方式:

(如一个学生对应一个档案,一个档案对应一个学生。学生表为A表,档案表为B表)

唯一外键方式:在A和B任意一表中添加唯一外键(注意是添加完外键后,再点唯一键,进行设置)具体方式点此。

主键关联方式:当A和B的主键相同时,我们就认为是一组数据。(注意是“我们就认为”,数据库中并没有提供主键关联的约束方式。)

中间关系表:创建一张新表作为中间关系表,两个列分别记录A和B,并且每一列的取值中,值均不能重复(即将这两列均设置为唯一外键,注意:将这两列“既设置为主键,又设置为外键”的方式不能实现该功能,因为可能会出现一列相等而另一列不相等的情况)。

2.数据库中一对多的实现方式:

(如一个班级对应多个学生)

1 在多的一方添加外键:在学生表中添加一列,记录该学生是哪一个班的,该列设置成外键,取值为班级表的主键。

2 建立中间表:创建一个新表,该表至少有两列,分别记录学生和班级。学生列要设置成为“外键+唯一键”,以防有两行数据的学生列的值一样(防止一个学生有两个班级的情况出现)。班级列不必设置成唯一键,设置成为外键即可,因为不同学生可以有一样的班级。

3.数据库中多对多实现方式:

(学生和课程:一个学生可以选多门课,一门课可以由多个学生选)

1 建立中间关系表:新建一张表,一列记录学生,一列记录课程。两列均为外键,一列取值为学生表中的唯一标识,一列取值为课程中的唯一标识。两列不用设置成为唯一键,因为每一列中均可有重复,但不能有两行数据在两列上完全重复。所以将两列均设置成为主键+外键(即联合主键+外键)

然后我们给出案例

案例情景:

1)针对某个高校,开发一个学生成绩管理系统,要求设计出ER图。

2)针对目前疫情的情况,为某个小区设计一个人员管理的系统。

3)为教务处开发一个教室管理的系统。

数据库ER图:

学生成绩管理系统:

在这里插入图片描述

小区人员管理系统:

在这里插入图片描述

教室管理系统:

在这里插入图片描述

实现原理:

学生成绩管理系统:

关系模式:

Student(Sid,Sname,Sgrade,Sclass,Smajor,Ssex):学生信息表 

Teacher(Tid,Tname,Tdep):教师信息表

Course(Cid,Cno,Cname,Cscore):课程信息表

TC(Tid,Cid,Cno):教师课程关系表 (均为外码)

SC(Sid,Cid,Cno,Scj):学生课程成绩关系表(均为外码)

1

2

3

4

5

MySQL数据库实现:

Creat

database StuGrade;

use StuGrade

--建立一个学生信息表

CREATE TABLE Student

(

    Sid CHAR(10) PRIMARY KEY,--主码

    Sname CHAR(10),

    Sgrade INT,

    Sclass SMALLINT,

    Smajor CHAR(10),

    Ssex BOOLEAN

);

--建立一个教师信息表

CREATE TABLE Teacher

(

    Tid CHAR(10) PRIMARY KEY,

    --主码

    Tname CHAR(10),

    Tdep CHAR(10)

);

--建立一个课程信息表

CREATE TABLE Course

(

    Cid CHAR(10),

    Cno CHAR(10),

    Cname CHAR(10),

    Cscore SMALLINT ,

    PRIMARY KEY (Cid,Cno)

    --主码

);

--建立一个师课程关系表

CREATE TABLE TC

(

    Tid CHAR(10) ,

    --主码

    Cid CHAR(10),

    Cno CHAR(10),

    PRIMARY KEY (Tid,Cid,Cno),

    FOREIGN KEY (Tid) REFERENCES Teacher(Tid),

    FOREIGN KEY (Cid) REFERENCES Course(Cid),

    FOREIGN KEY (Cno) REFERENCES Course(Cno)

);

--建立一个学生课程成绩关系表

CREATE TABLE SC

(

    Sid CHAR(10),

    Cid CHAR(10),

    Cno CHAR(10),

    Scj SMALLINT,

    PRIMARY KEY (Sid,Cid,Cno),

    FOREIGN KEY (Sid) REFERENCES Student(Sid),

    FOREIGN KEY (Cid) REFERENCES Course(Cid),

    FOREIGN KEY (Cno) REFERENCES Course(Cno)

); 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

2. 小区人员管理系统:

猜你喜欢

转载自www.cnblogs.com/ibdibd/p/12941039.html