一、 属性的解释
属性是一则相对独立的信息,其值用以识别、描述、评估实体实例。
二、属性类型
概念级属性必须是对业务起着基本且又关键影响的概念。一般情况下,属性不被当作概念,但这取决于业务需求,允许例外。以前,我曾为一家通信公司提供数据建模服务,在其他应用中电话号码通常被视为属性,但它对于这家通信公司的业务却非常重要,所以电话号码被表示成了概念数据模型中的概念。
逻辑模型中的属性则描述的是业务特征。每个属性对于业务解决方案都有不同程度的贡献,并且与任何软、硬件技术无关。例如,“冰淇淋口味名”就是一则逻辑级属性,因为它对业务解决方案有重要意义,而且并不取决于到底存储在纸质文件中,还是存储在高速数据库中。
与物理数据模型对应的属性可以被理解为一个物理“容器”,用来存储数据,属性“冰淇淋口味名"在RDBMS中可以被表示为ICECRM表中的ICECRMFLRNAM列,或者在MongoDB数据库中被表示为IceCream集合中的字段IceCreamFlavorName .
三、域的解释
域是某一属性所有可能取值的集合。域中往往还包含一组验证标准,使得域可以被多个属性使用。
如果属性与域相关联,那么该属性的取值绝对不允许超出该域,域中的值可以由一组特定的数据列表指定,也允许由一组规则指定。
以下为3种基本的域类型:
①格式域将数据指定为数据库中的标准类型,如整型(nteger)、字符型(Character(30))、日期(Date)等都是格式域。
②列表域类似于一个下拉列表,它由一个可选的有限值的集合组成,列表域是格式域的精简,如“订单状态代码”的格式域可以被置为Character(10),在此基础上该域可以由一个(Open、Shipped、Closed、Retured)列表域进一步精简。
③范围域的设置要求取值介于最小值与最大值之间,例如,“订单交付日期”必须为从今天到未来3个月中的某天。与列表域类似,范围域也是格式域的精简。
基于以下几个原因,域是非常有用的。
① 插入数据前,通过域的检查来提高数据质量。这是域存在的主要原因,通过限定属性的可能取值来降低脏数据进入数据库的可能性。例如,每一个表示金额的属性被设置为“数量域”,该域要求数字的长度上限为15且包括小数点后的两位,显然这是表示货币数额很好的一种方法,“销售总额”若被设置为“数量域”,则不允许如R2D2这样的值被添加。
② 数据模型的交流性更强。当我们在数据模型上设置了域,就意味着数据模型的一个属性必须具备一个特定域的特征,这样数据模型就变成更容易被理解的交流工具。例如,我们可以让“销售总额”“净销售额”“标价销售额”3个属性都可以共享一个“数量域”,进而共享域的特征,它们的取值都被限定为“货币”。
③ 使得新建模型、维护现有模型变得更有效率。当一位模型构建师开始一项新工程时,可以使用一组标准域来节省时间,而无需重新创建。例如,所有与数量有关的属性,都可以同时与数量域关联,这样可以极大节省分析、设计时间
【备注说明】属性就是用来描述实体的字段,域就是枚举值,是属性的范围约束。