資料庫基礎

員工表格(員工編號, 姓名, 部門代碼, 部門名稱)的主鍵為員工編號,每個欄位都只有一個值。函數相依為 員工編號 → 姓名、員工編號 → 部門代碼、部門代碼 → 部門名稱。此表格的正規化形式,下列何者正確?

  1. A屬於第二正規化,但不屬於第三正規化
  2. B屬於第一正規化,但不屬於第二正規化
  3. C屬於第三正規化
查看答案與解析

正確答案:A. 屬於第二正規化,但不屬於第三正規化

每個欄位都只有一個不重複的值,因此屬於第一正規化。主鍵只有員工編號一個欄位,不可能出現只相依於主鍵一部分的部分函數相依,因此也屬於第二正規化。然而,部門名稱是像 員工編號 → 部門代碼 → 部門名稱 這樣,經由不是主鍵的部門代碼而決定的遞移函數相依,因此不屬於第三正規化。照這樣下去,同一部門每位員工的資料列都會重複記錄部門名稱,變更部門名稱時就必須改寫多筆資料列。把部門表格(部門代碼, 部門名稱)分出,員工表格只保留部門代碼,就成為第三正規化。此時員工表格的部門代碼,成為參照部門表格的外鍵。

  • A. 正確。存在 部門代碼 → 部門名稱 的遞移函數相依,因此不屬於第三正規化。
  • B. 主鍵只有一個欄位,沒有部分函數相依,滿足第二正規化的條件。
  • C. 部門名稱經由不是主鍵的部門代碼而決定,存在遞移函數相依,因此不屬於第三正規化。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  1. 在以讀取與彙總為主的資料庫中,有時會刻意把正規化後的表格合併成一個,讓相同資料重複保存(反正規化)。此設計的優點與缺點組合,下列何者正確?
  2. 在E-R圖中,學生與課程之間有「一位學生修多門課,一門課有多位學生修」的多對多關係。以關聯式資料庫的表格實現此關係的適當方法是下列何者?
  3. 在帳戶表格中開始一筆交易,執行從帳戶A的餘額減去300的UPDATE,以及在帳戶B的餘額加上300的UPDATE。之後執行ROLLBACK而非COMMIT。帳戶表格會變成怎樣?
  4. 在交易應具備的ACID特性中,「從帳戶A扣款並存入帳戶B的轉帳處理,即使途中發生故障,也只會是兩者都完成或完全不進行」的性質是下列何者?
  5. 庫存表格中某商品的庫存數為10。交易T1讀出庫存數後寫入減3的值,T2讀出庫存數後寫入減5的值。若不加鎖,依T1讀取、T2讀取、T1寫入、T2寫入的順序執行,最後的庫存數為多少?