第一范式:字段原子性,每个字段都不可再分,只代表一个寄义,不能记录两个或两个以上寄义的值。
第二范式:满足第一范式的条件下,有团结主键的表,非主键字段都依靠全部团结主键,即不能有非主键只依靠团结主键中的部分主键。
如果存在个别非主键依靠于团结主键中的部分主键,则阐明表还可以再拆分,可以将这个非主键和这些被依靠的部分主键拆到另外一张表中。
第三范式:满足第二范式的条件下,全部非主键都只依靠于主键而不依靠非主键。
如果一个非主键依靠另一个非主键,则阐明表还可以再拆分,可以将这个非主键和它所依靠的非主键拆到另外一张表中。
总结
可见三大范式的目的是将表最大化精简,这样做的好处是减少数据冗余和尽大概地做到数据同等性。
想象一下,如果代表同一个意义的字段在多个表中都有存储,那不就是一种数据冗余码,这种数据冗余也给数据的同等性提高了难度。修改一个字段值,必须把全部相关表的相关字段都修改一遍,如果有一个表修改失败就造成多个表中代表同一寄义的多个字段值数据不同等。
现实业务场景中,也不会完全按昭三大范式去设计数据库,因为太严酷的话,会降低数据查询的性能。一个查询要查出想要的业务数据,通常要联表查询才能查出全部必要的数据,这肯定会降低数据库查询性能。以是为了提高查询服从也会违反第三范式,故意去设置一些冗余字段,比如按照第三范式一个表原来应该只记录了人员的id,但为了减少连表查询,增长了冗余字段;人员姓名。电话等。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |