Domain: A, P, F, N
应当更好: Domain A: Active
Meaning
The CUSTOMER is currently involved in a purchasing relationship with our company.
Someone with which we are interested in P: Prospect
cultivating a relationship, but with whom we have no current purchasing relationship.
The CUSTOMER relationship has lapsed F: Former
---i.e., there has been no sale in the past 24 months.
The company has decided (for reasons we N: Never (do business with this guy)
might go on to describe) that no business will be done with this CUSTOMER.
属性域已经定义,这些定义是属性定义的重要组成部分。
4.5 数据类型与角色名
经常是模型中的几个属性通过相同的域来定义,换句话说,他们将有相同允许值,而不是相同定义。
通常通过关系把外键贡献给实体,IDEF1X提供角色名来允许相同属性的不同出现,来扮演不同角色(见第3章)。
考虑图4.1中的例子,我们看到FOREIGN-EXCHANGE-TRADE同CURRENCY间有两个关系。
Figure 4.1: Currency Example.
CURRENCY的键是\(我们感兴趣的有效货币标识符),从关系中可以看到\和\。
我们看到CURRENCY的标识符(the \用于识别两种货币中的一种,其中一个表示买叫\,另一个表示卖叫\,这些是角色名名,我们把\和\看作是\的数据类型,但它们与\是不同的。
同一时间,同一汇率下交易同一种货币是愚蠢的,因此,在每一次交易中 (FOREIGN-EXCHANGE-TRADE的实例) \和\必须
18
是不同的通过给不同定义两个角色名,可以获是两个不同的货币代码。
Attribute/Rolename Attribute Definition
The unique identifier of a CURRENCY. currency-code
The identifier (\of the bought-currency-code
CURRENCY bought by (purchased by) the FOREIGN-EXCHANGE-TRADE.
The identifier (\of the sold-*currency-code
CURRENCY sold by the FOREIGN-EXCHANGE-TRADE.
买、卖代码的定义和域是基于\的, \叫基本属性base attribute。
循环定义,如果你打开字典,如Webster's韦氏字典,时常会发现这样的情况:
TERM-1 Definition includes reference to, or is based on TERM-2. TERM-2 Definition includes reference to, or is based on TERM-3. TERM-3 Definition includes reference to, or is based on TERM-1.
如果不仔细些,实体和属性的定义也可能发生这样的情况,例如:
CUSTOMER: Someone who buys one or more of our PRODUCTs. PRODUCT: Something we offer for sale to CUSTOMERs.
上面这种情况,只要小心是可以避免的。 在定义实体和属性时,都应加注释,例如:
“A CURRENCY-SWAP is a complex agreement between two PARTYs in which they agree to exchange cash flows in two different CURRENCYs over a period of time. Exchanges can be fixed over the term of the swap, or may float. Swaps are often used to hedge currency and interest rate risks.”
上例中黑斜体标注的概念是没必要,因为,只要需要就可以查到。
要是习惯使用非实体名和属性名的概念(如,通用企业概念),应提供它们的基本定义, 可使用从模型中分离出来的使用概念的术语表,如上面黑斜体表示的通用企业概念。
If it will be convenient to use terms which are not the names of entities or attributes, (e.g., common business terms), it is a good idea to provide base definitions of them, and refer to these definitions as would be done for references to entity or attribute definitions. A glossary of commonly used terms, separate from the model, can be used. Such common business terms are highlighted with bold-italics, as in the above passage.
It may seem that a strategy like this will lead to a lot of flipping back and forth among definitions, and it will. The alternative, however, is to completely define each term every time it is used. If these \definitions\appear in many places, they will have to be maintained in many places, and the probability that a change will be applied to all of them at the same time will be very small.
开发一个通用企业概念术语表可服务于几个目的,它是模型定义的“基础”,可帮助人们交流和理解模型。
19
4.6 定义与业务规则
业务规则是完整信息模型的一部分,许多业务规则可以从实体、属性、域的定义中找到。 图4.1中的CURRENCY实体,可被定义为“所有公认流通的有效货币”,也可定义为“公司日常业务中使用的货币”,这两个定义是不同的。
后一种情况,是一个关于“政策纲领policy statement”的业务规则。 这个规则体现在\的域中,它把\限制在可用货币的子集中,这个业务规则的维护变成了对CURRENCY 表的维护,要允许或禁止交易的货币,建立或删除实例即可。
\和 \属性的域也受到类似的限制,它依赖其它属性实际使用的值。重要的是理解这儿涉及到的基本原理,域需要在属性的定义中找到(因为在IDEF1X标准处理中没有直接给出)。
4.7 同义词、同音异义字与别名
不是每一个人都说同一种语言,在名字的使用中并不总是准确的。
同义司 synonym 是已有名字的对象的另一个名字 同名异物homonym 两个不同的对象有相同的名字。 别名alias 对象的同义词,通常是业务领域中通用的。 由于在信息模型中实体和属性用它们的名字来标识,我们需要一套解决同义词和同名异物词的方法体系。
在逻辑层次上,模型中的每个数据对象(实体或属性)都必须指定一个唯一的名字。
5 一些模型细节
5.1 更多实体与属性
在第3、第4章中,我们引入了ERwin语言,并提供了简要介绍。本章我们对第3、第4章作一个简要概述。
? 实体是信息模型的基本建筑块,他们有称着属性和通过关系连接的特性;实例是实
体的单个具体取值;键属性标识实体,如果需要,实体能够被收集进入概括分层结构。
? 属性有域,域描述了允许属性使用的值或值的范围。 ? 关系连接两个实体,并且有叫做基数的特性,基数表示两个实体中的每一个有 “多
少”被涉及 (如:一个实体A与一个或多个实体B关联,且实体B精确地关联一个实体A),关系从父实体贡献外键到子实体;外键可能有角色名。 有关标题: 实体类型
概括分层结构与继承
20
完全与不完全分类结构 何时形成概括分层结构 更多属性 转置实体属性 导出属性
实体类型
第3章介绍了独立与依赖实体,这里再次定义他们:
独立实体:它的标识不依赖于模型中任何其他实体的实体。
依赖实体:它的存在和对它的标识都依赖于模型中其它实体的实体。
有几种类型的依赖实体,用ERwin来建立信息模型,你并不真正地需要知道差别的细节,除了对它们的好奇外,这里是一些定义:
实体类型 描述 特征实体: 特征实体表示一组属性,它们在一个实体中多次重复,并且不能由其它实
体直接标识。例如:假若一个人有许多嗜好,嗜好就被说成是人的特征。见图3.8,这儿再举一例。
Figure 5.1: Example of characteristic entity. 联合实体: 联合实体记录两个以上实体间的关系。例如,一个人有多个地址,一个地
址可被多个人共用,需要地址-使用实体来人和地址间的关系。在这个例子中,地址-使用是联合实体,联合实体携带有关关系信息,本章后面我将看到更熟悉的例子。
Figure 5.2: Example with associative entity.
指示器实体: 指示器实体除了没有自己的属性外,与联合实体相似。在前面例子中,如
果除了保存人和地址的标识信息外,不保存别的信息,那么地址-使用就是一个指示器实体(从人的方面看,它 “指定”地址;从地址方面看,它 “指定”人)。
分类实体: 在第三章中我们介绍了分类实体,这些是子类关系下的依赖实体。分类实
体是在子类关系中,超类的子类。紧接着,我们将更详细地包括概括分层结构。
概括分层结构与继承
在第3章(图3.11)中,我们提供了下列概括层次结构的例子。
21
Figure 5.3: Example of generalization hierarchy.
让我们看看创建过程,推测模型模型的开发,我们已找到下列三个实体:
Figure 5.4: Example accounts.
当我们在开发不同类型三个帐户的模型时,也许已认识了图5.4中的一些类似的东西,我们要做的是,把这三种类型的帐户中的共有属性收集在一起,放入层次结构中。
这些公共属性将移动到叫做类属父(generic parent)的更高层次的实体中,那些专有属性仍然留在类实体(category entity)中。
假定我们还没有为这三类帐户选择物理系统键,这里,我们工作在逻辑,或概念层上。 首先,我们将形成类属父、帐户ACCOUNT和键”account-number”,为了区分ACCOUNT的类型,增加一个属性”account-type”作为类甄别器,它的值将告诉我们ACCOUNT所属的类,然后我们增加三个类,CHECKING-ACCOUNT,SAVINGS-ACCOUNT,和 LOAN-ACCOUNT。
其次,我们比较三分类的属性,每一个都有”open-date”,如果三种类型的”open-date”是相同的(我们假设它们是相同的),我们就把它们移到类属父,同时从类中删除它们。以同样分析方法来移动”account-review-date”(帐户-复核-日期)。
三类中都有结算,CHECKING-ACCOUNT中有两个 (“核对”和”有效”),SAVINGS-ACCOUNT 有一个,LOAN-ACCOUNT有两个,我们应当把它们移到类属父中吗?
再次,回答取决于它们的定义,”checking-balance,” “savings-balance,” 和 “current-loan-balance”含义是乎是相同的,但仔细分析后会发现,”checking-balance,” “savings-balance,”是相同的,而”current-loan-balance”却差别很大。
几乎所有属性是相同的,而只有少数不同,在这种情况下有两个选择:要么把这些属性留在类中;要么移动相同的属性,留下不同的属性。
这将意味着,没有移动的类的类属父中该属性值是NULL,非-键属性允许为NULL。
22