精华内容
下载资源
问答
  • 2021-02-05 12:54:55

    你有倒退。

    ER模型中的关系是显式定义的,而在关系模型中则是隐式的。

    否。每个关系模型(RM)数据库基表和查询结果都代表一个应用程序关系。实体关系建模(E-RM)模式只是一种组织(但使用不足和指定不足)(但存在误解)关系表和约束的方式。

    关系模型需要一个中间表(通常称为“连接表”)来保存两个实现多对多关系的外键。

    不会。对象关系映射(ORM)方法掩盖了其潜在的直接关系应用程序关系,表和约束。“连接表”的概念源于ORM对E-RM的混淆表示的误解,而E-RM本身却误解了RM。

    正如CJ Date所说的,《数据库系统简介》,第8版:

    对[Chen的原始论文]的慈善阅读会表明E / R模型确实是一种数据模型,但实际上它只是基本关系模型之上的一薄层 [p 426]

    对于IT领域的现状,令人遗憾的是,即使简单的解决方案也太过流行,它们仍然很受欢迎。[p 427]

    关系模型

    每个关系表都代表一个应用程序关系。

    -- employee EID has name NAME and ...

    E(EID,NAME,...)

    这种事物以及代表一个事物的数学有序元组的数学术语是“关系”。因此是“ 关系模型”(和“实体关系模型”)。在数学中,关系经常通过参数化语句模板来描述,其中一个数学术语是“特征谓词”。谓词的参数是表的列。在RM中,DBA为每个基表提供了一个谓词,用户将根据列值和谓词构成真实语句的行放入表中,而将构成错误语句的行排除在外。

    /* now also employee 717 has name 'Smith' and ...

    AND employee 202 has name 'Doodle' and ...

    */

    INSERT INTO E VALUES (EID,NAME,...)

    (717,'Smith',...),(202,'Doodle',...)

    查询表达式还具有从关系运算符和逻辑运算符(在条件中)构建的谓词。它的值还包含使谓词为true的行,并保留使谓词为false的行。

    /* rows where

    FOR SOME E.*, M.*,

    EID = E.EID AND ... AND MID = M.MID

    AND employee E.EID has name E.NAME and ...

    AND manager M.MID has

    AND E.DEPT = M.DEPT AND E.NAME = 'Smith'

    /*

    SELECT E.*, M.MID

    FROM E JOIN M ON E.DEPT = M.DEPT

    WHERE E.NAME = 'Smith'

    现在的表行构成真实的语句,而缺少的行构成虚假的语句,这是我们记录数据库中应用程序情况的方式,以及我们如何解释数据库对应用程序情况的看法。如果没有和理解谓词即应用程序关系,就无法使用或解释数据库。

    实体关系建模

    E-RM(并不真正理解RM)本质上是一种(不需要的,受限制的和限制性的)图解表示法,用于描述关系数据库(的某些部分)(受限形式)。最初有“实体(类)”图标/关系,其中候选键(CK)值与应用程序实体加上其他列(“实体”的“属性”)为1:1,并且有“关系(类)”图标/ tables具有指向实体表的外键(FK)的外键(FK),这些表代表多个实体上的应用程序关系以及其他内容(“关联”的“属性”)。应用程序关系由带有线的图标表示,该线与参与其中的各种实体图标相关。(即,这些行代表FK。

    E-RM不了解关系模型。它在应用程序实体和关系之间做出了毫无意义的误导性区分。毕竟,每个基本表或查询结果的每个超键(唯一列集)与某个应用程序实体1:1对应,而不仅仅是具有实体表的那些。例如,人们可以通过结婚而结伴;但是每个这样的关联与称为婚姻的实体都是1:1。这导致不适当的标准化和约束,因此导致冗余和完整性损失。或者,当这些步骤适当完成时,将导致ER图没有实际描述应用程序,而该关系图实际上是由关系数据库谓词,表和约束条件描述的。然后,ER图既模糊,又多余又是错误的。

    速记E-RM和ORM

    许多声称是E-RM的演示文稿和产品扭曲了E-RM,更不用说RM。他们使用“关系”一词来表示FK约束。这产生如下。当E-RM关系为二进制时,它是一个符号,其FK带有两行。因此,这三件事可以用FK之间的一行代替。这种线的表示特定的二元关系和FKS,但现在虽然ER关系是手写版本明确的,它是由表中反映了ER关系并没有在图中明确哪些图是图片,即在他们描述的关系数据库。这称为“连接表”。人们谈论该行/表是/表示“ X:Y关系”却没有真正注意到这是一种特殊的应用程序关系。在相同的两个实体和/或关联之间可以有许多这样的应用程序关系。

    ORM也这样做,但也仅用其FK替换n元关联,以便进一步模糊关联的应用程序关系和表。Active Records通过一次定义几个速记关系及其表而变得更进一步,这等效于F-K线和速记E-RM图中的关联图标链。许多建模技术(包括E-RM和ORM的版本)都加剧了这种情况,他们还认为应用程序关系只能是二进制的。同样,这是历史上由于对RM缺乏了解而引起的。

    更多相关内容
  • 数据库实体联系模型与关系模型

    千次阅读 2020-03-02 19:11:33
    数据库设计是指根据用户的需求,在某一具体...这就需要规划课程、学生、老师、学习资料等数据构成以及相互之间关系。因此,规划数据构成及数据间关系,并应用某一具体的数据库管理系统如MySQL构建数据库的过程就是...

    数据库设计是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。例如,编程微课是在线编程教育项目,该项目涉及到课程、学生、老师、学习资料等数据,这些数据都要被存储下来,并且能够方便的增加、修改、删除和查询。这就需要规划课程、学生、老师、学习资料等数据构成以及相互之间的关系。因此,规划数据构成及数据间关系,并应用某一具体的数据库管理系统如MySQL构建数据库的过程就是数据库设计。

    由于项目需求的易变性和数据的复杂性,数据库设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程。数据库设计步骤如下图所示:

     

     

                                           

                                                                    图2-5 数据库设计过程流程图

     

    需求分析阶段主要分析项目涉及的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及在业务活动中的存储情况,确定用户对数据库系统的使用要求和各种约束条件等,形成数据库需求说明书

    概念结构设计阶段根据数据库需求说明书,创建数据库概念结构,描述概念结构的有力工具是ER模型

    ER模型表示的概念结构模型独立于任何一种数据模型,并独立于任何一个具体的数据库管理系统。因此,需要把概念结构设计阶段设计的ER模型转换为关系数据模型二维表结构,此阶段为逻辑结构设计阶段

    物理设计阶段是在计算机的物理设备上确定应采取的数据存储结构和存取方法,以及如何分配存储空间等问题。关系数据库物理设计的主要工作是由系统自动完成的,数据库设计者只要关心索引文件的创建即可

    验证设计是在上述设计的基础上,收集数据并建立数据库,运行应用任务来验证数据库的正确性和合理性,当发现设计问题时,可能需要对数据库设计进行修改。

     

    实体联系模型(ER图)

    当前常用的概念数据模型是ER模型。ER模型描述数据库的概念模式,不考虑数据库的逻辑与物理结构,它充分反映现实世界,易于理解,将现实世界的事物以信息结构的形式很方便地表示出来。

    例如,课程是编程微课的主要内容,课程涉及到老师、学生等对象等实体,进一步分析还涉及到课程视频、课程资料、课程价格等各种数据。在用ER模型对课程分析和描述中,对这些实体以及实体之间的联系给出了确切的定义。

    ER模型有四个概念,分别是实体、属性、联系、实体集

     

    实体

    实体是客观存在并且可以互相区分的事物,可以是人或物,也可以是抽象的概念。在现实世界,实体并不是孤立存在的,实体与实体之间也存在联系。例如,课程与学生之间存在学生学习课程的联系,课程与老师之间存在老师创建课程的联系。

     

    属性

    每个实体具有的特征称为属性,一个实体可以由若干属性来描述,属性都有其取值范围,称为值集或值域。例如,课程实体可以由课程编号、课程名称、授课老师、类别、简课程介、价格等属性组成。唯一地标识实体的属性或属性组称为实体的关键字。例如,属性值“20180603,Java编程基础,郎老师,编程语言,课程以浅显易懂的语言,以常见的生活场景为案例,带领大家逐步进入计算机编程世界,86”。其中20180603是课程编号的属性值,该编号在在所有的课程实体中是唯一的,该属性就是课程实体的关键字。

     

    联系

    实体不是孤立存在的,实体之间是有联系的。实体之间的联系可以分为三类:一对一(1:1)、一对多(1:n)和多对多(m:n)。例如,一个老师可以创建多个课程,老师与课程的联系就是一对多的;如果一个老师只能创建一个课程,则老师和课程的联系就是一对一的。在进行问题分析时,要根据客观实际,抓住问题实质进行现实世界的抽象

     

    实体集

    具有相同属性的实体的集合称为实体集。在同一实体集中,每个实体的属性及其值域是相同的,但可能取不同的值。例如,所有的课程实体组成课程实体集,所有的老师实体组成老师实体集。

     

    绘制ER图

    ER图是ER模型的图形化描述。俗话说:一张图胜过千言万语,用ER图可以清晰地描述出ER模型的结构。

    规范的ER图可以帮助人们对ER模型的统一认识,便于沟通和讨论,有助于工作效率的提高。它使用一组预定义的符号来表示ER模型的实体、属性、联系等概念,这些预先定义的符号已经标准化,从而让全世界的开发人员都可以采用这些符号而不会引起混淆。ER图的基本图素有如下的约定:

     

                           

                                                                              图 2-6 ER图的基本图素

    (1)用长方形表示实体,在框内写上实体名。

    (2)用椭圆表示实体的属性,并用连接线把实体与属性连接起来,属性如果是实体的关键字,可以用双线椭圆表示。

    (3)用菱形表示实体间的联系,菱形内写上联系名,用连接线把菱形分别与有关的实体相连接,在连接线旁标上连接的类型,如果联系也有属性,则联系的属性和菱形连接。

     

                                            

                                                                            图 2-7 用ER图表示的课程管理

    图2-7所示为用ER图表示一个课程管理,这是一个简化的课程管理模型,课程由老师创建并属于老师,两者之间是一对多的联系。课程与学生直接存在学习的联系,课程与学生是多对多的联系,因此联系也有属性,分别是学生编号和课程编号。双线椭圆表示的属性编号是实体的关键字。

    通过图2-7可以看出,ER模型是依赖业务运营方式的,它是企业运营方式的信息化描述。企业业务的改变直接影响着ER图的结构和实体间的联系。即使是相同的业务,数据库设计人员侧重分析的数据不同,给出的ER图也可能是不同的。

    对于设计比较复杂的系统来说,有时为了使ER图简洁明了,在ER图中可以省略属性,只画出实体和联系,将属性以表格的形式另外列出。如图2-8所示,给出的是不包含属性的ER图,

     

                                                    

                                                                     图 2-8 不包含属性的课程管理ER图

    ER图直观易懂,是系统开发人员和客户之间很好的沟通工具。对于客户来说,它概况了企业运营的方式和各种联系;对于系统开发人员来说,它从概念上描述了一个应用系统数据库的信息组织。因此,如能准确画出企业运营方式的ER图,就意味着搞清楚了企业的业务运营方式,以后可以根据ER图,结合具体的数据库管理系统,把ER图转换为数据库管理系统所能支持的数据模型。这种逐步推进的数据库设计方法已经普遍应用于数据库设计中,画出应用系统的ER图成为数据库设计的一个重要步骤。

     

    关系模型

    ER图给出了实体联系模型的图形化描述,增强了开发人员与客户的沟通能力。在需求开发阶段ER模型是非常重要的,也是从企业的业务运营方式到概念模型的映射。

    到了设计阶段。就需要在概念模型的基础上建立关系模型,关系模型是用二维表来表示实体集属性间的关系以及实体间联系的形式化模型。它将用户数据的逻辑结构ER模型归纳为满足一定条件的二维表的形式。

    ER模型中的一个实体或联系对应一张二维表,ER模型中的实体属性转换为二维表的列,也可称为属性,每个属性的名称称为属性名,也可称为列名。每个属性取值范围称为该属性的域。二维表每个属性或列取值后的一行数据称为二维表的一个元组,也可以称为一条记录。二维表可以包含有限个不重复的记录。

    图2-9给出了实体“课程”、“老师”转化为关系模型的二维表。每个课程是课程表中的一条记录或一个元组,即一行;同样,每个老师的属性也反映在老师表中的一行;课程表和老师表的联系反映在课程表属性“老师编号”字段上,该字段和老师表的编号字段为同一个字段,因此通过“老师编号”字段可以确定是哪位老师建立的课程。

     

                               

                                                                   图 2-9 由实体课程和老师转化的课程和

    二维表的不可重复性可知,关系中必然存在一个属性或属性组,能够唯一标识一个元组,该属性或属性组称为关键字。当关系中存在多个关键字时,称它们为候选关键字,指定其中一个为主关键字,简称主键。

    设计二维表时,关系应满足如下性质。

    (1)表中每一列的取值范围都是相同的,也就是数据类型相同。

    (2)不同列的取值范围可以相同,但列名称不能相同。

    (3)表中列的次序可以变换,不影响关系的实际意义。

    (4)同一个表中,不允许存在两个完全相同的元组,这是集合的一个基本性质,保证了关系中元组的唯一性。

    (5)行的次序可以任意交换。

    (6)关系中的任何一个属性值都必须是不可分的元素。

    展开全文
  • 实体-联系模型

    千次阅读 2020-12-20 22:08:32
    实体-联系(Entity-Relationship, E-R)模型(以下简称E-R模型)的提出旨在方便数据库的设计,它是通过允许定义代表数据全局逻辑结构的企业模式实现的。 E-R模型采用三个基本概念:实体集、联系集和属性。 将E-R图的...

    实体-联系(Entity-Relationship, E-R)模型(以下简称E-R模型)的提出旨在方便数据库的设计,它是通过允许定义代表数据全局逻辑结构的企业模式实现的。
    E-R模型采用三个基本概念:实体集、联系集和属性。

    实体集

    实体(entity)是现实世界中可区别于所有其他对象的一个“事物”或“对象”。(与面向对象的类含义类似)实体集是相同类型即具有相同性质(或属性)的一个实体集合。在建模汇中,我们通常抽象地使用术语“实体集”,而不是指某个个别实体的特别集合。
    实体集不必互不相交。如可以定义大学里所有人的实体集(person)。一个person实体可以是teacher实体,也可以是student实体,可以既是teacher实体又是student实体,也可以都不是。
    实体通过一组属性(attribute)来表示。属性是实体集中每个成员所拥有的描述性性质。且每个属性都有一个值。

    弱实体集

    没有足够的属性以形成主码的实体集称为弱实体集(weak entity set)。有主码的实体集称作强实体集(strong entity set)。弱实体集必须与另一个称作标识(identitying)或属主实体集的实体集关联才能有意义。也就是说,弱实体集的存在依赖于标识实体集。将弱实体集与其标识实体集相连的联系称为标识性联系
    标识性联系是从弱实体集到标识实体集多对一的,并且弱实体集在联系中的参与是全部的。
    虽然弱实体集没有主码,但仍需要区分依赖于特定强实体集的弱实体集中实体的方法。弱实体集的分辨符是使得我们进行这种区分的属性集合。弱实体集的分辨符也称为该实体集的部分码
    弱实体的主码由标志实体集的主码加上该弱实体集的分辨符构成。

    联系集

    联系(relationship)是指多个实体间的相互关联。联系集是相同类型联系的集合。
    联系集也可以具有描述性属性(descriptive attribute)。如果teacher实体集与student实体集的联系集advisor。可以将属性date与该联系集联系起来,以表示教师成为学生的老师的日期。
    数据库中的大部分联系集都是二元的。然而,有时联系集会涉及多于两个实体集。参与联系集的实体集的数目称为联系集的度(degree)。二元联系集的度为2,三元联系集的度为3,以此类推。

    非二元的联系集

    对于非二元联系集,为了避免混淆,只允许在一个联系集外有一个箭头。(如果有多个箭头,则无法表明对应的哪个实体)。而函数依赖可以以一种不会混淆的方式描述实体间的联系。

    属性

    每个属性都有一个可取值的集合,称为该属性的域(domain),或者值集(value set)。 严格来说,实体集的属性是将实体集映射到域的函数。由于一个实体集可能有多个属性,因此每个实体可以用一组(属性,数据值)对来表示,实体集的每个属性对应一个这样的对。
    E-R模型中的属性可以按照如下的属性类型来划分:

    • 简单(simple)和复合(composite)属性。简单属性不能划分为更小的部分。复合属性可以再划分为更小的部分。 复合属性帮助我们把相关属性聚集起来,使模型更清晰。注意,复合属性可以是有层次的。如address可以包含street、city、state等,而street可以进一步分解为street_number、street_name、apartment_number。
    • 单值(single-valued)和多值(multi-valued)属性。一般情况下,一个属性对应一个值,这样的属性称为单值属性。如stuent_ID属性只对应于一个学生ID。而在某些情况下对某个特定实体而言,一个属性可能对应于一组值。以phone_number为例,每个教师可以有零个、一个或多个电话号码。这样的属性称为多值属性。为了表示一个多值属性,用花括号将属性名包住;如{phone_number}。
    • 派生(derived属性)。派生属性的值可以从别的相关属性或实体派生(计算)出来。如age属性表示年龄,如果还具有属性date_of_birth,就可以从当前的日期和date_of_birth计算出age。派生属性的值不存储,而是在需要时计算出来。
      当实体在某个属性上没有值时,使用空(null)值。空值可以表示“不适用”,即该实体的这个属性不存在值。空还可以用来表示属性值未知。未知的值可能是缺失的(值不存在),或不知道的(不知道该值是否确实存在)。

    删除冗余属性

    一个好的实体-联系设计不包含冗余的属性。但是在实际开发中,实现这一点需要极大的代价。

    约束

    可以定义一些数据库中的数据必须要满足的约束。

    映射基数(Mapping Cardinality)

    映射基数表示一个实体通过一个联系集能关联的实体的个数。对于实体集A和B之间的二元联系集R来说,映射基数必然是以下情况之一:
    一对一(one-to-one):A中的一个实体至多与B中的一个实体相关联,并且B中的一个实体也至多与A中的一个实体相关联。
    一对多(one-to-many):A中的一个实体可以与B中的任意数目(零个或多个)实体相关联,而B中的一个实体至多与A中的一个实体相关联。
    多对一(many-to-one):A中的一个实体至多与B中的一个实体相关联,而B中的一个实体可以与A中的任意数目(零个或多个)的实体相关联。
    多对多(many-to-many):A中的一个实体可以与B中的任意数目(零个或多个)实体相关联,,并且B中的一个实体也可以与A中的任意数目(零个或多个)的实体相关联。
    注意,考虑映射关系时,一定要同时考虑A->B和B->A两个方面,而不能只考虑其中一方面而忽略另一方面,从而导致错误的设计。

    参与约束

    如果实体集E中的每个实体都参与到联系集R的至少一个联系中,那么实体集E在联系集R中的参与称为全部的。如果实体集E中只有部分参与到联系集R中,那么实体集E在联系集R中的参与称为部分的。如我们期望每个student实体通过advisor联系同至少一名教师相联系,因此student在联系集advisor中的参与是全部的。相反地,一个teacher不是必须要指导一个学生。因此,很可能只有一部分teacher实体通过advisor联系同student相关联,于是teacher在advisor中的参与是部分的。

    我们必须有一个区分给定实体集中实体的方法。从概念上来说,各个实体是互异的;但从数据库的观点来看,它们的区别必须通过其属性表明。实体的码是一个足以区分每个实体属性集。关系模式中的超码、候选码、主码的概念同样适用于实体集。
    码同样可以唯一标识联系,并从而将联系相互区分开来。联系集的主码结构依赖于联系集的映射基数。如果联系集是多对多的,那么联系集的主码由两个实体集的主码的并集构成。如果联系是多对一的,那么多的实体的主码就是联系集的主码。如果联系集是一对一的,那么两个实体的任一主码就是联系集的主码。

    E-R数据模式转换为关系模式

    E-R模型和关系数据库模型都是现实世界企业抽象的逻辑表示。由于两种模型采用类似的设计原则,因此可将E-R设计转换为关系设计。

    具有简单属性的强实体集的表示

    设E是只具有简单描述性属性a1,a2,…,an的强实体集。我们用具有n个不同属性的模式E来表示这个实体集。对于从强实体集转换而来的模式,强实体集的主码就是生成的模式的主码。

    具有复杂属性的强实体集的表示

    当一个强实体集具有非简单属性时,可以通过为每个子属性创建一个单独的属性来处理复合属性,而不为复合属性自身创建一个单独的属性。
    多值属性的处理不同于其他属性。对于一个多值属性M,构建关系模式R,该模式包含一个对应于M的属性A,以及对应于M所在的实体集或联系集的主码的属性。另外,在多值属性构建的关系模式上建立外码约束,由实体集的主码所生成的属性去参照实体集所生成的关系。
    派生属性并不在关系数据模型中显式地表达出来。

    弱实体集的表示

    设A是具有属性a1,a2,…,an的弱实体集,设B是A所依赖的强实体集,设B的主码包括b1,b2,…,bn。
    对于从弱实体集转换而来的模式,该模式的主码由其所依赖的强实体集的主码与弱实体集的分辨符组合而成。除了创建主码之外,还要在关系A上建立外码约束,该约束指明属性b1,b2,…,bn参照关系B的主码。外码约束保证表示弱实体的每个元组都有一个表示相应强实体的元组与之对应。

    联系集的表示

    设R是联系集,设a1,a2,…,an表示所有参与R的实体集的主码的并集构成的属性集合,设R的描述性属性(如果有)为b1,b2,…,bn。映射基数不同,主码的选择方式不同:

    • 对于多对多的二元联系集,参与实体集的主码属性的并集成为主码。
    • 对于一对多的二元联系集,任何一个实体集的主码都可以选作主码。这个选择是任意的。
    • 对于多对一或一对多的二元联系集,联系集中多的那一方的实体集的主码构成主码。
    • 对于边上没有箭头的n元联系集,所有参与实体集的主码属性的并集构成主码。
    • 对于边上有一个箭头的n元联系集,不在"箭头"侧的实体集的主码属性为模式的主码。
      此外,还需在关系模式R上建立外键约束。

    模式的冗余

    连接弱实体集和相应强实体集的联系集比较特殊。弱实体集的主码包含强实体集的主码。连接弱实体集与其所依赖强实体集的联系集的模式是冗余的,而且在基于E-R图的关系数据库设计不必给出。

    模式的合并

    在一对一的联系的情况下,联系集的关系模式可以跟参与联系的任何一个实体集的模式进行合并。即使参与是部分的,也可以通过空值来进行模式的合并。
    最后,还需考虑表示联系集的模式上本应有的外码约束。参照每一个参与联系集的实体集的外码约束本应存在。我们舍弃了参照联系集模式所合并入的实体集模式的约束,然后将另一个外码约束加到合并的模式中。

    实体-联系设计问题

    在实体-联系数据库模式中涉及到一些基本问题。

    用实体集还是用属性

    什么构成属性?什么构成实体集?对这两个问题并不能简单地回答。区分它们主要依赖于被建模的现实世界的企业结构,以及被讨论的属性的相关语义。
    一个常见的错误是用一个实体集的主码作为另一个实体集的属性,而不是用联系。例如,即使每名教师指指导一名学生,将student的ID作为teacher的属性也是不正确的。用advisor联系代表学生和教师之间的关联才是正确的方法,因为这样可以明确表示出两者之间的关系而不是将这种关系隐含在属性中。
    另一个常见的错误是将相关实体集主码属性为联系集的属性。这种做法是不对的,因为在联系集中已隐含这些主码属性。(这些属性默认已经在联系集中,不应再明确表示出来)

    用实体集还是联系集

    一个对象最好被表述为实体集还是联系集并不总是显而易见。在决定用实体集还是联系集可采用一个原则是,当描述发生在实体间的行为时采用联系集。这一方法在决定是否将某些属性表示为联系可能更适合时也很有用。

    二元还是n元联系集

    数据库中的联系通常都是二元的。一些看来非二元的联系实际上可以用多个二元联系更好地表示。事实上,一个非二元的(n元,n>2)联系集总可以用一组不同的二元联系集来替代。可以将这一过程直接推广到n元联系集的情况。因此在概念上可以限制E-R模型只包含二元联系集。然而,这种限制并不总是令人满意的。

    • 对于为表示联系集而创建的实体集,可能不得不为其创建一个标识属性。该标识属性和额外所需的那些联系集增加了设计的复杂度以及对总的存储空间的需求。
    • n元联系集可以更清晰地表示几个实体集参与单个联系集。
    • 有可能无法将三元联系上的约束转变为二元联系上的约束。例如,考虑一个约束,表明R是从A、B到C多对一的;也就是,来自A和B的每一对实体最多与一个C实体关联。这种约束就不能用联系集Ra、Rb和Rc上的基数约束表示。

    联系集中属性的布局

    一个联系的映射基数比率会影响联系集中属性的布局。因此,一对一或一对多联系集的属性可以放到一个参与该联系的实体集中,而不是放到联系集中。一对多联系集的属性仅可以重置到参与联系的“多”方的实体集中。而对于一对一的联系集,联系的属性可以放到任意一个参与联系的实体中。
    设计时将描述性属性作为联系集的属性还是实体集的属性这一决定反映出被建模企业的特点。
    属性位置的选择在多对多的联系集中体现得更清楚。同名的属性,放在实体集中还是联系集中其作用不同。

    扩展的E-R特性

    虽然基本的E-R概念足以对大多数数据库特征建模,但数据库的某些方面可以通过基本E-R模型作某些扩展来更恰当地表达。

    特化(Specialization)

    在实体集内部进行分组的过程称为特化。一个实体集可以根据多个可区分的特征进行特化。在E-R图中,特化用从特化实体指向另一个实体的空心箭头来表示。所以,这种关系也称为ISA关系。特化关系还可能形成超类-子类(superclass-subclass)联系。

    概化(Generalization)

    实体的共性可以通过概化来表达,概化是高层实体集与一个或多个低层实体集间的包含关系。对于所有实际应用来说,概化只不过是特化的逆过程。为企业设计E-R模型时,将配合使用这两个过程。

    聚集(Aggregation)

    聚集是一种抽象,通过这种抽象,联系被视为高层实体。
    当把聚集像其他实体集一样看待时,之前用于在联系集上创建主码和外码约束的规则,也同样可以应用于与聚集相关联的联系集。聚集的主码是定义该聚集的联系集的主码。不需要单独的关系来表示聚集;而使用从定义该聚集的联系创建出来的关系即可。

    数据库设计的其他方面

    数据约束和关系数据库设计

    使用SQL可以表达多种数据约束,包括主码约束、外码约束、check约束、断言和触发器。约束有多种目的。最明显的一个目的是自动的一致性保持。通过在SQL数据定义语言中表达约束,设计者能够确保数据库系统自己执行这些约束(显式声明约束)。
    显式声明约束的另一个优点是一些约束在数据库模式的设计中特别有用。
    数据约束在确定数据的物理结构时同样有用,可以将彼此紧密相关的数据存储在磁盘上邻近的区域,以便在磁盘访问时提高效率。如将索引建立在主码上,索引结构工作得更好。
    每次数据库更新时,执行约束会在性能上带来潜在的高代价。对于每次更新,系统都必须检查所有的约束,然后要么拒绝与约束冲突的更新,要么运行相应的触发器。性能损失的严重性,不仅仅取决于更新的频率,而且依赖于数据库的设计方式。

    使用需求:查询、性能

    数据库系统的性能时绝大多数企业信息系统的一个关键因素。性能不仅与计算能力的有效利用以及所使用的存储硬件有关,而且受到与系统交互的人的效率以及依赖数据库数据的处理的效率的影响。以下是效率的两个主要度量方法:

    • 吞吐量(throughput)————每单位时间里能够处理的查询或更新(通常指事务)的平均数量。
    • 响应时间(response time)————单个事务从开始到结束所需的平均时间或最长时间。

    授权需求

    授权约束同样会影响数据库的设计,因为SQL允许在数据库逻辑设计组件的基础上将访问权限授予用户。(现有主流数据库系统均已合理实现授权(基于角色分配))

    数据流、工作流

    术语工作流表示一个流程中的数据和任务的组合。当工作流在用户间移动以及用户执行他们在工作流中的任务时,工作流会与数据库系统交互。

    数据库设计的其他问题

    数据库设计通常不是一个一蹴而就的工作。一个组织的需求不断发展,它所需要存储的数据也会相应地发展。但是,对于一个已明确的需求,还是可以给出稳定的设计的。
    一个好的设计应该不止考虑当前的规定,还应该避免或者最小化由预计或有可能发生的改变而带来的改动。(需要做向上兼容的思考)
    最后,数据库设计在两个意义上是面向人的工作:系统的最终用户是人(使用该程序的用户);数据库设计者需与应用领域的专家进行广泛交互以理解应用的数据需求。所有涉及数据的人都有需要和偏好,为了数据库设计和部署在企业中获得成功,这些都是需要考虑的。

    参考

    数据库系统概念(第六版) A. Silberschatz H. F. Korth S. Sudarshan著 杨冬青 等译 第七章

    展开全文
  • 数据的四种常用的数据模型以及三实体之间联系三个世界现实世界信息世界两个实体型间的联系数据模型层次模型 三个世界 现实世界 现实世界,客观存在的世界。 信息世界 概念:信息世界是现实在人们头脑中的反映,...

    三个世界

    现实世界

    现实世界,客观存在的世界。

    信息世界

    • 概念:信息世界是现实在人们头脑中的反映,经过人脑的分析、归纳和抽象,形成信息,人们把这些信息进行记录、整理、归类和格式化后,就构成了信息世界。
    • 实体:客观存在并且可以互相区别的“食物”称为实体。实体可以是具体的人、事和物,如:一个学生、一本书、一辆汽车、一种物资,也可以是抽象的事件,一堂课、一次比赛。
    • 属性:实体所具有的某一特性称为属性,例如:学生的属性有姓名、年龄、学号之类的
    • 实体型:具有相同属性的实体必然具有共同的特征。所以用实体名及其属性集合来描述同类对象,如学生(姓名、学号、年龄…)
    • 实体集:同型实体的集合称为实体集。如所有学生和所有课程
    • 码:能唯一标识一个实体属性或属性集称为实体的码,比如学号不会重复,就可以成为候选码
    • 域:属性的取值范围该属性的域,比如学号成11位
    • 联系:单个实体型内部的联系通常是指组成实体的各属性之间的联系

    两个实体型间的联系

    • 一对一联系(1:1):
      实体集A中的一个实体至多和实体集B中一个实体相对应,反之,实体集B中的一个实体至多和实体集A中一个实体相对应,则称实体集A与实体集B位一对一联系,记作1:1例如班级与班长
      -一对多联系(1:n)
      实体集A中的一个实体至多和实体集B中多个实体相联系,反之实体集B中的一个实体至多和实体集A中一个实体相联系,记作1:n
    • 多对多联系(m:n)
      实体集A中的一个实体至多和实体集B中n个实体相对应,反之实体集B中的一个实体至多和实体集A中m个实体相联系记作m:n
      一对一是一对多联系的特例,而一对多联系有事多对多联系的特例
      这个关系还涉及概念模型的E-R表示方法

    数据模型

    数据模型是数据库的框架,该框架描述了数据及其联系的组织方式、表达方式和存储路径,它是数据库系统的核心和基础。
    数据模型是一种模型,用来描述数据、组织数据对数据进行操作。
    常用数据模型有三种层次模型、网状模型、关系模型

    层次模型

    层次模型是数据库系统中最早出现的数据模型

    • 1.层次模型的数据结构
      层次模型用树形数据结构来表示实体间的联系,例如:家族关系、行政机构。
      每个结点表示一个记录型,每个记录型可包含若干个字段,记录型描述的是实体,字段描述实体的属性,各个记录型及其字段都必须命名。结点带箭头的连线表示记录间的联系。
      层次模型有如下几个特点:
      (1)每颗层次模型构成的有向树示意图,仅有一个结点没有双亲,该结点就是根结点。
      (2)根结点以外的其他结点有且仅有一个双亲结点
      (3)父子结点之间的联系是一对多(1:n)的联系。父结点中的一个记录值可能对应n个子结点,而子结点中的一个记录值只能对应父结点中的一个记录值。==因此,任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义。
    • 2.层次模型的数据操纵与数据完整性的约束
      层次模型的数据操纵主要是查询、插入、删除和修改,进行插入、删除和修改操作时要满足层次模型的完整性约束条件:
      (1)进行插入操作时,如果没有相应的双亲结点值就不能能插入子女结点值。
      (2)进行删除操作时,如果删除双亲结点,则子女的值也会被一同删除
      (3)修改操作时,应修改所有相应的记录,以保证数据的一致性
    • 3.层次模型的优缺点
      层次模型的主要优点如下
      (1)层次模型结构比较简单,层次分明,以便在计算机内实现
      (2)结点间联系简单,从根结点到树中任一结点均存在一条唯一的层次路径,当要存取某个结点的记录值时,沿着这条路径很快就能找到该记录值,因此,以该种模型建立的数据库系统查询效率很高
      (3)提供了良好的数据完整性支持
      层次模型的缺点如下:
      (1)不能直接表示两个以上的实体型间的复杂联系呵实体间多对多联系,只能通过引入冗余数据或创建虚拟结点的方法来解决,易产生不一致性。
      (2)对数据的插入和删除的操作
      (3)查询子女结点必须通过双亲结点

    网状模型

    • 1.现实世界种事务之间的联系更多是非层次关系,用层次模型表示这种关系很不直观,网状模型克服了这一个弊病:
      在层次模型中,只能有一个根结点,并且根结点以外的其他结点只能有一个双亲结点,允许多个结点没有双亲结点,允许结点可以有多个双亲结点。因此网状模型是采用有向图结构表示记录型与记录型之间联系的数据模型,它可以更直接地描述现实世界,层次模型实际上是网状模型地一个特例
    • 2.网状模型有如下特点:
      (1)有一个以上地结点没有双亲结点
      (2)允许结点有多个双亲结点
      (3)允许两个结点之间有多种联系(复合联系)
      -3. 网络模型的数据操纵与数据完整性的约束:
      网状模型地数据操纵主要包括查询、插入、删除和修改数据。进行插入、删除、修改操纵时要满足网状模型地完整性约束条件
      (1)插入数据时,允许插入尚未确定双亲结点值得子女结点值。
      (2)删除数据时,允许只删除双亲结点值
      (3)修改数据时,可直接表示非树形结构,而无需像层次模型那样增加冗余结点
    • 网状模型得优缺点
      网状模型的优点主要有两点:
      (1)能更为直接地描述客观世界,可表示实体间地多种复杂联系
      (2)具有良好地性能和存储效率
      网状模型地缺点主要有以下几点:
      (1)数据结构复杂,随着应用环境地扩大,数据库地结构越来越复杂,不便于终端用户掌握
      (2)其数据定义语言(DLL)和数据操纵语言(DML)语言及其复杂,不易于用户掌握
      (3)由于记录间地联系本质上是通过存储路径实现的,应用程序在访问数据库时要指定存取路径,即用户需要了解系统结构地细节,加重了编写应用程序地负担

    关系模型

    • 1.关系模型地数据结构是一张规范化地二维表,它由表名、表头和表体三部分构成。表名即二维表地名称,表头决定二维表的结构,每个二维表又可称为关系。
      这种模型就是现在我们使用的SQL基本表
    • 2.有以下几个概念需要知道:
      (1)关系:与关系实例,一个关系实例对应由行和列组成的一张二维表,关系相当于实例,例如学生表,就是一个关系
      (2)元组:元组是二维表格中的一列,给学生表中一个学生记录即为一个元组
      (3)属性:二维表格中的一列,给每一个属性起一个名称即属性名,如学生表中有几个属性:如学号、姓名、性别之类的
      (4)域:属性的取值范围,如年龄的域是(15到24),性别的域是(男、女)
      (5)分量:每一个元组对应的列的属性值,即元组中的一个属性值
      (6)候选键:如果一个属性或若干属性的组合中不包含多余的属性,能够唯一标识一个关系的元组,则称该属性或属性的组合为候选键。一个关系可有多个候选键。如学生表中学号就可以标识一个学生
      (7)主键:当一个关系中有多个候选键时,可以从中选择一个作为主键。一个关系只能有一个主键
      (8)主属性和非主属性:包含在任意一个候选键中的属性称为主属性,不包含在任意一个
      (9)关系模式。关系模式是对关系的描述一般表示为:关系名(属性1、属性2…,属性n),关系模式时关系模式的“型”,是关系的框架结构。如学生关系的关系模式可以表示为:学生(学号、姓名、性别、年龄、系别)
      在关系模式中,实体是用关系来表示的,如
      学生(学号、姓名、性别、年龄、系别)
      选课(课程号,课程名,学分)
      (10)关系实例。关系实例是关系模式的“值”,是关系的数据,相当于二维表中的数据
    • 3.关系模式的优缺点
      关系模式的优点有以下三点:
      (1)关系模式与非关系模式不同,它有严格的数学理论根据
      (2)数据结构简单、清晰、用户易懂、易用,不仅用关系描述实体,而且用关系描述实体间的联系
      (3)关系的模型的存储路径对用户透明,从而具有更高的数据独立性、更好的安全保密性
      关系模式的缺点
      缺点是查询效率不如非关系模型。

    面相对象的模型

    类似于JAVA中的面向对象,分为对象、类,有继承
    面向对象模型能完整地描述现实世界地数据结构,具有丰富地表达能力,但模型相对比较复杂、涉及的知识比较多,因此,面向数据库尚未达到关系数据库地普及程度。

    展开全文
  • 概念设计(Conceptual Design) —— 设计实体关系模型 (ER Model) 逻辑设计(Logical Design)—— 实现从 ER 模型到关系模式(Relation Schemas)的转换。 物理设计(Physical Design) 本文主...
  • 如何将实体关系图转换成关系模式

    千次阅读 2021-12-19 00:01:08
    一个实体转换成一个关系模式。... 上图实体与实体之间关系分别为: 1、班级与学生实体为1:n (一对多), 一个班级可以拥有多个学生,学生只能在一个班级中。 2、学生实体与课程实体的关系为:m:n(多对多) ,...
  • 定义并解释概念模型中以下术语:实体,实体型,实体集,实体之间联系。 (1)实体:客观存在并可以相互区分的事物叫实体。 (2)实体型:实体名及其属性名集合来抽象和刻画同类实体称为实体型。 (3)实体集...
  • 文章目录4.4 弱实体集定义弱实体集的来源弱实体集的要求弱实体集的符号弱实体集的设计4.5 从 E/R 图到关系设计E/R 联系关系的转化两个基本规则 和 特殊处理实体集 -> 关系非弱实体集 -> 关系实体集 -> ...
  • 实体与实体之间联系

    千次阅读 2019-09-30 16:13:09
    单张表的缺点: ...表与表之间用外码进行连接 外键虽然能够帮你强制建立表关系 但是也会给表之间增加数据相关的约束,通过cascade可以进行级联更新 外键约束 1.在创建表的时候 必须先创建被关联表 ...
  • 关系型数据库中实体之间关系

    千次阅读 2018-06-20 20:47:00
    关系型数据库实体间有三种关联关系:一对一,一对多,多对多。 一对一关系(1:1):  如果实体集(表)A 中的每一个实休(就是每行记录),在实体集B中只有一条数据与它对应,  反之实体集B 中的每一个实体,在实体A中...
  • 数据库实体联系如何转换为关系模式

    万次阅读 多人点赞 2019-07-04 09:44:39
    一、什么是实体、什么是联系 实体:供应商、项目、零件、员工 联系:供应 二、实体联系→关系模式 1:1联系 在两个实体任选一个添加另一个实体的主键; 每个实体的码均是该联系的候选键; 1:n联系 1:N 遇到...
  • 实体关系抽取旨在识别网络文本中的实体,并提取出文本中实体之间隐含的关系。研究表明,深度神经网络在实体关系抽取任务上具有可行性,并优于传统关系抽取方法。目前的关系抽取方法大都使用卷积神经网络(CNN)和长...
  • 实体与实体之间关系Note: This article is part of the advanced Room series which covers all the details about the Room persistence library. You can read all the articles here: 注意:本文是高级Room系列...
  • 【数据库】实体之间联系

    千次阅读 2020-05-09 18:21:01
    二、实体之间联系: 一般地,参与联系的实体型的数目称之为联系的度。 一个实体型之间的联系称之为一元联系联系的度为1。一元联系包括:一个实体型内部各属性之间的联系和同一个实体集内的各实体间的联系。 两...
  • 实体-关系图转换为关系模型

    万次阅读 多人点赞 2019-04-25 16:54:19
      由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。 2.E-R图向关系模型的转换 2....
  • 实体-联系模型(Entity-Relationship)

    千次阅读 2021-04-06 19:55:37
    第二讲 实体-联系模型实体-联系模型(Entity-Relationship)2.1实体2.2联系2.3实体-联系图2.4弱实体集 2.1实体 实体:客观存在并且可以互相区分的任何事物,可以是实际对象,也可以是抽象概念。 属性:实体所代表的...
  • 数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将实体-联系图中的实体、实体的属性和实体之间联系转化为关系模式。在转化过程中会遇到如下问题: (1)命名问题。命名问题可以采用原名,也可以另行...
  • 实体关系

    千次阅读 2021-01-20 03:57:10
    E-R模型最常见的运用是在数据库设计的分析阶段解释实体关系图:简记E-R图是指以实体关系、属性三个基本概念概括数据的基本结构,,从而描述静态数据结构的概念模式。E-R图为实体-联系图,提供了表示...
  • CDM是大多数开发者使用PD时最先创建的模型,也是整个数据库设计最高层的抽象。CDM是建立在传统的ER图模型理论之上的,ER图中有三大主要元素:实体型,属性和联系。其中实体型对应到CDM中的Entity,属性对应到CDM中每...
  • 6 数据库设计:实体-联系方法

    千次阅读 2022-01-10 16:01:00
    概念模式与具体的DBMS无关,通常使用实体-联系图表示,也叫E-R图 逻辑设计: 将概念模式转换成相应的逻辑模式,获得复合选定DBMS数据模型的逻辑结构,比如关系模式。 属性-联系方法 与实体-联系方法区别:没有概念...
  • (1)实体 客观存在并可以相互区分的事物叫实体。 (2)实体型 具有相同属性的实体具有由相同的特征和性质,实体名及其属性名集合... (4)实体之间联系 通常是指不同实体型的实体集之间的联系,...
  • 单个实体内部也有一对一、一对多、多对多的关系 一对一:独生子女家庭是一个实体,一个爸爸有一个孩子,一个孩子也有一个爸爸 一对多:员工是一个实体,员工中存在着领导与被领导的...三个实体间的关系实体之间...
  • 模型图:项目中model.png请参照模型图理解代码1....先skip-gram word2vec 模型预训练得到的词向量表将每个词映射为一个词向量,然后每个词中字母一个向量表示,一个词中所包含的字母的向量送入 BiLSTM, ...
  • 实体联系模型

    千次阅读 2018-06-25 01:36:53
    一、实体联系(E-R)数据模型概述 该数据模型基于对现实世界的这样一种认识:世界由一组称为实体的基本对象及这些对象间的联系组成,该模型是一种语义模型模型的语义方面主要体现在模型力图去表达数据的意义。...
  • 数据库——实体联系模型

    千次阅读 2020-02-28 20:04:55
    2.属性:实体所代表的事物具有的某种特性,每个实体都可以一组属性来刻画  例如,我们可以学号、姓名、性别、出生年月、专业等属性来刻画学生实体。  对于同一个实体,刻画它的属性集可以有不同的选择。 3....
  • 关系,关系模式,关系模型区别和联系

    万次阅读 多人点赞 2019-12-18 09:40:11
    关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成. 关系和关系模式的区别 关系模式是型,关系是值,关系模式是对关系的描述 关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定...
  • 两个以上实体m:n多元联系关系模型转化,也需要为联系单独建立一个关系,该关系中最少应包括它所联系的各个实体关键字,若是联系有属性,也要归入这个新增关系中。这种转换与两个实体间m:n联系的转换类似。例:某...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,272
精华内容 94,908
关键字:

关系模型是把实体之间的联系用