在現(xiàn)在的程序開發(fā)中mysql是必定會用到的,mysql是一個開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典mysql ab公司。目前mysql被廣泛地應(yīng)用在internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了mysql作為網(wǎng)站數(shù)據(jù)庫。這篇文章我們就來說說設(shè)計數(shù)據(jù)庫的一般步驟及例子。
一、數(shù)據(jù)庫設(shè)計的一般流程
1.概述
包括課程設(shè)計選題、項目背景、課程設(shè)計報告編寫目的、課程設(shè)計報告的組織等內(nèi)容。
2.課程設(shè)計任務(wù)的需求分析
2.1設(shè)計任務(wù)
2.2設(shè)計要求
2.3需求描述的規(guī)范文檔
3.概念結(jié)構(gòu)設(shè)計
3.1概念結(jié)構(gòu)設(shè)計工具(E-R模型)
3.2XXX子系統(tǒng)(局部)
3.2.1子系統(tǒng)描述
3.2.2分E-R圖
3.2.3說明
3.3YYY子系統(tǒng)
3.3.1子系統(tǒng)描述
3.3.2 分E-R圖
3.3.3 說明
……
3.X 總體E-R圖
3.X.1 E-R圖的集成
3.X.2 總體E-R圖
4.邏輯結(jié)構(gòu)設(shè)計
4.1關(guān)系數(shù)據(jù)模式
4.2視圖的設(shè)計
4.3優(yōu)化
5.數(shù)據(jù)庫物理設(shè)計與實施
5.1數(shù)據(jù)庫應(yīng)用的硬件、軟件環(huán)境介紹
5.2物理結(jié)構(gòu)設(shè)計
5.3 索引的設(shè)計
5.4建立數(shù)據(jù)庫
5.5 加載數(shù)據(jù)庫測試數(shù)據(jù)
6.數(shù)據(jù)操作要求及實現(xiàn)
6.1數(shù)據(jù)查詢操作
6.2數(shù)據(jù)更新操作
6.3數(shù)據(jù)維護操作
6.4其他
7.數(shù)據(jù)庫應(yīng)用系統(tǒng)的實現(xiàn)
8.設(shè)計心得體會
9.參考文獻
二、例子:學(xué)生選課管理系統(tǒng)
在高校教學(xué)管理系統(tǒng)中,學(xué)生選課管理是很重要的功能模塊。
需求分析:
該系統(tǒng)應(yīng)該能管理學(xué)校的教師信息、學(xué)生信息、專業(yè)信息、學(xué)校開設(shè)的所有課程信息、學(xué)生選修課程的信息等。選課系統(tǒng)主要滿足三類用戶的要求,這三類用戶分別是教務(wù)處的系統(tǒng)管理員、教師和學(xué)生。他們所具有的操作權(quán)限以及操作內(nèi)容是不同的。具體的需求分析如下:
系統(tǒng)管理員
維護學(xué)生的個人基本信息,實現(xiàn)對學(xué)生個人信息的增、刪、改等。
學(xué)生信息包括…
維護教師的個人基本信息,實現(xiàn)對教師個人信息的增、刪、改等。
教師信息包括…
維護課程的個人基本信息,實現(xiàn)對課程個人信息的增、刪、改等。
課程信息包括…
學(xué)生用戶
查詢和修改個人信息。
進行選課操作
學(xué)生可以查看自己所選課程信息及以前所選課程的成績信息。
教師用戶
查詢和修改個人信息
課程結(jié)束后,登記成績
教師可查看自己的教學(xué)安排。
數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計:
概念結(jié)構(gòu)設(shè)計的常用工具是ER圖。分下面幾步完成。
數(shù)據(jù)抽象(抽象出實體)。畫出各實體屬性圖。
設(shè)計分ER圖。找出實體及其聯(lián)系,并畫出分ER圖。
合并分ER圖,生成初步ER圖。
全局ER圖。將各個實體的屬性加入初步ER圖,消除各局部可能存在的沖突(包括屬性沖突、命名沖突和結(jié)構(gòu)沖突),形成全局ER圖。
數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計:
首先,將概念模型ER圖中實體和聯(lián)系轉(zhuǎn)換為數(shù)據(jù)模型,在RDBMS中,就是轉(zhuǎn)換為關(guān)系模式,并確定關(guān)系模式的屬性和主碼。
ER圖向關(guān)系數(shù)據(jù)模型轉(zhuǎn)換的基本規(guī)則如下:
一個實體轉(zhuǎn)換為一個關(guān)系模式,實體的屬性就是關(guān)系的屬性,實體的鍵就是關(guān)系的鍵。
若實體間的聯(lián)系是1:1的,則聯(lián)系不單獨轉(zhuǎn)換為關(guān)系模式,需在兩個實體對應(yīng)的關(guān)系模式中的任意一個中加入另一個關(guān)系模式的鍵和聯(lián)系的屬性。
若實體間的聯(lián)系是1:n的,則聯(lián)系不單獨轉(zhuǎn)換為關(guān)系模式,需在n端實體對應(yīng)的關(guān)系模式中加入1端實體對應(yīng)的關(guān)系模式的鍵和聯(lián)系的屬性。
若實體間的聯(lián)系是m:n的,則將聯(lián)系也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實體類型的碼加上和聯(lián)系的屬性,而聯(lián)系的鍵為兩端實體碼的組合。
其次,對具有相同主碼的關(guān)系模式進行必要的合并。
關(guān)系優(yōu)化
以規(guī)范化理論為指導(dǎo),對關(guān)系數(shù)據(jù)模型進行優(yōu)化。規(guī)范化到第三范式。
數(shù)據(jù)庫物理設(shè)計與實施:
主要包括以下工作:
創(chuàng)建數(shù)據(jù)庫
創(chuàng)建基本表,設(shè)置約束條件,管理基本表。
創(chuàng)建和管理索引。(DBMS會為主鍵自動建立索引。建立索引來提高查詢效率。)
創(chuàng)建和管理視圖。
向數(shù)據(jù)庫中輸入數(shù)據(jù)。
用SQL語句 實現(xiàn)對數(shù)據(jù)查詢、修改、刪除等操作。(可以先思考需要怎么操縱數(shù)據(jù)庫,后面再實現(xiàn))
編寫存儲過程、觸發(fā)器等,并調(diào)試通過。(比如創(chuàng)建一個觸發(fā)器當(dāng)學(xué)生表中某學(xué)號的學(xué)生被刪除時,自動將選課表中的該選課記錄刪除)
數(shù)據(jù)庫運行維護:
主要包括以下內(nèi)容
數(shù)據(jù)庫的備份與恢復(fù)
數(shù)據(jù)庫的安全性與完整性控制
數(shù)據(jù)庫的性能監(jiān)督、分析和改進
訪問數(shù)據(jù)庫,可以通過以下語句操縱數(shù)據(jù)。
對學(xué)生表的性別、年齡字段添加約束。
添加一個屬性列“入學(xué)時間”。
修改“專業(yè)”的數(shù)據(jù)類型。
增加課程名必須取唯一值的約束。
在選課表的列“學(xué)號”、“課程號”上建立索引。
在選課表的“工號”、“課程號”上建立索引。
假設(shè)學(xué)生選課系統(tǒng)中有4個院系,為方便各個院系的教學(xué)管理人員查看本院系學(xué)生信息,每個院系分別建立一個學(xué)生視圖。
建立一個反映學(xué)生選課情況的視圖。
學(xué)生通過學(xué)號或姓名查詢自己的選課信息。
學(xué)生通過學(xué)號或姓名查詢自己的基本信息。
列出某個教師所授某門課程的成績單,并按成績升或降序顯示。
列出某個教師所教授的所有課程信息。
查詢某個學(xué)生已經(jīng)獲得的學(xué)分信息。
統(tǒng)計某個教師某門課的平均分、最高分、最低分。
添加一門新的課程。
修改某門課的學(xué)分。
創(chuàng)建刪除觸發(fā)器,當(dāng)學(xué)生表中的某“學(xué)號”的學(xué)生被刪除時,自動將選課表中的該學(xué)生的選課記錄刪除,即為學(xué)生表建立刪除觸發(fā)器,實現(xiàn)學(xué)生表和選課表的級聯(lián)刪除。
創(chuàng)建刪除觸發(fā)器,當(dāng)課程表中的某“課程編號”的課程被刪除時,自動將選課表中的選修該課程的記錄都刪除,即為課程表建立刪除觸發(fā)器,實現(xiàn)學(xué)生表和選課表的級聯(lián)刪除。
創(chuàng)建插入觸發(fā)器,當(dāng)往選課表中插入記錄時,查詢學(xué)生表中是否有該學(xué)號的學(xué)生,課程表中是否有該課程編號的課程,如果都有則可以插入,否則拒絕插入。
備份“學(xué)生選課系統(tǒng)”數(shù)據(jù)庫到本地磁盤E盤下的BACKUPDB文件夾下面。
? sp_addumpdevice ‘disk’,’學(xué)生選課系統(tǒng)_bak’,’E:BACKUPDB學(xué)生選課系統(tǒng)_bak’
BACKUP DATABASE 學(xué)生選課系統(tǒng)TO DISK=’學(xué)生選課系統(tǒng)_bak’
圖書借閱管理系統(tǒng)
需求分析:
系統(tǒng)應(yīng)實現(xiàn)以下功能:圖書管理員可以維護圖書信息,包括增加新書、修改圖書信息、辦理圖書借閱登記、歸還登記、過期圖書處理、丟失圖書處理以及讀者借閱證件信息的維護等。而讀者可以實現(xiàn)借書、還書、查詢圖書信息、借書信息等。具體要求如下:
圖書信息管理:錄入各圖書信息、維護圖書信息等。
讀者信息管理:維護讀者信息并根據(jù)實際情況需要修改、更新、刪除讀者
借閱管理:包括借書、還書、過期圖書歸還處理等。
圖書借閱管理系統(tǒng)主要有2種用戶。
管理員:維護圖書基本數(shù)據(jù),包括圖書種類、更新圖書信息,進行讀者的圖書借閱和歸還處理等。
讀者用戶:可以查詢圖書信息、借閱圖書。
語義:圖書館的圖書情況和管理規(guī)定,每種類型圖書有很多不同的圖書,同樣的書可以習(xí)多本;每本圖書可以被多次借閱,每位讀者可以借閱多本圖書。每本圖書的借閱期限是一個月。
數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計:
分3步完成:1)抽象出實體2)抽象出聯(lián)系實際)確定實體的屬性和鍵
圖書類型,包括:圖書分類號、圖書分類名稱、描述信息。
圖書,包括:圖書編號、圖書名稱、作者、出版社、價格。
讀者,包括:證件號、姓名、性別、所在系、班級、證件狀態(tài)(包括有效和失效)、聯(lián)系方式等。
讀者與圖書之間是m:n,圖書類型與圖書之間是1:n,讀者與圖書類型之間無聯(lián)系。
數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計:
將E-R圖轉(zhuǎn)換成關(guān)系模型。
對關(guān)系模型進行優(yōu)化
規(guī)范化到第三范式
數(shù)據(jù)庫物理設(shè)計與實施:
主要包括以下工作:
創(chuàng)建數(shù)據(jù)庫
創(chuàng)建基本表,設(shè)置約束條件,管理基本表。
創(chuàng)建和管理索引。(DBMS會為主鍵自動建立索引。建立索引來提高查詢效率。)
創(chuàng)建和管理視圖。
向數(shù)據(jù)庫中輸入數(shù)據(jù)。
用SQL語句 實現(xiàn)對數(shù)據(jù)查詢、修改、刪除等操作。(可以先思考需要怎么操縱數(shù)據(jù)庫,后面再實現(xiàn))
編寫存儲過程、觸發(fā)器等,并調(diào)試通過。
操縱數(shù)據(jù)庫中的數(shù)據(jù)
為了方便管理員分類管理,現(xiàn)在需要為多種圖書類類型的圖書建立視圖。
建立讀者借閱情況表。
為借閱表中的證件號和借閱日期建立組合次索引。
為圖書表中的圖書分類號、書名、出版社字段分別建立索引。
為借閱表建立一個插入觸發(fā)器,以保證向借閱表插入的“證件號”在讀者表中存在,如果不存在,就不會向借閱表中插入借閱信息記錄。
在借閱表建立一個更新觸發(fā)器,監(jiān)視借閱表的“借閱日期”列,使其不能手工修改。
在讀者表建立刪除觸發(fā)器,實現(xiàn)讀者表和借閱表的級聯(lián)刪除。
運動會管理系統(tǒng)
需求分析:
引入計算機管理運動會,運動員可以在運動會管理系統(tǒng)中查詢自己的比賽項目及比賽結(jié)果,裁判員或工作人員可以通過系統(tǒng)記錄運動員各個比賽項目的成績、進行成績統(tǒng)計等。運動會管理系統(tǒng)保存運動員、比賽項目以及不同類型比賽的參賽數(shù)據(jù)。
運動會管理系統(tǒng)主要管理對象有代表隊、運動員、比賽項目等。
本系統(tǒng)中,基本規(guī)定如下:一個代表隊包含多個運動員,一個運動員只能屬于一個代表隊;一個運動員可以參加多個比賽項目,一個比賽項目可以被多個運動員參加;假設(shè)各個比賽項目結(jié)束后,按照成績由高到低排出名次,并對前3名的運動員給予相應(yīng)的積分,如第1、2、3名分別積分為3、2、1分,而獲得其他名次的運動員積分為零分,將代表隊中所有成員的積分累加,得到各代表隊總積分,將總積分由高到低排序,得到各個代表隊的排名情況。
為簡化系統(tǒng)需求,本運動會管理系統(tǒng)只考慮田徑運動會的管理,僅考慮代表隊、、比賽項目的關(guān)系,不考慮裁判評分、比賽時間、地點等到的安排。
數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計:
代表隊:代表隊員、隊名稱、領(lǐng)隊、總積分、總名次
運動員:運動員號,姓名、性別、年齡
比賽項目:項目號、項目類別、項目名稱、成績單位。
數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計:
4張表,
比賽詳情,包括成績、積分、名次