免費開始練習
高考申論題 106年 [資訊處理] 資料庫應用

第 一 題

📖 題組:
一實體關聯圖(ER-diagram)包含有三個實體 Project、Employee 及 Family。當中: Project 含有三個屬性 P-No、P-Name 及 DueDate,且 P-No 為該實體的主要鍵(primary key)。 Employee 含有三個屬性 Emp#、E-Name 及 Office,且 Emp#為該實體的主要鍵。 Family 含有兩個屬性 Name 及 DOB,且 Family 為一弱實體(weak entity)。 另 Project 與 Employee 間有一 Assignment 的關聯(relationship),該關聯顯示: 每一 Project 被指定給至少有一位以上 Employee 在負責。 每一 Employee 需負責零個以上 Project。 且每一個 Assignment 都會記錄,負責每一 Project 的每一位 Employee,在該 Project 所扮演的角色、參與該 Project 的起始日期及結束日期。 Employee 與 Family 間也有一 Dependent 的關聯。該關聯描述: 每一位 Employee 能扶養零位以上 Family。 每一位 Family 只能登記為某一位 Employee 的扶養人,且每一位 Family 都必須為某一位,且只有一位 Employee 所扶養。
📝 此題為申論題,共 4 小題

小題 (一)

試以最適當且最少個關聯資料表(relation),來描述上述之實體關聯圖。需寫出該些關聯資料表的名稱、所含之屬性及主要鍵。(10 分)

思路引導 VIP

看到此題,應立即運用「ER 模型轉換為關聯綱目」的標準規則。先將強實體獨立建表;接著處理 M:N 關聯,必須獨立建表並納入兩端主鍵與關聯屬性;最後處理弱實體與 1:N 識別關聯,弱實體不需獨立的關聯表,而是直接將擁有者(Owner)的主鍵作為外鍵納入,並與自身的部分鍵組成複合主鍵。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用 ER 模型轉換關聯綱目的標準規則,判斷實體強弱及關聯基數(1:N 或 M:N)以決定表格的整併或獨立建立。 【詳解】 一、強實體轉換:

小題 (二)

對於上述之關聯資料表(relation),於撰寫程式時,那些屬性之間應設定為參考完整性限制(Referential integrity constraint),那些外來鍵屬性(foreign key)必須設為不可為空值(Non-Null)。(10 分)

思路引導 VIP

遇到 ERD 轉關聯綱目題目,首先將實體與關聯轉換為標準關聯表(Relation)。多對多關聯(Assignment)與弱實體關聯(Dependent)皆會產生外來鍵,接著依據實體完整性(主鍵不可為空)與依賴關係來判斷哪些外來鍵必須加上 Non-Null 限制。

🤖
AI 詳解
AI 專屬家教

【解題思路】先將 ERD 轉換為標準的關聯綱目(Relational Schema),再依據多對多關聯與弱實體的特性,界定參考完整性與 Null 限制。 【詳解】 已知轉換後的關聯綱目如下(主鍵加底線):

小題 (三)

找出修過名稱為‘John’開設所有課程並且都被當掉的學生

思路引導 VIP

這是一道經典的「全稱量詞(For All)」查詢題,在關聯代數中對應「除法(Division)」運算。遇到「所有」這類字眼,在 SQL 中通常有兩種解法:一是使用雙重 NOT EXISTS 將邏輯轉換為「不存在一門 John 開的課,該學生沒有被當」;二是利用 GROUP BYCOUNT,比較「學生被當掉的 John 的課程數」是否等於「John 總共開設的課程數」。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用關聯代數中的「除法(Division)」概念,處理「所有(For All)」的條件限制。 【詳解】 本題提供兩種常見解法,考試時擇一作答即可。

小題 (四)

列出所有學生的姓名與總學分數(CreditHour)與修過課程的平均分數

思路引導 VIP

看到題目要求「所有學生」與各種統計數值(總計、平均),應直覺聯想到需使用 LEFT JOIN 保留所有學生紀錄,並搭配 GROUP BY 分組。最後利用聚合函數 SUM() 與 AVG() 計算學分數與分數。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用 LEFT JOIN 確保涵蓋所有學生,並使用 GROUP BY 搭配聚合函數 SUM() 與 AVG() 進行計算。 【詳解】 已知:需查詢「所有學生」,因此應以 STUDENT 資料表為主體使用 LEFT JOIN,避免漏掉未修課的學生。

升級 VIP 解鎖