『数据库』数据库入门开发案例,真的是入门级别的!!看了不后悔。

『数据库』数据库入门开发案例,真的是入门级别的!!看了不后悔。

首先我们先讨论实体之间的联系怎么表示

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

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

  • 唯一外键方式:在 A 和 B 任意一表中添加唯一外键(注意是添加完外键后,再点唯一键,进行设置)具体方式点此。
  • 主键关联方式:当 A 和 B 的主键相同时,我们就认为是一组数据。(注意是“我们就认为”,数据库中并没有提供主键关联的约束方式。)
  • 中间关系表:创建一张新表作为中间关系表,两个列分别记录 A 和 B,并且每一列的取值中,值均不能重复(即将这两列均设置为唯一外键,注意:将这两列“既设置为主键,又设置为外键”的方式不能实现该功能,因为可能会出现一列相等而另一列不相等的情况)。
2.数据库中一对多的实现方式:

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

  • 1 在多的一方添加外键:在学生表中添加一列,记录该学生是哪一个班的,该列设置成外键,取值为班级表的主键。
  • 2 建立中间表:创建一个新表,该表至少有两列,分别记录学生和班级。学生列要设置成为“外键+唯一键”,以防有两行数据的学生列的值一样(防止一个学生有两个班级的情况出现)。班级列不必设置成唯一键,设置成为外键即可,因为不同学生可以有一样的班级。
3.数据库中多对多实现方式:

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

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

案例情景:

  • 1)针对某个高校,开发一个学生成绩管理系统,要求设计出 ER 图。
  • 2)针对目前疫情的情况,为某个小区设计一个人员管理的系统。
  • 3)为教务处开发一个教室管理的系统。

数据库 ER 图:

  1. 学生成绩管理系统:
    在这里插入图片描述
  2. 小区人员管理系统:
    在这里插入图片描述
  3. 教室管理系统:
    在这里插入图片描述

实现原理:

  1. 学生成绩管理系统:
    • 关系模式:
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      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. MySQL 数据库实现:
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
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)
);

2. 小区人员管理系统:

  1. 关系模式:

    Investigator(Iid,Iname,Ipho):物业人员信息表
    LocalPeople(LPid,LPname,LPpho,LPentertmp,LPwh):小区常住人员	信息表
    ForeignPeoPle(FPid,FPname,FPpho,FPtmp,FPperp):外来人员信息表
    Estate(Ecode,Eno,Eentra,Eloc):住房信息
    FtoL(FPid,LPid):访问关系信息表,均为外码
    ImE(Iid,Eno):管理关系,间接管理住户
    LlE(Lid,Ecode):居住关系
    
  2. MySQL 数据库实现:

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
58
59
60
61
62
63
64
65
66
67
68
Creat
database EstManage;
use EstManage
--建立一个 物业人员信息表
CREATE TABLE Investigator
(
FPid CHAR(10) PRIMARY KEY ,
FPpho CHAR(10),
FPtmp CHAR(10),
FPperp CHAR(200),
);
--建立一个 小区常住人员信息表
CREATE TABLE LocalPeople
(
LPid CHAR(10) PRIMARY KEY ,
LPname CHAR(10),
LPpho CHAR(10),
LPentertmp SMALLINT,
LPwh boolean
);
--建立一个外来人员信息表
CREATE TABLE ForeignPeoPle
(
FPid CHAR(10) PRIMARY KEY ,
FPname CHAR(10),
FPpho CHAR(10),
FPtmp CHAR(10),
FPperp CHAR(10)
);
--建立一个 住房信息表
CREATE TABLE Estate
(
Ecode CHAR(10) PRIMARY KEY ,
Eno CHAR(10) ,
Eentra CHAR(10) ,
Eloc CHAR(10)
);

--建立一个访问关系信息表 关系表
CREATE TABLE FtoL
(
FPid CHAR(10),
LPid CHAR(10),
PRIMARY KEY (FPid,LPid),
FOREIGN KEY (FPid) REFERENCES ForeignPeoPle(FPid),
FOREIGN KEY (LPid) REFERENCES LocalPeople(LPid)

);
--建立一个管理关系表
CREATE TABLE ImE
(
Iid CHAR(10),
Eno CHAR(10),
PRIMARY KEY (Iid,Eno),
FOREIGN KEY (Iid) REFERENCES Investigator(Iid),
FOREIGN KEY (Eno) REFERENCES Estate(Eno),

);
--建立居住关系表
CREATE TABLE LlE
(
Lid CHAR(10),
Ecode CHAR(10),
PRIMARY KEY (Lid,Ecode),
FOREIGN KEY (Lid) REFERENCES Teacher(Lid),
FOREIGN KEY (Ecode) REFERENCES Course(Ecode),

);

3.教室管理系统:

  1. 关系模式:
1
2
3
4
5
6
7
8
9
10
11
12
Student(Sid,Sname,Sacademy): 学生信息表 Course(Cno, Cname, Cscore, Cqual, Tname)
:课程信息表 Classroom(CRno, CRstatus, CRtype) :教室信息表 Building(
Bno,
Bname,
Bsum
) :教学楼信息表 Campus(CPno, CPname, CPlocation) :校区信息表 STC(
Cno,
CRno,
Bno,
Udate,
UTime
) :课程与教室使用关系表 SCR(Sid, CRno, Bno Udate, UTime) :学生借用教室关系表;
  1. MySQL 数据库实现:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
Creat
database ClassManage;
use ClassManage
--建立一个学生信息表
CREATE TABLE Student
(
Sid CHAR(10) PRIMARY KEY,
Sname CHAR(10),
Sacademy CHAR(10)
);
--建立一个 课程信息表
CREATE TABLE Course
(
Cno CHAR(10) PRIMARY KEY,
Cname CHAR(10),
Cscore CHAR(10),
Cqual CHAR(10),
Tname CHAR(10)
);

--建立一个 教室信息表
CREATE TABLE Classroom
(
CRno CHAR(10) PRIMARY KEY,
CRstatus CHAR(10),
CRtype CHAR(10)
);
--建立一个 教学楼信息表
CREATE TABLE Building
(
Bno CHAR(10) PRIMARY KEY,
Bname CHAR(10),
Bsum CHAR(10)
);
--建立一个 校区信息表
CREATE TABLE Campus
(
CPno CHAR(10)PRIMARY KEY,
CPname CHAR(10),
CPlocation CHAR(10)
);
--建立一个 课程与教室使用关系表
CREATE TABLE STC
(
Cno CHAR(10),
CRno CHAR (10),
Bno CHAR (10),
Udate DATE,
UTime TIME,
PRIMARY KEY (Cno,CRno,Bno,Udate,UTime),
FOREIGN KEY (Cno) REFERENCES Course(Cno),
FOREIGN KEY (CRno) REFERENCES Classroom(CRno),
FOREIGN KEY (Bno) REFERENCES Building(Bno)

);
--建立一个 学生借用教室关系表
CREATE TABLE SCR
(
Sid CHAR(10),
CRno CHAR(10),
Bno CHAR(10),
Udate DATE,
UTime TIME,
PRIMARY KEY (Sid,CRno,Bno,Udate,UTime),
FOREIGN KEY (Sid) REFERENCES Student(Sid),
FOREIGN KEY (CRno) REFERENCES Classroom(CRno),
FOREIGN KEY (Bno) REFERENCES Building(Bno)

);

写在最后:
Name:风骨散人,喜欢码代码,码字,目前是一名双非在校大学生,预计考研,热爱编程,热爱技术,喜欢分享,知识无界,希望我的分享可以帮到你!名字的来源:我想有一天我能有能力随心所欲不逾矩,不总是向生活低头,有能力让家人拥有富足的生活而不是为了生计而到处奔波。
文章主要内容:
Python,C++,C 语言,JAVA,C#等语言的教程
ACM 题解、模板、算法等,主要是数据结构,数学和图论
设计模式,数据库,计算机网络,操作系统,计算机组成原理
Python 爬虫、深度学习、机器学习
计算机系408考研的所有专业课内容
一些程序猿常用的软件或者黑科技什么的
目前还在更新中,先关注不迷路。微信公众号,cnblogs(博客园),CSDN 同名“风骨散人”

如果有什么想看的,可以私信我,如果在能力范围内,我会发布相应的博文!
感谢大家的阅读!😘 你的点赞、收藏、关注是对我最大的鼓励!


『数据库』数据库入门开发案例,真的是入门级别的!!看了不后悔。
https://chiamzhang.github.io/2024/06/29/『数据库』数据库入门开发案例,真的是入门级别的!!看了不后悔。/
Author
Chiam
Posted on
June 29, 2024
Licensed under