資料庫程式設計 – PHP+MySQL 第 二章 網頁資料庫簡介與 course_db  一頁   

 

 2-4 資料庫範例 – course_db

內容:

  • 2-4-1 course_db 資料庫功能

  • 2-4-2 course_db 關聯圖

  • 2-4-3 course_db 結構

(有關 course_db 介紹請參考 『資料庫系統概論』)

2-4-1 course_db資料庫功能

本書在 AppServ 系統上建構一套網頁資料庫,以供本書編寫範例使用,資料庫名為course_System。它是用來開發學校的『課程管理系統』使用,如圖 2-15,我們期望能製作出下列應用程式:

(1) 登錄/管理學生資料。

(2) 登錄/管理教師資料。

(3) 處理學生轉系、轉班之功能。

(4) 系所變更名稱、主任。

(5) 教師開課。

(6) 學生選課。

(7) 教師登錄成績。

….

2-15 課程管理系統的功能

2-4-2 course_db資料表關聯圖

 

     

2-4-3 course_db資料庫結構

如圖 2-16,在 course_db 資料庫內,我們建立了 7 個資料表,以及 3 個視界,其功能如下:(個資料表內容隨後說明)

(1) Students 資料表:供登錄學生資料使用。

(2) Teachers 資料表:供登錄教師資料使用。

(3) Classes 資料表:供登錄班級資料使用。

(4) Department 資料表:供登錄系所資料使用。

(5) All_course 資料表:全校各系全年級所規劃的課程皆登錄在資料表內。

(6) Open_course 資料表:供本學期開課使用。每學期各系由 All_course 表內選擇所欲開的課程,並登錄那一位老師、在哪一個班級開課。

(7) Select_course 資料表:供登錄全校學生選課使用。每學期開始學生由 Open_course 表內選課,其中並登錄該生修課成績。

(8) Simple_students 視界:簡化學生資料。

(9) Simple_teachers 視界:簡化教師資料。

(10) Public_course 視界:通用型記錄教師、系所開課之狀況。

2-16 course_db 內的資料表

(1) students 資料表

如圖 2-17,資料表 students 包含有 7 個欄位:{student_ID, name, class_ID, sex, tel, mailbox, address},並以 student_ID 為主鍵(Primary key)class_ID 為外來鍵,連結到 classes 資料表的主鍵 class_ID,作為登錄該學生所屬班級。

2-17 students 資料表的屬性

其中,比較特殊的是學號(student_ID),我們用 8 個數字表示,由左至右排列是:

(1) 學制(一個數字):日四技(4)、日二技(2)、日五專(5)、日二專(3)、進四技(9)、進二技(7)…

(2) 入學年度(兩個數字)100(00)101(01)102(02)103(03)104(04)、、。

(3) 系別(兩個數字):管系(11)、企管系(10)、資工系(09)、電子系(08)、、、。

(4) 班級(一個數字):甲班(1)、乙班(2)、丙班(3)、、、。

(5) 座號(兩個數字)01 ~99

譬如,學號 = 40311101,表示該生是日間四技、103 年度入學、資管系、甲班、座號為 1

(2) teachers 資料表

如圖 2-18,資料表 teachers 係登錄教師資料,包含 8 個欄位,以 teacher_ID(員工代號)作為主鍵,另外 Dep_ID 表示該教師目前在哪一系工作,它參考到 department(系別資料表)的主鍵 Dep_ID。欄位 title 表示該教師的職務,譬如是教師或系主任。

2-18 teachers 資料表的屬性

(3) classes 資料表

如圖 2-19,資料表 classes 係登錄各班級的資料,包含有 4 個欄位,其中 class_ID 為主鍵,Dep_ID 表示該班是屬於哪一個系所、year 試入學年度。另外, class_ID 包含 6 個數字,表示方法如同 student_ID(學號)的前 6 個數字一樣。

2-19 classes 資料表的屬性

(4)   department 資料表

如圖 2-20,資料表 department 是用來記錄各系的資料,包含有兩個欄位,以 dep_ID 為主鍵。

2-20 department 資料表的屬性

(5) all_course 資料表

如圖 2-21,資料表 all_course 是登錄全校各系所規劃的課程,包含有 5 個欄位。每一個課程都有一個專屬編號(course_ID),並永遠保存著。各欄位說明如下:

2-21 all_course 資料表的屬性

(1) Course_ID:課程代碼。由 7 個字母編制而成,由左至右說明如下:

(a) 學制(一個字母):日四技(4)、日二技(2)、日五專(5)、日二專(3)、進四技(9)、、。

(b) 系別(兩個字母):資管系(0B)、企管系(0A)、資工系(09)、電子系(05)、、、。

(c) 課程屬性(一個字母):共同科(A)、通識(B)、專業必修(C)、專業選修(D)、、、。

(d) 課程編號(三個字母)000 ~ 999

(2) Course_name:課程名稱。各系可能開相同名稱的課程。

(3) Dep_ID:表示此課程是哪一系所開的。

(4) Required:必修或選修。

(5) Credit:學分數。

(6) open_course 資料表

如圖 2-22,資料表 open_course 記錄著本學期全校所開的課程,這就比較複雜,同一課程可能由多位老師開在不同班級上,每位老師可能開若干個課程。它包含 4 個欄位,說明如下:

2-22 open_course 資料表的屬性

(1) Open_course_ID:開課代碼。該表格的主鍵,我們採用數字,並請系統自動產生一個遞增不可重複的數字(自動編號)

(2) Course_ID:課程代碼。是參考到 all_course 的主鍵 course_ID,表示開哪一個課程。

(3) Class_ID:班級代碼。表示該課程是開在哪一班級。

(4) Teacher_ID:教師代碼。表示此課程是哪一位老師授課。

(7) select_course 資料表

如圖 2-23,資料表 select_course 是學生的選課記錄,並可登錄成績。它包含 6 個欄位,並且是雙主鍵(student_ID, open_course_ID),表示哪一位學生、修讀哪一門課。其它是登錄平時成績(normal)、期中考成績(midTerm)、期末考成績(finalTerm)、與學期成績(final)

2-23 select_course 資料表屬性

(8) simple_students 視界

如圖 2-24,視界(view) simple_students 是簡化 students 資料表的欄位,一般選課作業並不需要那麼詳細的個人資料。它包含 4 個欄位,如下:

2-24 simple_students 視界的屬性

(9) simple_teachers 視界

2-25,同樣,簡化 teachers 資料表欄位,如下:

2-25 simple_teachers 視界的屬性

(10)  public_course 視界

我們為了資料表的正規化問題(請參考拙著『資料庫管理系統』講義),將許多資料拆到各個資料表內,如此會造成查詢資料的困難,因此,我們建立 public_course 視界來操作會比較容易。至於,製作技巧容後再說明。它包含 7 個欄位,如圖 2-26 所示。

2-26 public_course 視界的屬性

主講人:粘添壽博士

course_db 關聯圖

資料庫程式設計 - PHP+MySQL: