111年警察人員特種考試資訊管理人員三等資料庫應用
二、給予一關聯綱要 (Relation Schema) GROUND (property-id, county-name, lot-id, area, price, tax-rate),此關聯綱要記錄土地資料,包括財產編號 (property-id)、鄉鎮名稱 (county-name)、地號 (lot-id)、土地面積 (area)、價格 (price)與稅率 (tax-rate),主鍵為財產編號 (property-id),並給予一組功能依附性(Functional Dependencies){{property-id}→{countyname, lot-id, area, price, tax-rate},{county-name, lot-id}→{property-id, area, price, tax-rate},{county-name}→{tax-rate},{area}→{price}},關聯綱要 GROUND 是否為 2NF?如不是,會有何問題?請將 GROUND 正規化至 2NF,然後至 3NF。(25分) |
答:
功能相依性F:
{property-id}→{countyname, lot-id, area, price, tax-rate}
{county-name, lot-id}→{property-id, area, price, tax-rate}
{county-name}→{tax-rate}
{area}→{price}
(一)找出候選鍵
[方法一]
1.左有右無:找出最小性
採用左有右無求候選鍵不可或缺部分,左手邊出現 {property-id, county-name, lot-id, area},右手邊出現 {countyname, lot-id, area, price, tax-rate, property-id},此屬性無。
2.使用泛封閉集合推導出所有屬性:找出唯一性
無法找出候選鍵不可或缺部分,所以無法繼續。
[方法二]
因為 property-id→{countyname, lot-id, area, price, tax-rate},{county-name, lot-id}→{property-id, area, price, tax-rate},由此可知 property-id 及 {county-name, lot-id} 都能推導出所有屬性,所以它們是候選鍵。
(二)正規化
假設關聯綱要 GROUND 為 R(property-id, county-name, lot-id, area, price, tax-rate)。
1.property-id是候選鍵的情況:
(1)第一正規化(First Normal Form, 1NF):
紀錄中的每個欄位值皆為基元值 (Atomic value)。即不存在複合屬性 (composite attributes)、多值屬性 (multi-valued attributes)。所以 R 符合 1NF。
(2)第二正規化(Second Normal Form, 2NF):
一關聯為 2NF,若且唯若此關聯屬於 1NF,而且關聯中所有非鍵屬性 (non-key attributes) 皆完全功能相依 (total functional dependent) 於主鍵。即不存在部分功能相依 (partial functional dependent) 於主鍵的屬性。所以 R 符合 2NF。
(3)第三正規化(Third Normal Form, 3NF):
一關聯為 3NF,若且唯若此關聯屬於 2NF,而且關聯中所有屬性皆非遞移相依 (non-transitive dependent) 於主鍵。即不存在遞移相依於主鍵的屬性。因為 property-id→countyname 且 countyname→tax-rate,所以 tax-rate 遞移相依於 property-id,R 拆解如下:
R1(property-id, county-name, lot-id, area, price):
主鍵為 property-id,外鍵為 county-name→R2.county-name。
R2(county-name, tax-rate):主鍵為 county-name,沒有外鍵。
因為 property-id→area 且 area→price,所以 price 遞移相依於 property-id,R1 拆解如下:
R11(property-id, county-name, lot-id, area):
主鍵為 property-id,外鍵為 county-name→R2.county-name、area→R12.price。
R12(area, price):主鍵為 area,沒有外鍵。
(4)正規化處理的結果:
R11(property-id, county-name, lot-id, area):
主鍵為 property-id,外鍵為 county-name→R2.county-name、area→R12.price。
R12(area, price):主鍵為 area,沒有外鍵。
R2(county-name, tax-rate):主鍵為 county-name,沒有外鍵。
2.{county-name, lot-id}是候選鍵的情況:
(1)第一正規化(First Normal Form, 1NF):
紀錄中的每個欄位值皆為基元值 (Atomic value)。即不存在複合屬性 (composite attributes)、多值屬性 (multi-valued attributes)。所以 R 符合 1NF。
(2)第二正規化(Second Normal Form, 2NF):
一關聯為 2NF,若且唯若此關聯屬於 1NF,而且關聯中所有非鍵屬性 (non-key attributes) 皆完全功能相依 (total functional dependent) 於主鍵。即不存在部分功能相依 (partial functional dependent) 於主鍵的屬性。在 R 中,因為 county-name→tax-rate,有部分功能相依,拆解如下:
R1(property-id, county-name, lot-id, area, price):
主鍵為 {county-name, lot-id},外鍵為 county-name→R2.county-name。
R2(county-name, tax-rate):主鍵為 county-name,沒有外鍵。
(3)第三正規化(Third Normal Form, 3NF):
一關聯為 3NF,若且唯若此關聯屬於 2NF,而且關聯中所有屬性皆非遞移相依 (non-transitive dependent) 於主鍵。即不存在遞移相依於主鍵的屬性。 因為 {county-name, lot-id}→area 且 area→price,所以 price 遞移相依於 {county-name, lot-id},R1 拆解如下:
R11(property-id, county-name, lot-id, area):
主鍵為 {county-name, lot-id},外鍵為 county-name→R2.county-name、area→R12.area。
R12(area, price):主鍵為 area,沒有外鍵。
(4)正規化處理的結果:
R11(property-id, county-name, lot-id, area):
主鍵為 {county-name, lot-id},外鍵為 county-name→R2.county-name、area→R12.area。
R12(area, price):主鍵為 area,沒有外鍵。
R2(county-name, tax-rate):主鍵為 county-name,沒有外鍵。