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

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

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

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

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

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

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

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

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

案例情景:

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

数据库ER图:

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

实现原理:

  1. 学生成绩管理系统:
    • 关系模式:
      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数据库实现:
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数据库实现:

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. 关系模式:
	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数据库实现:
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同名“风骨散人”

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

posted @ 2020-05-21 02:45  风骨散人  阅读(163)  评论(0编辑  收藏  举报