第三范式 (3NF)
dbmsdatabasemysql
什么是 3NF?
规范化的第三步是 3NF。
只有当关系符合 2NF 且没有传递函数依赖关系时,表才符合 3NF
让我们看一个例子 −
示例(表违反 3NF)
<MovieListing>
Movie_ID | Listing_ID | Listing_Type | DVD_Price ($) |
0089 | 007 | Comedy | 100 |
0090 | 003 | Action | 150 |
0091 | 007 | Comedy | 100 |
上表不属于 3NF,因为它具有传递函数依赖性 −
Movie_ID -> Listing_ID Listing_ID -> Listing_Type |
因此,Movie_ID -> Listing_Type,即传递函数依赖。
示例(转换为 3NF 的表)
要以 3NF 形式形成,您需要拆分表并删除传递函数依赖。
<Movie>
Movie_ID | Listing_ID | DVD_Price ($) |
0089 | 007 | 100 |
0090 | 003 | 150 |
0091 | 007 | 100 |
<Listing>
Listing_ID | Listing_Type |
007 | Comedy |
003 | Action |
007 | Comedy |
让我们再次看看结果,这是一个符合 3NF 的表 −