首先我們先討論實體之間的聯系怎么表示
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):學生課程成績關系表(均為外碼)
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. 小區人員管理系統:
關系模式:
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):居住關系
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.教室管理系統:
關系模式:
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
):學生借用教室關系表
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同名“風骨散人”
如果有什么想看的,可以私信我,如果在能力范圍內,我會發布相應的博文!
感謝大家的閱讀!😘你的點贊、收藏、關注是對我最大的鼓勵!
總結
以上是生活随笔為你收集整理的数据库入门开发案例,真的是入门级别的!!看了不后悔。的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。