对数据库设计三大范式的理解

一点乱糟糟的前言

都说关系型数据库和面向对象的思想是一对双胞胎,深入理解这句话就会明白其中包含的意思了。
对于OOP来说,三大特点,封装继承,多态。这不是本文的重点,所以此处不详述。
对于关系型数据库来说,有六大范式,此处只谈前三大。
问题: 为什么OOP要提出三大特点和23中设计模式呢,关系型数据库又为什么要满足三大范式呢?

这个问题我隐约有所顿悟,但是难以用语言来回答。。。,大体来说,就是为了让他们是真正意义上的面向对象设计和真正意义上的关系型数据库。


三大范式

第一范式: 不能有重复的列
简单的说吧,是为了保证数据库结构清晰的第一层保障,也为了保障对象关系的清晰。每一列都有清晰的意义,不能从一列中再分从另外的几列

第二范式: 数据库非键字段必须依赖于主键字段
通俗来说就是,数据库必须有一个带头的,其他的列都必须是这一列的附属,即单独拿出其他列没有完整的意义,必须有对应主键参与才能意义完整。满足第二范式的前提是满足第一范式。

第三范式: 不能有传递依赖

满足第二范式的前提下, 如果数据库中有三列A, B,C,A是主键,则依赖关系只能是A->B和A->C,不能是A->B->C,也就是说其他所有键对主键的依赖必须是直接的,不能是间接的,也就是不能有中间依赖。

发布了71 篇原创文章 · 获赞 27 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/github_34777264/article/details/81589266