設(shè)計數(shù)據(jù)庫的一般步驟及例子

在現(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張表,

比賽詳情,包括成績、積分、名次

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊14 分享