科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道数据库正规化设计实用技巧

数据库正规化设计实用技巧

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在数据库的设计阶段,数据库正规化过程中的一系列步骤指引我们分析和设计数据间的关系。

作者:Builder.com.cn 2007年2月8日

关键字: SQL Server

  • 评论
  • 分享微博
  • 分享邮件

第三范式:

这是我对样例表格作的最后一次标准化操作。通过这次操作要达到的目的是消除表格中那些不完全函数依赖主关键字的字段。我们必须确保表格中的字段都是完全依赖于主关键字的。如图4:

 

AutoOwners

OwnerID

OwnerFirstName

OwnerLastName

Transaction

TransactionNumber

OwnerID

TransactionDetail

TransactionNumber

SequenceNumber

TransactionDate

CarPrice

VIN

Automobile

VIN

CarType

当实施完第三范式操作后,将会产生四个表(事实理论上还可以得到五个表)。由于在Transactions表格中,顾客姓名字段并不是完全函数依赖于主关键字,所以我将它从Transactions 表中移去,并重新为它建立了一个AutoOwners表。在AutoOwners表中我创建了一个主关键字并通过它与Transactions表产生关联。

我们知道CarType字段与TransactionDetail表中的主关键字没有明确的依赖关系,但是VIN字段却与TransactionDetail表中的主关键字存在着这种依赖关系。由于CarType的依赖关联与VIN 数值,我单独创建了一个Automobiles表格,将VIN作为这个表格的主关键字。同样,CarType作为一项查询数据。事实上,我同样可以为它创建一个单独的表格,这里为了简化操作,就没有考虑。

正规化的一种替代方案

你是否总是按照第三范式的要求处理你的数据库呢?忠实的支持者们认为,按照第三范式的要求对数据库进行处理是十分重要,它将使得数据库从根本上和理论上都是一个合理的结构,并减少空数据和冗余数据,从而节省存储空间。

根据我的经验,依照第三范式建立的数据库并不是非常的实用。依照第三范式建立起的数据表在执行数据恢复操作时常常会失败,而数据库恢复恰恰是我们要经常进行的操作。通过完全规范化方法(大多数的数据库管理员认为通过第三范式建立的数据库是完全规范化的)产生的一个问题就是会得到许多的表格,所以当进行查询操作时就必须要使用更多的连接语句。这就会给开发人员带来更多的不变,并且导致数据查询的时间增多。

我认为最好的解决方法就是采用折中方案。我一般会按照类似第三范式的要求来设计数据库。在这类数据库中,着重于数据库的查询,并且在必要的时候可以反正规化操作。这种所谓的反正规化操作使我们节省了大量宝贵的CPU资源。当然,我们也要为性能的提升付出相应的代价,代价就是你要使用更多的数据空间(数据冗余的存在)。

Tim Chapman先生在一家位于Louisville, KY的银行从事数据库管理员的工作,拥有7年的IT工作经验。他还通过了微软的SQL Server 2000SQL Server 2005认证。

责任编辑:张琎

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章