數據庫入門開發案例,真的是入門級別的!!看了不後悔。

首先我們先討論實體之間的聯繫怎麼表示

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)

); 
 

寫在最後:
我叫風骨散人,名字的意思是我多想可以不低頭的自由生活,可現實卻不是這樣。家境貧寒,總得向這個世界低頭,所以我一直在奮鬥,想改變我的命運給親人好的生活,希望同樣被生活綁架的你可以通過自己的努力改變現狀,深知成年人的世界裏沒有容易二字。目前是一名在校大學生,預計考研,熱愛編程,熱愛技術,喜歡分享,知識無界,希望我的分享可以幫到你!
如果有什麼想看的,可以私信我,如果在能力範圍內,我會發布相應的博文!
感謝大家的閱讀!😘你的點贊、收藏、關注是對我最大的鼓勵!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章