科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字: SQL Server

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

在数据库的设计阶段,数据库正规化过程中的一系列步骤指引我们分析和设计数据间的关系。本文向我们解释了为什么第三范式在某些时候并不是十分可行的,以及更倾向于一种混合的方法来实现数据库正规化的操作。

数据库组织过程将数据库正规化称之为指引我们分析和设计数据关系的一系列步骤,正规化的目的就是为了减少冗余数据,降低数据不一致相关性。

Dr. E. F. Codd最早提出了正规化的一系列准则。他提出的准则就是我们熟知的“范式”。这些范式表格是按序逐一建立的,从顶层的全局数据组织开始,然后考虑更细小的准则。

为了阐述这些表格的作用,让我们来看一个实例。某个电子表格中的数据字段是用来跟踪汽车销售情况的。我们将要分析表格中的数据并对数据表进行正规化操作。表1就是一个在分析中要使用的实例表结构。

TransactionNumber

VIN1

CarType1

VIN2

CarType2

VIN3

CarType3

OwnerName

OwnerState

CarPrice1

CarPrice2

CarPrice3

TransationDate

第一范式表格:

下面将是操作过程的第一步。这一步的目标就是消除数据表格中的非原子型字段。使得在表格中的每个字段都是不可再分,并且表格具有唯一的主关键字,再另外为其它的相关数据创建一个表格。根据“非原子型”标准,我们查找哪些数据字段包含多个值,例如全名等。

通过观察数据表格,我们可以更改以下几处。首先,OwerName是一个字段,事实上我们可以将之拆分为owner first name 和last name 两个字段。其次,该数据表没有指定主关键字。TransactionNumber字段在数据表中是唯一的,因此我们可以指定TransactionNumber作为主关键字。结果如图2:

TransactionNumber

VIN1

CarType1

VIN2

CarType2

VIN3

CarType3

OwnerFirstName

OwnerLastname

CarPrice1

CarPrice2

CarPrice3

TransationDate1

TransationDate2

TransationDate3

第二个范式表格:

我将创建单独的表格来保存那些不断重复出现的数据。一旦创建这些表格,就可以使用外部键约束来反映表格间的关系。同时,表格中的每一个非主关键字字段就可以看作是描述主关键字的属性。在执行这条规则之前,表格必须已经严格按照第一个范式进行了处理,如图3:

AutoSales

TransactionNumber

OwnerFirstName

OwnerLastName

 

AutoSalesDetail

TransactionNumber

SequenceNumber

TransactionDate

VIN

CarType

CarPrice

 

 

在第一次范式表格上再进行第二次范式操作,操作的结果是我们得到了两个表。其中AutoSales表包含的是关于销售交易和顾客的信息,而AutoSales表包含的是交易中销售车辆的信息。就像你看到了那样,通过这样的操作,我们就不需要在第一种范式表格中某些字段的重复数据。

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

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

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