實作練習 ~ 選課資料

我們在"從ER Model到資料庫的實作練習",了解從ER Model到資料庫的形成步驟,現在來進行實際的實體資料庫建立。

假設資料庫的關聯及結構如下圖 (下圖是以Access的工具製作而成):



其邏輯資料庫可以表示如下:

課程資料表 course(cid,cname,credit,tid)
老師資料表 teacher(tid,tname,tarea)
學生資料表 student(sid,sname,did)
科系代碼表 department(tid,tname,tboss)
選課資料表 enrollment(sid,cid,score)
學務處資料表 score1(serial,sid,score)
教務處資料表 score2(serial,sid,score)

但是這個資料庫結構設計有些問題:
(1)沒有表示年度與學期
(2)教務處資料表的學業成績是甚麼?
(3)課程資料表是用來給學生選課,應該分成~課程基本資料表+開課資料表

所以我們將之更新如下:

課程基本資料表 course(cid,cname,credit,ctype,did)
開課資料表 courseoffer(cid,ctime,roomid,tid,cyear,csemester)
老師資料表 teacher(tid,tname,tarea)
學生資料表 student(sid,sname,did)
科系代碼表 department(tid,tname,tboss)
選課資料表 enrollment(sid,cid,cyear,csemester,score)
學務處資料表 score1(serial,sid,score,cyear,csemester)
教務處資料表 score2(serial,sid,score,cyear,csemester)

如果以更新後的資料表,應該如何實作呢?
並且如得到以下資訊呢?

(1)資管系的課程有幾門科目是選修?幾門科目是必修?
(2)資管系的課程有幾門科目是三學分?
(3)資管系的課程有那些名稱中有info這個字串?
(4)103學年度上學期有幾門課程提供學生選課?
(5)某老師在103學年度上學期有幾門課程提供學生選課?
(6)某學生在103學年度上學期選了幾門課程?
 ....

上面的結構可以檢查衝堂嗎? 要如何才能呢?

留言

這個網誌中的熱門文章

如何使用EXCEL連接MYSQL

關聯模式的五大鍵 Super key、Candidate Key、Primary Key、Alternate Key、Foreign Key

SELECT SQL語法總整理