DBMS中的传递依赖
什么是传递依赖
当间接关系导致函数依赖时,称为传递依赖。
如果 P -> Q 和 Q -> R 为真,则 P-> R 是传递依赖。
为了实现3NF,消除传递依赖。
示例
<MovieListing>
电影ID (Movie_ID) | 列表ID (Listing_ID) | 列表类型 (Listing_Type) | DVD价格 (美元) |
M08 | L09 | 犯罪片 | 180 |
M03 | L05 | 剧情片 | 250 |
M05 | L09 | 犯罪片 | 180 |
上表不是3NF,因为它具有传递函数依赖性:
Movie_ID -> Listing_ID Listing_ID -> Listing_Type |
因此,以下具有传递函数依赖性。
Movie_ID -> Listing_Type
上述说明关系<MovieListing>违反了第三范式 (3NF)。
要消除此违规,需要拆分表并删除传递函数依赖。
<Movie>
电影ID (Movie_ID)
列表ID (Listing_ID) | DVD价格 (美元) | |
M08 | L09 | 180 |
M03 | L05 | 250 |
M05 | L09 | 180 |
<Listing>
列表ID (Listing_ID)
列表类型 (Listing_Type) | |
L09 | 犯罪片 |
L05 | 剧情片 |
L09 | 犯罪片 |
现在上述关系处于规范化的第三范式 (3NF)。
广告