《自己动手设计数据库》第11章 定义和建立业务规则

来源:互联网 发布:linux 删除php进程 编辑:程序博客网 时间:2024/06/06 01:55

第11章 业务规则

什么是业务规则

业务规则表示对数据库特定方面实施的某种形式的限制,比如特定字段说明中的元素和给定关系的特征。业务规则基于机构认知和使用其数据的方式建立。机构认知和使用其数据的方式则是从它运作或展开业务的方式中得出。

说句人话就是使用该数据库的机构自身限定的规则,需要数据库设计人员进行实现。

业务规则类型

只有2种,面向数据库面向应用程序

这两种业务规则都实施某种形式的限制且有效维持整体数据完整性,但是它们的区别在于所建立的地点和方式。

面向数据库

面向数据库业务规则规定的限制,可以在数据库的逻辑设计中建立。通过修改各个字段说明元素、关系特征或同时修改这两者,就可以实施给定限制。这些表述限制的语句就是面向数据库业务规则。

面向应用程序

面向应用程序业务规则规定的限制,不能在数据库的逻辑设计中建立,而是必须在数据库的物理设计和数据库应用程序的设计中建立。在后两个环境中,这些限制更为有效、更具意义。

这里只是介绍概念,具体实施就不是数据库设计者该干的事了,所以后面的介绍统一都是介绍面向数据库的业务规则


业务规则的分类

字段特有业务规则

这一类别的业务规则,施加限制的对象是特定字段说明中的元素。

如以下业务规则:

订单日期的表示为如下形式“October 28,2016”。

那么修需要修改字段说明中的显示格式

关系特有业务规则

这种业务规则施加的限制会影响到关系的特性。

如下面这两张表

STUDENTS

  • Student ID
  • Student Name

CLASSES

  • Class ID
  • Class Name

STUDENT CLASS

  • Student ID
  • Class ID

如果存在下面的限制:

每门课必须最少有50个学生,最多不超过100个学生。

那么关联表STUDENT CLASS和CLASSES中,CLASSES相对于STUDENT CLASS的参与度就是(50,100)。


定义和建立业务规则

前面介绍了定义,这里开始具体实施。首先是定义和建立字段特有业务规则,接着是关系特有字段业务规则,两者的执行步骤差不多。

定义和建立字段特有业务规则

  • 选取一个表

随便选哪张,因为每张表都要考虑。

  • 分别评审每个字段并判断它是否需要限制

与公司代表进行确认。

  • 为字段定义必要的业务规则

简单点说就是从代表的话中精简出明确的限制信息。

  • 修改相应字段说明元素,建立规则

根据3的结论对字段说明做出修改,注意,一个限制可能需要修改不止一个字段说明中的元素。

  • 选定测试该规则的操作

对该表进行增、删、改操作,看是否会触发该限制。

如,ORDERS(订单表)中规定代表订单数量的Amount最少为1件,最多为5件,那么在操作时,AMOUNT字段必须限制在一个范围内,操作也是,不能将Amount字段修改为超出该范围的限制。记住这些限制,接下来需要记录下他们。

  • 将该规则记录在业务规则规范表中

业务规矩规范表具有以下优点:

  • 可以将所有面向数据库的业务规则使用文档说明。
  • 可以将所有面向应用程序的业务规则使用文档记录。
  • 为记录所有业务规则提供一种标准方法。

业务规则规范表包含下列项:

  • 陈述(statement):描述业务规则本身。
  • 限制(constraint):简单说明该限制如何运用到相应表或字段。

例:AGENTS(经纪人)表中单一记录与ENTERTAINERS(明星)表中相关联的记录数不得超过25个。即,一个经纪人最多只能带25个明星。

  • 类型(type):指示该规则属于面向数据库面向应用程序类型。
  • 分类(category):指示该规则术语字段特有或关系特有。
  • 测试方法(test on):指示测试该业务规则所施加限制的方法(增、删、改)
  • 受影响结构(structure affected):根据业务规则的类型,该限制将影响某个字段或关系。此处指示该规则影响的字段名称或受影响关系中涉及的表名称。
  • 受影响字段元素(field elements affected):字段特有业务规则会影响到该字段说明的一个或多个元素。此处指示受该规则影响的元素。
  • 受影响关系特征(relationship characteristics affected):关系特有业务规则会影响到该关系的一个或多个特征。此处指示受该规则影响的特征。
  • 采取的措施(action taken):此处指示对字段说明的元素或关系示意图所做出的修改。

此处书上列出了一个表:

业务规则规范表

定义和建立关系特有业务规则

过程跟上面定义和建立字段特有业务规则差不多。

  • 选取一个关系

书上没说从哪里去寻找这个关系,我想就从我们前面画的示意图去寻找关系吧,这样应该不会漏掉。

  • 评审该关系判断它是否需要限制
  • 为该关系定义必要的业务规则
  • 修改相应关系特征,建立规则

具体示例看上面关系特有业务规则

  • 选定测试该规则的操作

跟前面一样进行增、删、改操作,看是否会触发该限制。

  • 将该规则记录在业务规范表中

同样记录在业务规则规范表中,表结构跟上面一样。


验证表

定义字段特有业务规则时,可能出现这样的情况:一条规则所施加的限制,为给定字段的值的范围定义了一组不同的有效值。通常,这组值包含的条目数量相对固定,值本身也很少变化。

举个例子就是CITYS(城市表),其中包含字段City Id,City Name字段等,值一般情况下都是不变的,而且是拿来被其他表引用作为外键的,如CUSTOMERS(顾客表)中的Address字段,就是CITYS的外键。

使用验证表支持业务规则

当一条业务规则要限制一个字段的值的范围时,可以使用验证表实施这个限制,然后该字段就会从验证表中的相应字段提取它的值。

具体需要两步:

  1. 定义受该规则影响的字段的父表和验证表之间的关系

一般情况下就是设置主键和外键

  1. 修改该父表中受影响字段的字段说明的值的范围元素

一般情况下就是修改:

删除规则为:限制,

参与类型为:父表为“强制”,验证表为“可选”

参与度为:父表为(1,1),父表中的一条记录必须与验证表中的一条记录相关联。验证表为(0,N),这里说N是因为一般情况下是没有限制最大值的,也没有要求验证表中记录必须被父表关联才能存在。

0 0