首页 百科知识 -模型的基本概念

-模型的基本概念

时间:2022-10-17 百科知识 版权反馈
【摘要】:如商品包括商品名称、颜色、尺码、单价等属性,采购订单包括订单号、下单日期、供应商、采购员、送货地址等属性。商品中的商品名称、颜色和尺码3个属性组合在一起就构成商品的主键,采购订单中订单编号能唯一标识采购订单,也是主键。所有商品的名称构成属性“商品名称”的域。一个联系涉及的实体集个数,称为该联系的元数或度数。如果min为0,表示只有部分实体参与联系,称为可选参与。

6.2.1 E-R模型的基本概念

E-R模型的基本元素是实体、联系和属性。

(1)实体

实体(Entity)是指客观存在并可相互区别的事物,通常,一个实体就是一个数据对象。如一张采购订单、一个销售分店、一件商品。

实体集(Entity Set)是指同一类实体构成的集合。如所有的商品构成一个商品实体集,所有的采购订单构成一个采购订单实体集。

(2)属性及其分类

实体的某一特性称为属性(Attribute)。如商品包括商品名称、颜色、尺码、单价等属性,采购订单包括订单号、下单日期、供应商、采购员、送货地址等属性。

在实体中,能够唯一标识实体的属性或属性集称为实体标识符,有时也称为关键码(Key)或主键(Primary Key)。商品中的商品名称、颜色和尺码3个属性组合在一起就构成商品的主键,采购订单中订单编号能唯一标识采购订单,也是主键。

属性域(Domain)是属性的可能取值范围,也称为属性的值域。如尺码的取值范围是{S,M,L,XL,XXL}。所有商品的名称构成属性“商品名称”的域。

属性根据类别和取值特点分别可分为简单属性和复合属性,单值属性和多值属性。

简单属性是不可再分割的属性。如商品颜色、商品尺码、采购日期等都是不可再分解的,属于简单属性。复合属性是可再分解为其他属性的属性。如地址信息通常包含了邮编、省、城市等信息,这种表示地址的方法是一般应用中经常用到的,然而如果应用系统中需要按城市分布作为条件进行某种统计分析时,就需要对地址信息进行分解,将城市单独作为一个属性来处理。复合属性是否需要按分解后的属性进行描述,要视应用系统的具体要求而定。

单值属性指的是同一实体的属性只能取一个值。如一张采购订单的采购日期、供应商、采购员等属性只能取一个值,属于单值属性。多值属性指同一实体的某些属性可能取多个值。如一个商品有多个不同颜色和尺码,因此,对于商品而言,颜色和尺码就是多值属性。对于采购单价,不同季节可能有所不同,也属于多值属性。

多值属性通常会产生大量的数据冗余,所以应该对多值属性进行转换。通常有两种转换方法:① 将原来的多值属性用几个新的单值属性来表示;② 将原来的多值属性用一个新的实体类型表示。

有些属性的值可从其他属性的值推导或计算出来,这类属性称为派生属性(Derived Attribute)。如采购金额可从采购数量和单价计算而得到。为了避免潜在的丢失信息,派生属性在概念模型中必须可见,在进行逻辑模型设计时再考虑派生属性的表达。

(3)联系及其分类

联系(Relationship)表示一个或多个实体之间的关联关系。如“某个采购员向某个供应商下达了某份采购订单”表示“采购员”、“供应商”、“采购订单”等实体之间有联系。

一个联系涉及的实体集个数,称为该联系的元数或度数。通常,一个实体集内部实体之间的联系,称为一元联系,也称为递归联系。两个不同实体集实体之间的联系称为二元联系。三个不同实体集实体之间的联系称为三元联系,以此类推。

递归关系是一个存在于相同实体的两个属性中的环状关系。递归关系支持数据按照层次结构存储和读取,这一特点使得递归关系非常有用。如部门与其上级部门就构成一个递归关系。

在实际应用中,二元联系最普遍。根据参与联系的实体的数目,可将两个实体集之间的二元联系分为三类:一对一联系(1∶1)、一对多联系(1∶n)、多对多联系(m∶n)。同一个实体集内的各实体之间也可以存在一对一、一对多、多对多的联系。

一对一联系:对于实体集A与实体集B,如果A中的每一个实体在B中至多有一个实体与之联系,反之亦然,则称实体集A与B具有一对一联系,记为1∶1。如一个顾客会员只有一个卡号,而一个卡号只属于一个会员,因此,会员与卡号之间就是一对一联系。又如,一个销售分店只有一个分店经理,而一个员工至多是一个分店的经理,这样分店与分店经理是一对一联系。

一对多联系:对于实体集A与实体集B,如果A中的每一个实体在B中有任意n个实体与之联系,而B中的每一个实体至多与A中的一个实体有联系,则称实体集A与B具有一对多联系,记为1∶n。一对多联系是最常见的联系,如一个供应商可以有多张订单,一张订单只对应一个供应商,因此,供应商与订单之间就是一对多联系。一个采购员可以编制多张采购订单,而一张采购订单只能由一个采购员编制,那么,采购员与采购订单之间又是一个一对多联系。

多对多联系:对于实体集A与实体集B,如果A中的每一个实体在B中有任意n个实体与之联系,而B中的每一个实体也与A中的任意m个实体有联系,则称实体集A与B具有多对多联系,记为m∶n。如一个分店可有多种商品,而一种商品又可在多个分店销售,因此,分店与商品之间构成一个多对多关系。

在数据库设计过程中,应该尽量避免多对多联系,因为多对多关系存在如下问题:具有不必要的重复数据;具有大量的冗余数据。

如图6-1所示是一对一、一对多和多对多联系的示意图

img87

(a)一对一联系(1∶1)

img88

(b)一对多联系(1∶n)

img89

(c)多对多联系(m∶n)

图6-1 二元联系的示意图

分析图6-1,我们可发现存在以下情况:① 在图(a)中,A3和B3均没有实体与之对应;② 在图(b)中,A3与B4是一一对应,A2没有实体与之对应;③ 在图(c)中,A2没有实体与之对应。这正是我们在定义上述联系时所提到的“至多”、“任意”的具体体现。为了进一步详细描述联系,接下来讨论联系的参与约束。

(4)联系的约束

实体集A和实体集B之间有二元关系,则实体A(或B)参与联系的最小(min)和最大(max)次数称为实体的参与度,记为(min..max)。

例如,一个员工最多只能担任一个部门的负责人职务,也可不担任任何职务,此时,员工的参与度为(0..1)。如果规定一个采购员最少要负责一个供应商的采购任务,最多负责3个供应商的采购任务,那么采购员的参与度为(1..3)。对于一个供应商而言,在评估初始阶段,它不提供具体的任何商品,当评估通过后,随着采购订单的不断下达,其提供的商品种类数不断增加,理论上是无上限的,因此,商品种类的参与度可记为(0..∞)。

在一个实体的参与度(min..max)中,根据min的取值不同,我们可以进一步明确实体的参与程度。如果min为0,表示只有部分实体参与联系,称为可选参与(或部分参与)。如果min>0,表示所有的实体都参与联系,称为强制参与(或全部参与)。

例如:

■ 公司中的一个员工可以是一个部门的负责人,也可以不是,属于可选参与。

■ 采购订单中必须要有供应商和采购员,不会出现一张采购订单没有供应商或采购员的情况,因此,供应商或采购员属于强制参与。

(5)强实体和弱实体

实体之间有时有很强的依赖关系,即一个实体的存在必须以另一个实体的存在为前提。为了更准确地表达这种关系,对E-R模型作了扩展,引入了弱实体和强实体两个概念。

强实体(Strong Entity)是不依赖于另一个实体的主键的实体。弱实体(Weak Entity)是部分或全部依赖于其他一个或多个实体的主键而存在的实体。强实体与弱实体的联系只能是一对一联系(1:1)、一对多联系(1∶n)。一般来说,弱实体不存在主键,必须要通过强实体的主键来标识。

例如,供应商提供的商品是以供应商的存在为前提的,这里供应商是强实体,商品是弱实体。还有员工与员工的工作经历之间,员工是强实体,工作经历则是弱实体。

(6)超类和子类

超类(Super Class)和子类(Sub Class)的概念最早出现在面向对象技术中,将超类和子类引入E-R模型的重要原因是:① 避免多次描述相近的概念,并使E-R模型的可读性更强;② 避免在一个实体中用不同的属性来描述实体。

超类是一个实体,包含所有在实体中出现的公共属性和关系。子类是一个实体,它包含了在超类实体中出现的全部或部分具体属性和关系,同时还可以拥有比超类更多的其他属性。子类和超类之间具有继承性特点,这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。

例如,公司的员工与采购员、库管员之间就是一个超类和子类的关系,员工作为超类有“工号”、“姓名”、“性别”、“出生日期”等属性,而采购员、库管员作为子类在继承了员工属性的基础上,又有各自不同的其他属性,采购员有“供应商”和“商品”等采购权限属性,库管员有“仓库名称”和“仓位名称”等仓库属性。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈