一般稍微正规一些的软件公司会有专门人负责数据库的设计工作,但仍然经常看到有些数据库设计惨不忍睹,给开发人员也造成了很大麻烦,所以我觉得有必要强调与数据库设计有关的“范式”,现在也有人提出“反范式”,个人认为若没有深刻理解好范式用反范式很难想象后果会是多么糟糕。
表的第五范式在有关数据库设计的许多书籍中都有说明,在此就不再赘述。
如下是前四范式的描述:
第一范式
表中的每一行列位置只存在一个值,永远不会是一组值。
具体为:若每个单元中都只有一个值,永远不会有一组值,则该表使用的是 第一范式 。使用第一范式的表不必满足更高的范式的标准。
第二范式
不是键的一部分的每一列都依赖于该键。
具体为:若每个不是键一部分的列都依赖于整个键,则该表使用的是第二范式 。
当一个非键列依赖于组合键的一部分 时,违反了第二范式。
第三
每个非键列都独立于其它非键列,并依赖于该键。
具体为:若每个非键列都独立于其它非键列,且只依赖于键,则该表使用的是第三范式。
第四
没有一行包含有关实体的两个或更多个独立多值事实。
具体为:若没有一行包含有关一个实体的两个或更多个独立的多值事实,则该表使用的是第四范式。
设计数据库的一个良好策略是将所有数据安排在使用第四范式的表中,然后决定该结果是否提供了一个可接受的性能级别。如果没有,则可将数据重新安排在使用第三范式的表中,然后重新评价性能。