数据库设计(结构化设计方法)——学生考试管理系统
文章目錄
- 作業要求
- 一、需求分析
- 1.1、需求說明
- 1.2、數據流圖
- 1.2.1、系統的頂層數據流圖
- 1.2.2、系統的第0層數據流圖
- 1.3、數據字典
- 1.3.1、數據流
- 1.3.2、數據存儲
- 1.3.3、處理過程邏輯
- 二、概念設計
- 2.1、實體
- 2.2、系統局部E-R圖
- 2.2.1、教師實體、課程實體和考核點實體的聯系
- 2.2.2、學生實體與課程實體的聯系
- 2.3、系統全局E-R圖
- 三、邏輯結構設計
- 3.1、ER圖到關系模式的轉換
- 3.2、關系模式的規范及調整
- 3.3、各數據表的表結構設計
- 3.3.1、數據庫中的表清單
- 3.3.2、教師信息表Teacher字段信息
- 3.3.3、管理員信息表Admin字段信息
- 3.3.4、學生信息表Student字段信息
- 3.3.5、課程信息表Course字段信息
- 3.3.6、教師授課表TeaCourse字段信息
- 3.3.7、學生選課表StuCourse字段信息
- 3.3.8、考核點信息表ScorePoint字段信息
- 3.3.9、考核點成績Score字段信息
作業要求
登錄管理模塊:
系統管理模塊:
學生模塊:
注意:不考慮學生年級因素。
一、需求分析
本階段的成果的內容形式主要包括數據流圖(Data Flow Diagram)和數據字典(DataDictionary)。
數據流圖和數據字典是描述用戶需求的重要工具以及階段成果表達形式。它作為需求分析的成果和用戶交流的主要手段和依據,是后續數據庫設計的前提。
設計人員從數據流圖中可以比較充分地了解軟件的結構,所以也是軟件設計的重要依據。
1.1、需求說明
作業要求中,把系統分為了三個模塊,即登入管理模塊、系統管理模塊、學生模塊。
對這三個模塊的內容進行分析之后,可以得知學生考試管理系統主要滿足來自三方面的需求,這三個方面分別是學生用戶、教師用戶和管理員用戶。
因此,從原先的三個模塊分解為如下四個模塊:
1.2、數據流圖
1.2.1、系統的頂層數據流圖
系統的全局數據流圖,也稱為頂層數據流圖,主要是從整體上描述系統的數據流,反映系統中數據的整體流向,是設計者針對用戶和開發者表達出的一個總體描述。
1.2.2、系統的第0層數據流圖
第0層數據流圖是對頂層數據流圖的細化,它的每一處理還可能繼續細化,形成子圖。
根據需求可將頂層數據流程圖作細化,畫出第0層數據流程圖,如下圖所示。
根據需求分析結果,明確了該系統的主要功能,分別為:
1.3、數據字典
數據流圖表達了數據與處理的關系,數據流圖作為直觀的了解系統運行機理的手段,并沒有具體描述各類數據的細節,只有通過數據字典進一步細化才能對系統的需求得到具體而確切的了解。數據字典用來說明數據流圖中出現的所有元素的詳細的定義和描述,包括數據流、加工處理、數據存儲、數據的起點和終點或外部實體等。
數據字典包括的項目有:數據項、數據結構、數據流、數據存儲、加工邏輯和外部實體。
1.3.1、數據流
| F1 | 課程信息 | 管理員 | P2課程信息處理 | 課程號+課程名稱+任課老師工號+開課時間 | |
| F2 | 教師信息 | 管理員 | P3教師信息處理 | 工號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F3 | 學生信息 | 管理員 | P4學生信息處理 | 學號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F4 | 登入信息 | 管理員 | P1登入系統 | 賬號+密碼+賬戶類別 | |
| F5 | 管理員信息 | P5顯示個人信息 | 管理員 | 賬號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F6 | 登入信息 | 學生 | P1登入系統 | 賬號(學號)+密碼+賬戶類別 | |
| F7 | 賬戶信息 | P1登入系統 | P5顯示個人信息 | 賬號(學、工號)+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F8 | 已處理的課程信息 | P2課程信息處理 | S1課程信息 | 課程號+課程名稱+開課時間 | |
| F9 | 任課教師 | P2課程信息處理 | S6教師任課信息 | 課程號+教師工號 | |
| F10 | 已處理的教師信息 | P3教師信息處理 | S2教師信息 | 工號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F11 | 已處理的學生信息 | P4學生信息處理 | S3學生信息 | 學號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F12 | 課程信息 | P6顯示課程信息 | 學生 | 課程號+課程名稱+任課老師工號+任課老師名稱+開課時間 | |
| F13 | 選課信息 | 學生 | P7選課 | 學號 | |
| F14 | 退課信息 | 學生 | P8退課 | 學號 | |
| F15 | 成績信息 | P11顯示學生成績 | 學生 | 學號+課程號+考核點名稱+考核點分數+總成績 | |
| F16 | 學生個人信息 | P5顯示個人信息 | 學生 | 學號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F17 | 登入信息 | 教師 | P1登入系統 | 賬號(工號)+密碼+賬號類別 | |
| F18 | 教師個人信息 | P5顯示個人信息 | 教師 | 工號+姓名+性別+登入密碼+電子郵箱+電話號碼 | |
| F19 | 考核點信息 | 教師 | P9設置考核點信息 | 考核點名稱+考核點占分 | |
| F20 | 選課結果 | P7選課 | S7學生選課信息 | 課程號+學號 | |
| F21 | 退課結果 | P8退課 | S7學生選課信息 | 課程號+學號 | |
| F22 | 學生考核點成績 | 教師 | P10計算學生成績 | 考核點分數 | |
| F23 | 學生成績 | P10計算學生成績 | S8學生成績 | 學號+課程號+考核點名稱+考核點分數 | |
| F24 | 任課課程信息 | P12顯示任課信息 | 教師 | 課程號+課程名稱+任課老師工號+開課時間 | |
| F25 | 課程考核點信息 | P9設置課程考核點 | S5課程考核點信息 | 課程號+考核點名稱+考核點占分 | |
| F26 | 選課學生信息 | P13顯示選課學生信息 | 教師 | 學號+姓名+性別+登入密碼+電子郵箱+電話號碼 |
1.3.2、數據存儲
| S1 | 課程信息 | 課程號+課程名稱+開課時間 | 課程號 |
| S2 | 教師信息 | 工號+姓名+性別+登入密碼+電子郵箱+電話號碼 | 工號 |
| S3 | 學生信息 | 學號+姓名+性別+登入密碼+電子郵箱+電話號碼 | 學號 |
| S4 | 登入賬戶信息 | 賬號(學、工號)+密碼 | 全部 |
| S5 | 課程考核點信息 | 課程號+考核點名稱+考核點占分 | 全部 |
| S6 | 教師任課信息 | 課程號+教師工號 | 全部 |
| S7 | 學生選課信息 | 課程號+學號 | 全部 |
| S8 | 學生成績 | 學號+課程號+考核點名稱+考核點分數 | 全部 |
1.3.3、處理過程邏輯
| P1 | 登入系統 | 賬號和密碼以及用戶類型 | 賬戶信息 | 檢驗登入賬戶的正確性 |
| P2 | 課程信息處理 | 課程信息 | 處理之后的課程信息 | 檢驗課程信息的正確性以及增刪改查操作 |
| P3 | 教師信息處理 | 教師信息 | 處理后的教師信息 | 檢驗教師信息的正確性以及增刪改查操作 |
| P4 | 學生信息處理 | 學生信息 | 處理后的學生信息 | 檢驗學生信息的正確性以及增刪改查操作 |
| P5 | 顯示個人信息 | 賬戶信息 | 用戶的個人信息 | 根據登入賬戶不同顯示不同的用戶個人信息 |
| P6 | 顯示課程信息 | 教師任課信息和課程信息 | 詳細的課程信息 | 顯示課程信息以及任課教師 |
| P7 | 選課 | 學生選課信息和課程信息 | 選課結果 | 處理學生選課 |
| P8 | 退課 | 退課信息和學生選課信息 | 退課結果 | 處理學生退課 |
| P9 | 設置考核點信息 | 考核點信息和課程信息 | 課程考核點信息 | 對課程設置考核點信息 |
| P10 | 錄入學生成績 | 學生考核點成績、課程考核點信息和學生選課信息 | 學生成績 | 對學生所選的課程的考核點進行評分 |
| P11 | 顯示學生成績 | 學生成績 | 成績信息 | 計算總成績并顯示學生考核點成績以及總成績 |
| P12 | 顯示任課信息 | 教師任課信息和課程信息 | 任課課程信息 | 顯示老師所任課程的詳細信息 |
| P13 | 顯示選課學生信息 | 學生選課信息、教師任課信息、學生信息 | 選課學生信息 | 顯示選擇某門課程的所有學生信息 |
二、概念設計
上述的數據流圖和數據字典共同構成了對用戶需求的表達,它們是系統分析員(數據庫管理員)在需求調查過程中和用戶反復交互得到的。
建設系統實際要處理的數據基本上已經在數據流圖中得到體現,整個設計過程的后續步驟提供基礎和依據。
在概念設計階段,主要采用的設計手段目前還是實體聯系模型(E-R Model)。繪制E-R圖的關鍵是確定E-R圖的各種結構,包括實體、屬性和聯系。
2.1、實體
要建立系統的E-R模型的描述,需進一步從數據流圖和數據字典中提取系統所有的實體及其屬性。為了簡化E-R圖的處置,現實世界的事物能作為屬性對待的盡量作為屬性對待,實體的指導原則如下:
由前面分析得到的數據流圖和數據字典,可以抽象得到實體主要有3個:管理員、教師、學生、課程、考核點。其中,
- 管理員實體屬性有:賬號、姓名、性別、登入密碼、電子郵箱、電話號碼。
- 教師實體屬性有:工號、姓名、性別、登入密碼、電子郵箱、電話號碼。
- 學生實體屬性有:學號、姓名、性別、登入密碼、電子郵箱、電話號碼。
- 課程實體屬性有:課程號、課程名稱、開課時間。
- 考核點實體屬性有:考核點名稱、考核點占分。
2.2、系統局部E-R圖
在需求分析階段我們采用的是自上而下的分析方法,那么要在其基礎上進一步作概念設計我們面臨的是細化的分析數據流圖以及數據字典,分析得到實體及其屬性后,進一步可分析各實體之間的聯系。
2.2.1、教師實體、課程實體和考核點實體的聯系
一名教師可以講授多門課程,而每門課只能被一名教師講授,所以它們之間是一對多的聯系(1:n)。
每門課程可以包含多個考核點,而一個考核點只能屬于一門課程,所以它們之間的聯系是一對多的(1:n)。
2.2.2、學生實體與課程實體的聯系
一個學生可以選修多個課程,而每一個課程都能夠被多個學生選修,因此,它們之間也屬于一對多的關系。當學生實體與課程實體聯系之后,產生考核點成績屬性。
2.3、系統全局E-R圖
系統的局部E-R圖,僅反映系統局部實體之間的聯系,但無法反映系統在整體上實體間的相互聯系。而對于一個比較復雜的應用系統來說,這些局部的E-R圖往往有多人各自分析完成的,只反映局部的獨立應用的狀況,在系統整體的運作需要時,他們之間有可能存在重復的部分或沖突的情況,如實體的劃分、實體或屬性的命名不一致等,屬性的具體含義(包括數據類型以及取值范圍等不一致)問題,都可能造成上述提到的現象。
為解決這些問題,必須理清系統在應用環境中的具體語義,進行綜合統一,通過調整消除那些問題,得到系統的全局E-R圖。
三、邏輯結構設計
邏輯結構設計的任務就是把概念結構設計階段設計好的基本E-R圖轉換為與選用數據庫管理系統產品所支持的數據模型相符合的邏輯結構。
3.1、ER圖到關系模式的轉換
首先,課程實體以及它們的聯系。任課教師與課程之間是一對多的聯系類型,因此,將任課教師和課程分別設計成如下的關系模式:
- 教師(工號,姓名,性別,登入密碼,電子郵箱,電話號碼)
- 課程(課程號,課程名稱,開課時間,工號)
學生與課程之間是多對多的聯系類型,所以將學生和選修分別設計成如下的關系模式:
- 學生(學號,姓名,性別,登入密碼,電子郵箱,電話號碼)
- 選修(學號,課程號)
將管理員的關系模式設計為:
- 管理員(賬號,姓名,性別,登入密碼,電子郵箱,電話號碼)
對于考核點、課程和學生,由于課程與考核點是一對多的關系,學生選修課程之后能夠擁有考核點成績。
- 考核點(課程號,考核點名稱,考核點占比)
- 考核點成績(學號,課程號,考核點名稱,分數)
3.2、關系模式的規范及調整
首先,需要我們確定上面建立的關系模式中的函數依賴,一般在作需求分析時就了解到一些數據項的依賴關系,如教師的編號決定了教師的姓名和其它的數據項信息,而實體間的聯系本身也是反映了一種函數依賴關系,但是這不是研究的對象,我們針對的是在一個關系模式中的函數依賴對象。
其次,對上一步確立的所有函數依賴進行檢查,判別是否存在部分函數依賴以及傳遞函數依賴,針對有的依賴通過投影分解,消除在一個關系模式中存在的部分函數依賴和傳遞函數依賴。
對以上八個關系模式進行檢查發現,在“課程”中存在部分函數依賴,即工號不依賴于主鍵課程號,因此對此進行投影分解,增加新的關系模式“授課”。
最終得到的關系模式如下,均已符合第三范式:
- 教師(工號,姓名,性別,登入密碼,電子郵箱,電話號碼)
- 課程(課程號,課程名稱,開課時間)
- 授課(工號,課程號)
- 學生(學號,姓名,性別,登入密碼,電子郵箱,電話號碼)
- 選修(學號,課程號)
- 管理員(賬號,姓名,性別,登入密碼,電子郵箱,電話號碼)
- 考核點(課程號,考核點名稱,考核點占比)
- 考核點成績(學號,課程號,考核點名稱,分數)
3.3、各數據表的表結構設計
在上述經由E-R模型得到關系模式并且得到適當的調整后,我們可以結合在需求表述中數據字典包含的數據項信息,得到數據庫的表結構。
我們應該根據3.1節的內容,具體設計各個數據表的表結構,包括表名,表中各列的字段名、數據類型、數據長度和表的主鍵和外鍵;還要考慮應該建立哪些索引以及索引的類型。
3.3.1、數據庫中的表清單
| Admin | 管理員 | 管理員信息表 |
| Teacher | 教師 | 教師信息表 |
| Student | 學生 | 學生信息表 |
| Course | 課程 | 課程信息表 |
| TeaCourse | 授課 | 教師授課表 |
| StuCourse | 選修 | 學生選課表 |
| ScorePoint | 考核點 | 考核點信息表 |
| Score | 考核點成績 | 考核點成績信息 |
3.3.2、教師信息表Teacher字段信息
| teacherid | 工號 | char | 10 | 主鍵,也可作為登錄標識 |
| tname | 姓名 | varchar | 6 | 非空 |
| tsex | 性別 | varchar | 2 | 男、女 |
| tpassword | 登入密碼 | varchar | 20 | 可以是數字、英文以及符號等 |
| temail | 電子郵箱 | varchar | 40 | |
| tphone | 電話號碼 | varchar | 15 |
3.3.3、管理員信息表Admin字段信息
| aid | 賬號 | char | 10 | 主鍵,也可作為登錄標識 |
| aname | 姓名 | varchar | 6 | 非空 |
| asex | 性別 | varchar | 2 | 男、女 |
| apassword | 登入密碼 | varchar | 20 | 可以是數字、英文以及符號等 |
| aemail | 電子郵箱 | varchar | 40 | |
| aphone | 電話號碼 | varchar | 15 |
3.3.4、學生信息表Student字段信息
| studentid | 學號 | varchar | 10 | 主鍵,也可作為登錄標識 |
| sname | 姓名 | varchar | 6 | 非空 |
| ssex | 性別 | varchar | 2 | 男、女 |
| spassword | 登入密碼 | varchar | 20 | 可以是數字、英文以及符號等 |
| semail | 電子郵箱 | varchar | 40 | |
| sphone | 電話號碼 | varchar | 15 |
3.3.5、課程信息表Course字段信息
| courseid | 課程號 | varchar | 10 | 主鍵 |
| cname | 課程名稱 | varchar | 20 | 非空 |
| ctime | 課程時間 | int | 5 | 如20201 |
3.3.6、教師授課表TeaCourse字段信息
| teacherid | 工號 | varchar | 10 | 外鍵(Teacher.teacherid) |
| courseid | 課程號 | varchar | 10 | 外鍵(Course.courseid) |
3.3.7、學生選課表StuCourse字段信息
| studentid | 學號 | varchar | 10 | 外鍵(Student.studentid) |
| courseid | 課程號 | varchar | 10 | 外鍵(Course.courseid) |
3.3.8、考核點信息表ScorePoint字段信息
| courseid | 課程號 | varchar | 10 | 外鍵(Course.courseid) |
| pname | 考核點名稱 | varchar | 20 | 非空 |
| ppercent | 考核點占比 | int | 3 | (1…100)表示所占百分比 |
3.3.9、考核點成績Score字段信息
| studentid | 學號 | varchar | 10 | 外鍵(Student.studentid) |
| courseid | 課程號 | varchar | 10 | 外鍵(Course.courseid) |
| pname | 考核點名稱 | varchar | 20 | 非空 |
| pscore | 分數 | int | 3 | (1…100)表示分值 |
總結
以上是生活随笔為你收集整理的数据库设计(结构化设计方法)——学生考试管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从0到1开发可视化数据大屏
- 下一篇: 天若 ocr 识别失败,出现***该区域