数据库引论:4、使用E-R模型的数据库设计

4.1 设计过程概览

在这里插入图片描述

图1 开发数据库应用包含的任务

真实世界 ⇒ \Rightarrow 概念模型 ⇒ \Rightarrow 逻辑模型 ⇒ \Rightarrow 物理模型

数据库设计:

  1. 概念设计(Conceptual design):

    用一个概念模型描述物理世界的一个主体

  2. 逻辑设计(Logical design):

    把概念模型转换为逻辑模型(一个数据库模式)

  3. 物理设计(Physical design)

    数据存储方式

在一个数据库模式的设计中,必须确保避免两个主要的缺陷:

  1. 冗余:一种不好的设计可能会重复信息。例如,如果对于每次开课我们都存储课程标识和课程名称,那么对于每次开课,名称的存储就是冗余的
  2. 不完整:一种不好的设计可能会使得企业的某些方面难以甚至无法建模。例如,假设在上述情形中,我们只有对应于开课的实体,而没有对应于课程的实体。

4.2 实体-联系模型

实体-联系数据模型(E-R数据模型)通过允许定义代表数据库全局逻辑结构的企业模式来做到的,采用了三个基本概念:实体集、联系集和属性,并有一种相关联的图形表示:E-R图。

​ 一个数据库可被模式化为:实体集和实体间的关系

4.2.1 实体集

​ 一个实体(entity)是现实世界中可区别于所有其他对象的一个“事物”或“对象”。例如,大学中的每个人都是一个实体。每个实体有一组性质,并且某些性质集合的值必须唯一地标识一个实体。

实体集(entity set)是共享相同性质或属性的、具有相同类型的实体的集合。例如,一所给定大学的所有教师的集合可定义为 i n s t r u c t o r instructor instructor实体集。

实体集的外延(extension)指属于实体集的实体的实际集合。大学中教师的实际集合构成了 i n s t r u c t o r instructor instructor实体集的外延。

实体集不必互不相交,例如可以定义大学中所有人员组成的person实体集。一个person可以是instructor实体,可以是student实体,可以既是instructor实体又是student实体,也可以都不是。

​ 实体通过一组属性来表示。属性是实体集中每个成员所拥有的描述性性质。

​ 每个实体在它的每个属性上都有一个(value)。

​ 实体集在E-R图中用一个矩形来表示,该矩形分为两个部分,灰色阴影部分(DB书中)包含实体集的名称,第二部分包含实体集所有属性的名称。

4.2.2 联系集

联系(relationship)是多个实体间的相互关联。我们可以定义关联Katz教师和Shankar学生的advisor联系。这一联系指明Katz是学生Shankar的导师。联系集(relationship set)是相同类型联系的集合。

​ E-R模式中的一个联系实例(relationship instance)表示在所建模的现实企业中被命名的实体之间的一种关联。联系集在E-R图中用菱形表示,菱形通过线条连接到多个不同的实体集(矩形)。

在这里插入图片描述

图2 显示advisor联系集的E-R图

联系集的形式化定义:

如果 E 1 , E 2 , ⋯ , E n E_1,E_2,\cdots,E_n E1,E2,,En为实体集,那么联系集 R R R
{ ( e 1 , e 2 , ⋯ , e n ) ∣ e 1 ∈ E 1 , e 2 ∈ E 2 , ⋯ , e n ∈ E n } \{(e_1,e_2,\cdots,e_n)|e_1\in E_1,e_2\in E_2,\cdots,e_n \in E_n\} {(e1,e2,,en)e1E1,e2E2,,enEn}
的一个子集,其中 ( e 1 , e 2 , ⋯ , e n ) (e_1,e_2,\cdots,e_n) (e1,e2,,en)是一个联系实例

联系集的属性在E-R图中通过未分割的矩形来表示。‘

递归的联系集(recursive):同样的实体集以不同的角色多次参与一个联系集,在这类联系集中,有必要用显式的角色名来指明实体是如何参与联系实例的。

​ 例如,考虑记录大学中所开设的所有课程的信息的 c o u r s e course course实体集,我们用 c o u r s e course course实体的有序对来建模联系集 p r e r e q prereq prereq,以描述一门课程(C2)是另一门课程(C1)的先修课,以(C1,C2)对来表示。则E-R图如图所示:

在这里插入图片描述

图3 带有角色标识的E-R图

描述性属性(descriptive attribute):联系也可以具有被称为描述性属性的属性。例如:考虑与 s t u d e n t student student s e c t i o n section section实体集相关联的 t a k e s takes takes联系集,希望存储联系的描述性属性 g r a d e grade grade,以记录学生在开设的课程中获得的成绩。

在这里插入图片描述

图4 将一个属性附加到联系集的E-R图

相同的实体集可能会参与到多个联系集中。

二元联系集(binary relationship set):涉及两个实体集的联系集,例如 a d v i s o r advisor advisor t a k e s takes takes。有时联系集会涉及多于两个实体集。

实体集的度(degree):参与联系集的实体集的数目

一个三元联系集的例子:

​ 假设我们有一个代表大学内开展的所有研究项目的 p r o j e c t project project实体集,考虑 i n s t r u c t o r 、 s t u d e n t 、 p r o j e c t instructor、student、project instructorstudentproject实体集。每个项目可以有多名参与的学生和多位参与的教师。另外,在项目中工作的每名学生必须有一位相关教师来指导该生在项目中的工作。目前我们忽略项目和教师之间以及项目和学生之间的两个联系,而关注在一个特定项目上由哪位教师指导哪名学生。

​ 为了表示这些信息,我们通过 p r o j _ g u i d e proj\_guide proj_guide三元联系集将三个实体集联系到一起, p r o j _ g u i d e proj\_guide proj_guide的实例表示在一个特定项目上一名特定学生接受了一位特定教师指导。注意,一名学生在不同项目中可以由不同教师指导,不能将这个联系描述称学生与教师的二元关系。

在这里插入图片描述

图5 具有三元联系proj_guide的E-R图

4.3 复杂属性

属性的域:每个属性有一个可取值的集合,称为该属性的(domain),或者值集(value set)。

简单属性(simple):不能被划分为子部分

复合属性(composite):可以被划分为子部分(即其他属性),复合属性帮助我们把相关属性集合起来,使模型更清晰。复合属性的出现可以是有层次地(可嵌套的)

在这里插入图片描述

图6 instructor实体集的复合属性

单值属性(single-valued):对一个特定实体都只有单独的一个值

多值属性(multivalued):一个属性可能对应于一组值。例如 i n s t r u c t o r instructor instructor实体集中有一个 p h o n e _ n u m b e r phone\_number phone_number属性,一个教师可以有0个、1个或多个电话号码,不同的教师可以有不同数量的号码

派生元素(derived attribute):这类属性的值可以从其他相关属性或实体的值派生出来。例如,假设 i n s t r u c t o r instructor instructor实体集有一个 s t u d e n t _ a d v i s e d student\_advised student_advised属性,它表示一位教师指导了多少名学生。我们可以通过统计与一位教师相关联的所有 s t u d e n t student student实体的数目来导出这个属性的值。派生属性的值并不存储,而是在需要时被计算出来

用E-R符号来表示复合属性:

在这里插入图片描述

图7 包含复合、多值和派生属性的E-R图

注意{}表示多值属性,age()表示派生属性age,复合的不同层次以缩进表示

4.4 映射基数

映射基数(mapping cadinality)或基数比率表示一个实体能通过一个联系集关联的另一些实体的数量。

​ 对于实体集A和B的二元联系集R来说,映射基数必然是以下情况:一对一一对多多对一多对多

​ 在E-R图中的画法,有箭头的一方是一,没箭头的是多:

  • 一对一:一名教师最多可以指导一名学生,一名学生最多可以有一位导师
  • 一对多:一名教师可以指导多名学生,一名学生最多只能有一位导师
  • 多对一:一位教师最多可以指导一名学生,一名学生可以有多为导师
  • 多对多:一名教师可以指导多名老师,一名学生可以有多位导师

在这里插入图片描述

图8 映射关系

​ 如果实体集E中的每个实体都必须参与到联系集R中的至少一个联系中,那么实体集E在联系集R中的参与就被称为是全部的;如果E中一些实体可能不参与到R的联系中,就称为是部分的。

​ 在E-R图中,用双线表示一个实体在联系集中的全部参与:

在这里插入图片描述

图9 显示全部参与的E-R图

这表明每个学生都必须要有导师。

基数约束:E-R图还提供了一种方式来描述更复杂的约束:线段上可以有一个关联的最小和最大基数,用 l . . h l..h l..h的形式表示,其中 l l l表示最小基数, h h h表示最大基数。最小值为1表示实体集全部参与联系集,最大值为1表示实体至多参与一个联系,而最大值为 ∗ * 代表没有限制。

在这里插入图片描述

图10 联系集上的基数限制

​ 表明每名学生必须有且只有一位导师,导师可以有0名或任意多的学生,因此 a d v i s o r advisor advisor联系时从 i n s t r u c t o r instructor instructor s t u d e n t student student的一对多联系。

4.5 主码

​ 一种区分给定实体集中的实体和给定联系集的联系的方式

4.5.1 实体集

​ 一个实体的属性取值必须可以唯一标识该实体,那么在之前定义的关系模式的码(key)的概念直接适用于实体集。关系模式中的超码、候选码、主码的概念同样适用于实体集。

4.5.2 联系集

​ 设 R R R是一个设计实体集 E 1 , E 2 , ⋯ , E n E_1,E_2,\cdots,E_n E1,E2,,En的联系集。设 p r i m a r y _ k e y ( E i ) primary\_key(E_i) primary_key(Ei)代表构成实体集 E i E_i Ei的主码的属性集合。

​ 联系集是联系实例的集合,并且每个实例都由参与其中的实体唯一标识,因此,属性集合
p r i m a r y _ k e y ( E 1 ) ∪ p r i m a r y _ k e y ( E 2 ) ∪ ⋯ ∪ p r i m a r y _ k e y ( E n ) primary\_key(E_1)\cup primary\_key(E_2)\cup\cdots\cup primary\_key(E_n) primary_key(E1)primary_key(E2)primary_key(En)
构成了联系集的一个超码。

二元联系集主码的选择:

  1. 多对多:联系集主码由双方主码的并集构成。
  2. 一对多多对一:"多"方的主码是最小的超码,并被用作主码。例如,如果每名学生最多只能有一位导师( s t u d e n t student student i n s t u c t o r instuctor instuctor的联系是多对一的),则 a d v i s o r advisor advisor的主码就仅是 s t u d e n t student student的主码。
  3. 一对一:任一参与实体集的主码都构成最小超码,任选一个作为联系集的主码

非二元联系集主码的选择:

如果不存在基数约束,那么前文所述的超码就是唯一的候选码即主码。

如果有基数约束,我们约定一个联系集最多有一个箭头指出,理由如下。

​ 假设实体集 E 1 , E 2 , E 3 , E 4 E_1,E_2,E_3,E_4 E1,E2,E3,E4之间有联系集 R R R,并且只有指向实体集 E 3 E_3 E3 E 4 E_4 E4的边 带箭头。那么有两种可能的解释:

  1. 来自 E 1 , E 2 E_1,E_2 E1,E2的一个特定实体组合可以和至多一个来自 E 3 , E 4 E_3,E_4 E3,E4的实体组合相关联。因此,联系 R R R的主码可以用 E 1 , E 2 E_1,E_2 E1,E2的主码的并集来构造
  2. 来自 E 1 、 E 2 、 E 3 E_1、E_2、E_3 E1E2E3的一个特定实体组合至多可与来自 E 4 E_4 E4的一个实体组合相关联,并且来自 E 1 、 E 2 、 E 4 E_1、E_2、E_4 E1E2E4的一个特定实体组合至多可与来自 E 3 E_3 E3的一个实体组合相关联,那么 E 1 , E 2 , E 3 E_1,E_2,E_3 E1,E2,E3的主码并集构成一个候选码, E 1 , E 2 E_1,E_2 E1,E2 E 4 E_4 E4的主码的并集也是如此

​ 因此,为了避免混淆,只允许非二元联系集有一个箭头指出,在这种情况下,两种解释是等价的。

​ 综上,非二元联系集 R R R的主码是那些没有被来自联系集 R R R的箭头指向的、参与实体集 E i E_i Ei的主码的并集。

4.5.3 弱实体集

弱实体集(weak entity set)的存在依赖于另一个实体集,称为其标识性实体集(identifying entity set);使用标识性实体集的主码以及称为分辨符属性(discriminator attribute)的额外属性来唯一地标识弱实体,而不是将主码于弱实体相关联。非弱实体集的实体集被称为强实体集(strong entity set)

​ 例如:考虑一个 s e c t i o n section section实体,由课程编号、学期、学年以及课程段标识来唯一标识。课程段实体与课程实体相关联。假定我们在 s e c t i o n section section c o u r s e course course实体集之间创建一个 s e c _ c o u r s e sec\_course sec_course联系集。

​ 那么 s e c _ c o u r s e sec\_course sec_course中的信息是冗余的,由于 s e c t i o n section section已有 c o u r s e _ i d course\_id course_id属性,它表示该课程段所关联的课程。消除这种冗余的一种方式是去掉 s e c _ c o u r s e sec\_course sec_course联系;然而这么做使得两个实体集之间的联系隐含于一个属性中,这并不是我们想要的。

​ 另一种方法是 s e c t i o n section section实体中不保存 c o u r s e _ i d course\_id course_id属性,而只保存剩下的 s e c _ i d 、 y e a r sec\_id、year sec_idyear以及 s e m s t e r semster semster,单这样 s e t i o n setion setion实体集就没有足够的属性来唯一标识一个特定的 s e c t i o n section section实体;尽管每个 s e c i o n secion secion实体都是可区分的,不同课程的课程段也可能共享相同的 s e c _ i d 、 y e a r sec\_id、year sec_idyear以及 s e m e s t e r semester semester。位解决这个问题,我们将 s e c _ c o u r s e sec\_course sec_course联系视为一种特殊的联系,它为唯一标识 s e c t i o n section section实体提供所需的额外信息,在此情况下是 c o u r s e _ i d course\_id course_id

​ 在这个例子中, s e c t i o n section section的主码由标识性实体集(即 c o u r s e course course)的主码加上弱实体集(即 s e c t i o n section section)的分辨符构成,因此,主码就是 { c o u r s e _ i d , s e c _ i d , y e a r , s e m e s t e r } \{course\_id,sec\_id,year,semester\} {course_id,sec_id,year,semester}

​ 每个弱实体必须和一个标识性实体相关联;也就是说,弱实体集被称为存在依赖(existence dependent)于标识性实体集。标识性实体集被称为拥有它所标识的弱实体集。将弱实体集与标识性实体集相关联的联系被称为标识性联系(identifying ralationship)。

​ 在E-R图中,通过双边框的矩形描述弱实体集,其分辨符被加上虚的下划线。关联弱实体集和标识性强实体集的联系集以及双边框的菱形表示。

在这里插入图片描述

图11 具有弱实体集的E-R图

4.6 从实体集中删除冗余属性

​ 一个属性在两个实体集 A , B A,B A,B中均存在,并在 A A A中是主码,那么它在 B B B中是冗余的,需要删除。

一个例子

联系集:

  • i n s t _ d e p t inst\_dept inst_dept:关联教师和系
  • s t u d _ d e p t stud\_dept stud_dept:关联学生和系
  • t e a c h e s teaches teaches:关联教师和课程段
  • t a k e s takes takes:关联学生和课程段,具有描述属性 g r a d e grade grade
  • c o u r s e _ d e p t course\_dept course_dept:关联教师和课程段
  • s e c _ c o u r s e sec\_course sec_course:关联课程段和课程
  • s e c _ c l a s s sec\_class sec_class:关联课程段和时段
  • a d v i s o r advisor advisor:关联学生和教师
  • p r e r e q prereq prereq:关联课程和先修课程

在这里插入图片描述

图12 大学机构的E-R图

4.7 将E-R图转换为关系模型

​ 在数据库设计中,对于每个实体集以及每个联系集,都有唯一的关系模式与之对应。

4.7.1 强实体集的表示

​ 设 E E E是只具有简单描述性属性 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,,an的强实体集。我们用具有 n n n个不同属性的、称作 E E E的模式来表示这个实体集,写为
E = ( a 1 , a 2 , ⋯ , a n ) E=(a_1,a_2,\cdots ,a_n) E=(a1,a2,,an)

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

​ 对于复合属性,将其拆分为它含有的模式,例如 i n s t r u c t o r instructor instructor n a m e name name是复合属性,包括 f i r s t _ n a m e 、 m i d d l e _ i n i t i a l first\_name、middle\_initial first_namemiddle_initial l a s t _ n a m e last\_name last_name s t r e e t street street也是复合属性,那么应该写为:
KaTeX parse error: Expected 'EOF', got '&' at position 12: instructor&̲(ID,first\_name…
​ 对于多值属性 M M M,我们构建关系模式 R R R,该模式具有一个对应于 M M M的属性 A A A,以及对应于 M M M所在的实体集或联系集的主码属性。

​ 考虑 i n s t r u c t o r instructor instructor中含有 p h o n e _ n u m b e r phone\_number phone_number多值属性, i n s r u c t o r insructor insructor的主码是 I D ID ID,那么对于这个多值属性,我门构造一个关系模式:
i n s t r u c t o r _ p h o n e ( I D ‾ , p h o m e _ n u m b e r ‾ ) instructor\_phone(\underline{ID},\underline{phome\_number}) instructor_phone(ID,phome_number)
​ 教师的每个电话都表示为该模式上的关系中的一个唯一元组。

​ 在一个实体集只有两个属性:单个主码属性 B B B以及单个多值属性 M M M,我们可以删掉多值属性的关系模式。

4.7.3 弱实体集的表示

​ 设 A A A是具有属性 a 1 , a 2 , ⋯ , a m a_1,a_2,\cdots,a_m a1,a2,,am的弱实体集, B B B A A A所依赖的强实体集, B B B的主码由属性 b 1 , b 2 , ⋯ , b n b_1,b_2,\cdots,b_n b1,b2,,bn构成。我们用名为 A A A的关系模式表示实体集 A A A,该模式的每个属性对应于以下集合中的一个成员:
{ a 1 , a 2 , ⋯ , a m } ∪ { b 1 , b 2 , ⋯ , b n } \{a_1,a_2,\cdots,a_m\}\cup\{b_1,b_2,\cdots,b_n\} {a1,a2,,am}{b1,b2,,bn}
​ 作为示例, s e c t i o n section section为弱实体集,该实体集有属性: s e c _ i d 、 s e m e s t e r 、 y e a r sec\_id、semester、year sec_idsemesteryear,所依赖的 c o u r s e course course实体集的主码是 c o u r s e _ i d course\_id course_id。则可写为:
s e c t i o n ( c o u r s e _ i d ‾ , s e c _ i d ‾ , s e m e s t e r ‾ , y e a r ‾ ) section(\underline{course\_id},\underline{sec\_id},\underline{semester},\underline{year}) section(course_id,sec_id,semester,year)
​ 加上依赖主码就行了

4.7.4 联系集的表示

​ 联系集的主码加上属性即可。

4.8 扩展的E-R特性

特化、概化、高层和低层实体集、属性继承和聚集

4.8.1 特化

​ 实体集中可能包含一些实体的子集,这些实体在某些方面区别于实体集中的其他实体。例如,实体集中某个实体子集可能具有不被该实体集中所有实体所共享的一些属性。

​ 例如, p e r s o n person person实体集可进一步分为以下两类:

  • e m p l o y e e employee employee
  • s t u d e n t student student

​ 这两类人中的每一类都通过一个属性集来描述,它包括 p e r s o n person person实体集的所有属性加上可能的附加属性。例如 e m p l o y e e employee employee实体可进一步用 s a l a r y salary salary属性来描述,而 s t u d e n t student student实体可进一步用 t o t _ c r e d tot\_cred tot_cred属性来描述。在实体集内部进行分组的过程称为特化

重叠特化:一个实体可以属于多个特化实体集,使用多个单独的箭头

不相交特化:一个实体至多可以属于一个特化实体集,使用单个箭头

​ 特化联系还可能被称作超类-子类联系。

在这里插入图片描述

图13 特化和概化

4.8.2 概化

​ 从初始实体集到一些列不同层次的实体子集的细化代表了一种自顶向下的设计过程,在这个过程中显式地产生出差别。设计过程也可以通过自底向上地方式进行,其中多个实体集根据共同具有的特征综合成一个更高层的实体集。(其实是一个概念?设计的顺序不同而已)

4.8.3 属性继承

属性继承:高层实体集的属性被低层实体集继承。例如 s t u d e n t 、 e m p l o y e e student、employee studentemployee继承了 p e r s o n person person的属性。(实体集)

​ 此外,低层实体集(或子类)同时还继承地参与其高层实体(或超类)所参与地联系集。例如。假如 p e r s o n person person实体集参与到与 d e p a r t m e n t department department p e r s o n _ d e p t person\_dept person_dept联系集。那么 p e r s o n person person的子类 s t u d e n t 、 e m p l o y e e 、 i n s t r u c t o r student、employee、instructor studentemployeeinstructor s e c r e t a r y secretary secretary实体集也都隐式地参与到与 d e p a r t m e n t department department p e r s o n _ d e p t person\_dept person_dept联系中。

​ 图13描述了实体集的一种层次结构。在层次结构中,一个给定实体集作为低层实体集只参与到一个ISA联系中,即在这样的图中实体集只具有单继承。如果一个实体集作为低层实体集参与到多个ISA联系中,则称这个实体集具有多继承,且产生的结构被称为

4.8.4 特化上的约束


​ 对特化/概化的一种约束规定了特化是重叠还是不相交的,另一种类型的约束时完全性约束,它规定高层实体集中的一个实体是否必须至少属于该特化/概化内的一个低层实体集。

  • 全部特化概化。每个高层实体必须属于一个低层实体集
  • 部分特化概化。一些高层实体可以不属于任何底层实体集合

​ 部分特化是默认的,可以在E-R图中指定全部特化:通过在图中加入关键字“total”,并画一条从关键字到应用该关键字的相应空心箭头(对于全部特化)的虚线,或者画从关键字到应用该关键字的一组空心箭头(对于重叠特化)的虚线。

在这里插入图片描述

图14 全部特化示例(total处)

4.8.5 聚集

​ 考虑之前的三元联系 p r o j _ g u i d e proj\_guide proj_guide,是 i n s t r u c t o r 、 s t u d e n t instructor、student instructorstudent p r o j e c t project project之间的联系集,现在假设在项目上指导学生的每位教师需要提交月度评估报告。我们将评估报告建模为具有 e v a l u a t i o n _ i d evaluation\_id evaluation_id主码的 e v a l u a t i o n evaluation evaluation实体。

​ 记录一个 e v a l u a t i o n evaluation evaluation所对应的 ( s t u d e n t , p r o j e c t , i n s t r u c t o r ) (student,project,instructor) (student,project,instructor)组合的另一种方式是在这四个实体集之间建立一个四元联系集 e v a l _ f o r eval\_for eval_for。(四元联系是必需的,例如, s t u d e n t student student e v a l u a t i o n evaluation evaluation之间二元联系无法让我们表示一个 e v a l u a t i o n evaluation evaluation所对应的 ( p r o j e c t , i n s t r u c t o r ) (project,instructor) (project,instructor)组合)

​ 对于这样一个四元联系集,可以得到如下E-R图:

在这里插入图片描述

图15 具有冗余联系的E-R图

p r o j _ g u i d e proj\_guide proj_guide e v a l _ f o r eval\_for eval_for不能合并,因为某些 i n s t u c t o r , p r o j e c t , s t u d e n t instuctor,project,student instuctor,project,student的组合可能没有相关联的 e v a l u a t i o n evaluation evaluation

​ 显然这个E-R图是存在E-R图,因为 e v a l _ f o r eval\_for eval_for的每一个三元组合都必须在 p r o j _ g u i d e proj\_guide proj_guide中,如果 e v a l u a t i o n evaluation evaluation是一个值而不是一个实体,那么我们可以将 e v a l u a t i o n evaluation evaluation作为 p r o j _ g u i d e proj\_guide proj_guide联系集的一个多值复合属性。但是 e v a l u a t i o n evaluation evaluation也可能和其他实体相关联,就不可以这样了,例如,每份评估报告可能和一个 s e c r e t a r y secretary secretary相关联,负责评估报告的后续处理以支付奖学金。

​ 那么可以用聚集优化,通过这种抽象,联系被视为高层实体,这样,我们可以将 p r o j _ g u i d e proj\_guide proj_guide联系集看成一个名为 p r o j _ g u i d e proj\_guide proj_guide的高层实体集,然后我们就可以在 p r o j _ g u i d e proj\_guide proj_guide e v a l u a t i o n evaluation evaluation之间创建一个二元联系 e v a l _ f o r eval\_for eval_for来表示一个 e v a l u a t i o n evaluation evaluation对应于哪个 ( s t u d e n t , p r o j e c t , i n s t r u c t o r ) (student,project,instructor) (student,project,instructor)组合。

在这里插入图片描述

图16 具有聚集的E-R图

4.9 实体-联系设计问题

p200 可以看一下

E-R图总结

在这里插入图片描述

图17 E-R表示法中使用的符号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

42.基于SpringBoot + Vue实现的前后端分离-服装销售平台管理系统(项目 + 论文)

项目介绍 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的交换和信息流通显得特别重要。因此,开发合适的服装销售平台成为企业必然要走的一步棋。开发合适的服…

场景文本检测识别学习 day01(传统OCR的流程、常见的损失函数)

传统OCR的流程 传统OCR:传统光学字符识别常见的的模型主要包括以下几个步骤来识别文本 预处理:预处理是指对输入的图像进行处理,以提高文字识别的准确率。这可能包括调整图像大小、转换为灰度图像、二值化(将图像转换为黑白两色&…

学习人工智能:为何PyTorch深度学习框架不可或缺

在人工智能(AI)的浩瀚领域中,深度学习作为其核心分支,正以其强大的数据处理能力、模式识别能力和预测能力引领着科技的飞速发展。而在深度学习的众多工具与框架中,PyTorch无疑是一颗璀璨的明星。本文将从PyTorch的特点…

【WSN覆盖优化】基于灰狼优化算法的无线传感器网络覆盖 GWO-WSN覆盖优化【Matlab代码#74】

文章目录 【可更换其他算法,获取资源请见文章第5节:资源获取】1. 灰狼优化算法2. WSN节点感知模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法,获取资源请见文章第5节:资源获取】 1. 灰狼优化算法 此处略。 2.…

推动科技创新润德生物邀您到场参观2024第13届生物发酵展

参展企业介绍 山东润德生物科技有限公司成立于2014年10月17日,是一家围绕生物制品的研发、生产、营销、国际贸易、技术服务为核心业务的国家高新技术企业,近年来荣获国家制造业单项冠军示范企业、国家级绿色工厂、国家知识产权优势企业、国家工业产品绿…

目标跟踪——行人检测数据集

一、重要性及意义 目标跟踪和行人检测是计算机视觉领域的两个重要任务,它们在许多实际应用中发挥着关键作用。为了推动这两个领域的进步,行人检测数据集扮演着至关重要的角色。以下是行人检测数据集的重要性及意义的详细分析: 行人检测数据…

4核8G服务器性能怎么样?4核8G12M配置可应对哪些场景?

腾讯云4核8G服务器多少钱?腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月,活动页面 txybk.com/go/txy 活动链接打开如下图所示: 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器,详细配置为:轻量4核…

基于Spring Boot+Vue的汽车销售系统

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统汽车销售信息管理难度大,容错率低&#xff0…

【Linux】达梦数据库安装部署(附详细图文)

目录 一、安装前的准备工作 1.检查操作系统配置 (1)获取系统位数 getconf LONG_BIT (2)查看操作系统release信息 cat /etc/system-release (3)查询系统名称 uname -a (4)查看操…

VS Code远程连接服务器运行python程序

之前一直用pycharm连接服务器跑程序,pycharm需要本地和远程都存一份代码,然后把本地的更新同步到服务器上来实现代码修改,后来实习的时候发现企业里面都用VS Code,不得不说,VS Code真的很方便,直接连服务器…

「媒体宣传」科技IT行业有哪些媒体邀约资源-51媒体网

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 科技IT行业的媒体邀约资源非常丰富,包括了各种类型的传统媒体和新兴的网络媒体平台。以下是一些主要的媒体邀约资源: 除此之外,还有一些其他科技类网络…

算法 第34天 贪心3

1005 K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能…

Failed to start docker.service: Unit is not loaded properly: Invalid argument.

Failed to start docker.service: Unit is not loaded properly: Invalid argument. 未知原因:docker服务无法正常load 解决方式: 卸载docker, 删除docker.service 重新安装docker Docker是一种相对使用较简单的容器,我们可以通过…

【QT+QGIS跨平台编译】063:【qca-softstore+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、qca-softstore介绍二、QCA下载三、文件分析四、pro文件五、编译实践5.1 windows下编译5.2 linux下编译5.3 macos下编译一、qca-softstore介绍 QCA-Softstore 是一个软件证书存储插件,它是为 QCA 框架设计的。这个插件提供了一个简单的持久化证书…

SpringCloud Alibaba Sentinel 规则持久化

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十七篇,即使用 Sentinel 实现规则持久化。 二、概述 从前面我们做的实验可知,…

循环双链表算法库构建

学习贺老师数据结构数据结构之自建算法库——循环双链表_数据结构编写一个程序linklist.cpp-CSDN博客 模仿单链表逻辑,实现双链表, 大差不差 v1.0: 实现基本功能 V1.0 1.主要功能: //(1)头插法建立循环双链表 void Create_Double_CyclicList_Head(DoubleLinkList_Cyclic *&am…

相机标定——四个坐标系介绍

世界坐标系(Xw,Yw,Zw) 世界坐标系是一个用于描述和定位三维空间中物体位置的坐标系,通常反映真实世界下物体的位置和方向。它是一个惯性坐标系,被用作整个场景或系统的参考框架。在很多情况下,世界坐标系被认为是固定不变的,即它…

51单片机之串口通信

目录 1.串口简介 1.1TXD和RXD 1.2通讯接口 1.3通信方式 1.4 51单片机的UART模式 2.串口配置 2.1寄存器简介 SCON寄存器配置 PCON配置 2.2代码配置串口 2.2.1 配置串口发送数据 2.2.2配置电脑向单片机发送数据点亮LED 1.串口简介 串口是一个应用十分广泛的通讯接口&am…

对接穿山甲激励视频广告,收益如何?

激励视频广告一直是广告平台探索的重要广告类型,在激励任务达成或者激励视频退出时,为用户新增广告任务。“激励视频”广告满足部分用户多看广告获得更多奖励心理的需求的同时,提升了开发者广告曝光机会。进而提升了广告变现效率。#APP广告变…

复习知识点整理

零碎语法 1.导入某个文件夹的index文件,index可以省略(这里导入的是router和store文件下的index.js文件) 2.路由懒加载 this 1.在vue文件中使用router\store对象时 this:普通函数的this指向vue实例对象(在没有明确指向的时候…