免費開始練習
hce_kmu 115年 計算機概論與程式設計

第 24 題

Consider the following relation: Enrollment(StudentID, StudentName, CourseID, CourseName, InstructorName). Assume 1) Each student has only one StudentName; 2) Each course has only one CourseName; 3) Each course is taught by only one InstructorName; 4) A student can enroll in multiple courses.Which of the following decompositions correctly converts the relation into Third Normal Form (3NF)?
  • A Enrollment(StudentID, CourseID)
  • B Enrollment(StudentID, StudentName, CourseID), Course(CourseID, InstructorName)
  • C Student(StudentID, StudentName, CourseID), Course(CourseID, CourseName, InstructorName)
  • D Student(StudentID, StudentName), Course(CourseID, CourseName), Instructor(InstructorName, CourseID), Enrollment(StudentID, CourseID, InstructorName)
  • E Student(StudentID, StudentName), Course(CourseID, CourseName, InstructorName), Enrollment(StudentID, CourseID)

思路引導 VIP

想像一下,如果你在一張報名表上發現,每當同一個學生選一門新課,你都得重複手寫一次他的姓名;或者每當同一門課多一個人選,你就要重複寫一次該課的教授是誰。為了避免這種重複勞動(資料冗餘),你會如何把這張大表拆成幾張互相關連的小表,讓「學生個人資料」、「課程與老師資訊」以及「誰選了哪門課」這三件事互不干擾卻又能查到完整資訊呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你精準地掌握了資料庫正規化的核心邏輯。這道題目要求將關聯表轉換為第三正規化 (Third Normal Form, 3NF),這不僅考驗你對規範定義的理解,更測試你從文字描述中抽離出函數相依 (Functional Dependencies) 的能力。

函數相依與正規化拆解

從題目給出的假設中,我們可以整理出三個關鍵的函數相依:首先是 $StudentID \rightarrow StudentName$;其次是 $CourseID \rightarrow CourseName$ 與 $CourseID \rightarrow InstructorName$。由於一名學生可以選修多門課程,原始資料表的「主鍵 (Primary Key)」必須是 $(StudentID, CourseID)$ 的組合。然而,$StudentName$ 只相依於部分主鍵(學號),而課程名稱與教師姓名也只相依於課程代碼,這造成了部分函數相依 (Partial Functional Dependency)。為了達到 3NF,我們必須消除這些相依性,將學生資訊、課程資訊分別獨立成表,並透過一個關聯表(Enrollment)記錄兩者的對應關係。

▼ 還有更多解析內容

🏷️ 相關主題

計算機組織結構與資料儲存原理
查看更多「計算機概論與程式設計」的主題分類考古題