数据库设计时需要考虑的 三大范式

来源:互联网 发布:db2创建序列的sql 编辑:程序博客网 时间:2024/05/16 17:14

第一范式(1NF):列的原子性,其实就是每个字段要保证是存储信息的最小单元,例子我们手机通讯录的数据表设计如果只有姓名,住址,电话三项的话,万一人家有家庭电话,手机号码,没准还有俩,单纯一个电话并不能概括要表达的信息。

第二范式(2NF)首先每个表只能有一个主键,(但是主键可以由多个字段表示),而且表中的非主键字段必须和主键保持完全依赖的关系。

假设我们在设计订单的表的时候,我们需要考虑orderid(订单id),poductid(产品id),price(单价),count(数量),discount(折扣),sumprice(总价),(productname)产品名字这些因素。首先我们要清楚一个订单能够订购多种产品,所以orderid不足以成为主键的,他要跟productid联合起来成为联合主键,这样才能唯一标识这个订单,然后我们再考虑依赖关系,真正一个与一个订单关系特别紧密的是count,discount,而价格和产品名字和productid紧密相连,所以,我们设计两个表orderdetail(orderid,productid,count,discount) product(productid,productname,price)

第三范式(3NF)消除传递依赖,就是主键与非主键的依赖关系必须体现在当前表上,不能跟别的表产生依赖关系

就是有一个部门表,有部门id,部门名字,部门地址。。。。。还有一个员工表,有员工id,员工名字,部门id,。。。。然后这员工的表中就不能再加入与部门相关的信息了,减少数据的冗余


0 0
原创粉丝点击