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

第一范式(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,。。。。然后这员工的表中就不能再加入与部门相关的信息了,减少数据的冗余


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值