Schema的优化和索引 - 范式和非范式
2009-09-02 00:00:00 来源:WEB开发网有很多方法来展现给定的数据。从完全范式到完全的非范式以及介于两者之间。在符合范式的数据库中,每个事实展现一次并且仅仅展现一次而已。相反的,在非范式的数据库,信息重复或者存储在很多的地方。
如果你不熟悉范式,你应该加强学习了。关于范式,你可以通过一些书和网上资源来学习。在这里,我们主要介绍这一章中你应该明白的知识。让我们看看经典的例子,那就是employee,departments,和department heads.
EMPLOYEE DEPARTMENT HEAD
Jones Accounting Jones
Smith Engineering Smith
Brown Accounting Jones
Green Engineering Smith
这种设计问题在于当数据更改的时候,这数据模型就会变得不正常了。如果Brown接管了Accounting部门,我们必须更新多条语句来反映出这个改变,并且这些更新可能还使数据的状态不一致。如果Jones行的HEAD和Brown行的HEAD不同的话,没有方法知道到底那个HEAD是正确的。就像那句老话一样:一个人有两块表,就不会知道准确的时间。更进一步的说,没有员工的时候就不能展现DEPARTMENT.如果我们删除了全部员工,DEPARTMENT的信息也同样的被删除了。为了避免这个问题,我们把这个表分为EMPLOYEE和DEPARTMENT两个实体。结果为两张表:
EMPLOYEE_NAME DEPARTMENT
Jones Accounting
Smith Engineering
Brown Accounting
Green Engineering
DEPARTMENT HEAD
Accounting Jones
Engineering Smith
更多精彩
赞助商链接