我们都知道遵循一些数据库范式,能够保证我们的数据库更加高效,不易出错,减少冗余,下面就用几个浅显易懂的例子简单介绍一下数据库设计的几个范式:
我们在图书馆有以下一组记录
书名 | 书编号 | 价格 | 作者一 | 作者二 | 借书人 | 城市 | 街道 |
范式一的原则:
1,每一条记录的不同字段不应该包含同一类型的数据。上面表中的作者一与作者二与这条规则相冲突,应该将作者独立成另外一张表。
2,每个字段只包含一个值。比如,我们不能把一本书的所有作者名称放在一个字段中。
3,每一条记录均需要有一个主键值。
根据范式一,我们要将上表拆分为2个表
表1:书名,书编号(主键),价格,借书人,城市,街道
表2,作者(主键),书编号
范式二的原则:
在范式一的基础上,将各条记录中可能会有冗余的字段独立出来,比如书名,书编号,价格是一组会重复出现的数据,故应该独立出来,还有借书人信息。经改进后:
表1:书编号,借书人编号
表2:书编号,书名,价格
表3:借书人编号,借书人,城市,街道
表4:作者,书编号
基本上符合范式二的设计已经可以了,若要更严格数据的冗余,可遵循范式三:将那些不依赖于主键,而是依赖于其它字段的信息放到另外一张表中,比如街道依赖于城市,可将表3拆分如下:
表3:借书人编号,借书人,街道编号
表5:街道编号,街道名,城市编号
表6:城市编号,城市名
也没时间去翻阅数据库理论书籍了,不知道以上我对范式的理解是否正确.