在現在的程式開發中MySQL是必定會用到的,MySQL是一個開放原始碼的小型關聯式資料庫管理系統,開發者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在Internet上的中小型網站。由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。這篇文章我們就來談談設計資料庫的一般步驟及範例。
一、資料庫設計的一般流程
1.概述
包含課程設計選題、專案背景、課程設計報告撰寫目的、課程設計報告的組織等內容。
2.課程設計任務的需求分析
2.1設計任務
#2.2設計要求
2.3需求描述的規格文件
# 3.概念結構設計
3.1概念結構設計工具(E-R模型)
#3.2XXX子系統(局部)
3.2.1子系統描述
#3.2.2分E-R圖
3.2.3說明
3.3YYY子系統
3.3.1子系統描述
#3.3.2 分E-R圖
3.3.3 說明
……
3.X 總體E-R圖
3.X.1 E-R圖的整合
3.X.2 總體E-R圖
4.邏輯結構設計
4.1關係資料模式
4.2視圖的設計
4.3最佳化
5.資料庫物理設計與實作
5.1資料庫應用的硬體、軟體環境介紹
5.2實體結構設計
5.3 索引的設計
5.4建立資料庫
5.5 載入資料庫測試資料
6.資料操作需求及實作
6.1資料查詢操作
6.2資料更新操作
6.3資料維護操作
6.4其他
7.資料庫應用系統的實作
#8.設計心得體會
9.參考文獻
二、範例:學生選課管理系統
在大學教學管理系統中,學生選課管理是很重要的功能模組。
需求分析:
此系統應該能管理學校的教師資訊、學生資訊、專業資訊、學校開設的所有課程資訊、學生選修課程的資訊等。選課系統主要滿足三類使用者的要求,這三類使用者分別是教務處的系統管理員、教師和學生。他們所具有的操作權限以及操作內容是不同的。具體的需求分析如下:
系統管理員
維護學生的個人基本訊息,實現對學生個人資訊的增、刪、改等。
學生資訊包含…
維護教師的個人基本訊息,實現教師個人資訊的增、刪、改等。
教師資訊包含…
維護課程的個人基本訊息,實現課程個人資訊的增、刪、改等。
課程資訊包括…
學生使用者
#查詢和修改個人資訊。
進行選課作業
學生可以查看自己所選課程資訊及先前所選課程的成績資訊。
教師用戶
查詢和修改個人資訊
課程結束後,註冊成績
教師可查看自己的教學安排。
資料庫概念結構設計:
概念結構設計的常用工具是ER圖。分下面幾步完成。
資料抽象化(抽像出實體)。畫出各實體屬性圖。
設計分ER圖。找出實體及其聯繫,並畫出分ER圖。
合併分ER圖,產生初步ER圖。
全域ER圖。將各實體的屬性加入初步ER圖,消除各局部可能存在的衝突(包括屬性衝突、命名衝突和結構衝突),形成全域ER圖。
資料庫邏輯結構設計:
首先,將概念模型ER圖中實體和聯繫轉換為資料模型,在RDBMS中,就是轉換為關係模式,並確定關係模式的屬性和主碼。
ER圖轉換成關係資料模型的基本規則如下:
一個實體轉換成一個關係模式,實體的屬性就是關係的屬性,實體的鍵就是關係的鍵。
若實體間的聯繫是1:1的,則聯繫不單獨轉換為關係模式,需在兩個實體對應的關係模式中的任一個中加入另一個關係模式的鍵和聯繫的屬性。
若實體間的聯繫是1:n的,則聯繫不單獨轉換為關係模式,需在n端實體對應的關係模式中加入1端實體對應的關係模式的鍵和聯繫的屬性。
若實體間的聯繫是m:n的,則將聯繫也轉換成關係模式,其屬性為兩端實體類型的碼加上和聯繫的屬性,而聯繫的鍵為兩端實體碼的組合。
其次,對具有相同主碼的關係模式進行必要的合併。
關係最佳化
以規範化理論為指導,對關係資料模型進行最佳化。規範化到第三範式。
資料庫實體設計與實作:
主要包含以下工作:
建立資料庫
建立基本表,設定約束條件,管理基本表。
建立和管理索引。 (DBMS會為主鍵自動建立索引。建立索引來提高查詢效率。)
建立和管理檢視。
向資料庫中輸入資料。
用SQL語句 實作對資料查詢、修改、刪除等操作。 (可以先思考需要怎麼操縱資料庫,後面再實現)
編寫預存程序、觸發器等,並偵錯通過。 (例如建立觸發器當學生表中某學號的學生被刪除時,自動將選課表中的該選課記錄刪除)
資料庫運行維護:
#主要包含以下內容
資料庫的備份與恢復
資料庫的安全性與完整性控制
資料庫的效能監督、分析和改進
存取資料庫,可以透過以下語句操縱資料。
對學生表的性別、年齡欄位新增約束。
新增一個屬性列「入學時間」。
修改「專業」的資料型態。
增加課程名稱必須取唯一值的限制。
在選課表的欄位「學號」、「課程號」上建立索引。
在選課表的「工號」、「課程號」上建立索引。
假設學生選課系統中有4個系,為方便各系的教學管理人員查看本系學生信息,每個系分別建立一個學生視圖。
建立一個反映學生選課狀況的檢視。
學生透過學號或姓名查詢自己的選課資料。
學生透過學號或姓名查詢自己的基本資料。
列出某位教師所授某門課程的成績單,並依成績升或降序顯示。
列出某個教師所教的所有課程資訊。
查詢某位學生已經獲得的學分資料。
統計某個教師某門課的平均分數、最高分、最低分。
新增一門新的課程。
修改某門課的學分。
建立刪除觸發器,當學生表中的某「學號」的學生被刪除時,自動將選課表中的該學生的選課記錄刪除,即為學生表建立刪除觸發器,實現學生表和選課表的級聯刪除。
建立刪除觸發器,當課程表中的某「課程編號」的課程被刪除時,自動將選課表中的選修該課程的記錄都刪除,即為課程表建立刪除觸發器,實現學生表和選課表的級聯刪除。
建立插入觸發器,當往選課表中插入記錄時,查詢學生表中是否有該學號的學生,課程表中是否有該課程編號的課程,如果都有則可以插入,否則拒絕插入。
備份「學生選課系統」資料庫到本機磁碟E磁碟下的BACKUPDB資料夾下方。
sp_addumpdevice 'disk','學生選課系統_bak','E:\BACKUPDB\學生選課系統_bak'
BACKUP DATABASE 學生選課系統TO DISK='學生選課系統_ bak'
圖書借閱管理系統
需求分析:
系統應實現以下功能:圖書館員可以維護圖書信息,包括增加新書、修改圖書信息、辦理圖書借閱登記、歸還登記、過期圖書處理、遺失圖書處理、讀者藉閱證件資料的維護等。而讀者可以實現借書、還書、查詢圖書資訊、借書資訊等。具體要求如下:
圖書資訊管理:輸入各圖書資訊、維護圖書資訊等。
讀者資訊管理:維護讀者資訊並依實際情況需要修改、更新、刪除讀者
借閱管理:包含借書、還書、過期圖書歸還處理等。
圖書借閱管理系統主要有2種使用者。
管理員:維護圖書基本數據,包括圖書種類、更新圖書信息,進行讀者的圖書借閱和歸還處理等。
讀者用戶:可以查詢圖書資訊、借閱圖書。
語意:圖書館的圖書情況和管理規定,每種類型圖書有很多不同的圖書,同樣的書可以習多本;每本圖書可以被多次借閱,每位讀者可以藉閱多本圖書。每本圖書的借閱期限是一個月。
資料庫概念結構設計:
分3步驟完成:1)抽象實體2)抽像出聯絡實際)決定實體的屬性和鍵
書籍類型,包括:圖書分類號、圖書分類名稱、描述資料。
圖書,包括:圖書編號、圖書名稱、作者、出版社、價格。
讀者,包括:證件號碼、姓名、性別、所在系所、班級、證件狀態(包括有效和失效)、聯絡方式等。
讀者與圖書之間是m:n,圖書類型與圖書之間是1:n,讀者與圖書類型之間無聯繫。
資料庫邏輯結構設計:
將E-R圖轉換成關聯式模型。
對關係模型進行最佳化
規範化到第三範式
資料庫物理設計與實作:
#主要包含以下工作:
建立資料庫
建立基本表,設定約束條件,管理基本表。
建立和管理索引。 (DBMS會為主鍵自動建立索引。建立索引來提高查詢效率。)
建立和管理檢視。
向資料庫中輸入資料。
用SQL語句 實作對資料查詢、修改、刪除等操作。 (可以先思考需要怎麼操縱資料庫,後面再實作)
編寫預存程序、觸發器等,並除錯通過。
操縱資料庫中的資料
為了方便管理員分類管理,現在需要為多種圖書類別類型的圖書建立視圖。
建立讀者藉閱狀況表。
為借閱表中的證件號碼和借閱日期建立組合次索引。
為圖書表中的圖書分類號、書名、出版社欄位分別建立索引。
為借閱表建立一個插入觸發器,以保證向借閱表插入的「證件號」在讀者表中存在,如果不存在,就不會向借閱表中插入借閱資訊記錄。
在藉閱表建立更新觸發器,監視借閱表的「借閱日期」列,使其不能手動修改。
在讀者表建立刪除觸發器,實現讀者表和借閱表的級聯刪除。
運動會管理系統
需求分析:
引入電腦管理運動會,運動員可以在運動會管理系統中查詢自己的比賽項目及比賽結果,裁判員或工作人員可以透過系統記錄運動員各比賽項目的成績、進行成績統計等。運動會管理系統保存運動員、比賽項目以及不同類型比賽的參賽數據。
運動會管理系統主要管理對像有代表隊、運動員、比賽項目等。
本系統中,基本規定如下:一個代表隊包含多個運動員,一個運動員只能屬於一個代表隊;一個運動員可以參加多個比賽項目,一個比賽項目可以被多個運動員參加;假設各比賽項目結束後,依照成績由高到低排出名次,並對前3名的運動員給予相應的積分,如第1、2、3名分別積分為3、2、1分,而獲得其他名次的運動員積分為零分,將代表隊中所有成員的積分累加,得到各代表隊總積分,將總積分由高到低排序,得到各個代表隊的排名情況。
為簡化系統需求,本運動會管理系統只考慮田徑運動會的管理,只考慮代表隊、、比賽項目的關係,不考慮裁判評分、比賽時間、地點等到的安排。
資料庫概念結構設計:
代表隊:代表隊員、隊名稱、領隊、總積分、總名次
運動員號,姓名、性別、年齡
比賽項目:項目號碼、項目類別、項目名稱、成績單位。
資料庫邏輯結構設計:
4張表,
比賽詳情,包括成績、積分、名次
以上就是設計資料庫的一般步驟及例子全部內容,相信大家已經對如何設計資料庫已經有一個大概的思路了吧。
相關教學:
以上是設計資料庫的一般步驟及例子的詳細內容。更多資訊請關注PHP中文網其他相關文章!