数据库三范式

范一:字段是原子性的

 

 

范二:在范一的基础上,表的其他属性完全依赖于主关键字(否则应该分离出新表)

不完全依赖例子:

考虑一个订单明细表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。 
因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合 2NF。

 

范三:在范二的基础上,表间不存在传递依赖(或者说表间不包含其他表已包含的非主关键字)

传递依赖例子:

学生表(学号, 姓名, 年龄, 所在学院, 学院联系电话),关键字为单一关键字"学号"; 

存在依赖传递: (学号) → (所在学院) → (学院地点, 学院电话) 

值得一提的是:这里的 (学院地点, 学院电话)通过(所在学院)传递依赖,也是完全依赖于(学号)的

 

posted on 2017-04-06 21:53  斩斩  阅读(100)  评论(0)    收藏  举报