​虽然基本的E-R特性可以应对大部分数据库建模,但为了使用方便,也提供扩展的E-R特性

一、特化Specialization
有时一个实体集会保护若干子集,这些子集各自具有不同的属性。比如person可以包含employee和student子集,这些子集在person本身属性的基础上,附加了特殊的属性,employee会有salary属性,student会有score属性。特化就是在实体集内部分组的过程。
在E-R模型中特化用从特化实体指向被特化实体的空心箭头线表示,叫做ISA联系,既“is a”,比如从employee指向person,也既employee is a person。
有些实体集可以有不同的特化方式,employee可以特化为instructor、secretary,也可以特化为temporary_employee、permanent_employee,这样一个employee可能是一个instructor的同时也是一个permanent_employee,这种一个实体可以属于多个实体集的特化称为重叠特化(overlapping
specialization),只能属于一个实体集的特化则称为不相交特化(disjoint
specialization)。重叠特化用两个独立的空心箭头,不相交特化使用一个箭头。

二、概化(Generalization)
a)特化是在自顶向下(top-down)的设计过程中,显式地将初始实体分为一系列不同级别子实体的过程。设计过程也可以是自底向上(bottom-up)的,将一系列低级别的实体合成为具有基本属性的顶层实体,这便是概化,高层实体集与一个或多个低层实体集之间为包含关系。高层与低层实体集也可以分别称为超类(superclass)和子类(subclass)。
b)属性继承(Attribute Inheritance)
由特化和概化产生的高层和低层实体的一个重要特性是属性集成,高层实体集的属性被低层实体集继承,所以高层实体集的属性适用于低层实体集,但反之则不成立。

三、概化的约束
a)条件定义的
在条件定义的低层实体集中,根据实体是否满足某个特定的条件来确定成员资格。比如通过student.student_type=granduate/undergranted来区分子实体是本科生还是研究生。
b)用户定义的
用户定义的低层实体集由数据库用户自行决定实体的划分。比如将教师分为几个教学组,employee的划分方式由用户决定。
c)完整性约束(completeness constraint)
全部概化\特化:每个高层实体必须属于一个低层实体集;
部分概化\特化:不是所有高层实体都有属于的低层实体集。
这在数据插入、删除上会带来区别。

学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan

《数据库系统概念》11-扩展的E-R特性的更多相关文章

  1. Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php

    Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php 1. RFC2396标准 including HTML 4.01 section  ...

  2. ​《数据库系统概念》1-数据抽象、模型及SQL

    ​DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...

  3. 数据库系统概念:SQL的数据类型与模式、授权

    public class DataBase { public static void main() { } } /* 4.5 SQL的数据类型与模式 4.5.1 SQL的日期与时间类型 SQL标准支持 ...

  4. C#语言のC#扩展方法(.Net特性)

    this在C#中的常见用法:1.在C#中,this关键字代表当前实例,我们可以用this.来调用当前实例的成员方法,变量,属性,字段等; 2.也可以用this来做为参数状当前实例做为参数传入方法. 3 ...

  5. 《数据库系统概念》10-ER模型

    通过建立实体到概念模型的映射,Entity-Relationship Model可以表达整个数据库的逻辑结构,很多数据库产品都采用E-R模型来表达数据库设计. 一.E-R模型采用了三个基本概念:实体集 ...

  6. SQLServer数据库系统概念

    数据模型是一种抽象模型,现实世界中的客观事物是彼此相互联系的 (1)数据模型是一组集成的概念,用户描述和操作组织内的数据,数据间的联系以及对数据的约束,它包含了数据结构,数据操作和完整性约束 (2)概 ...

  7. C++类的完美单元测试方案——基于C++11扩展的friend语法

    版权相关声明:本文所述方案来自于<深入理解C++11—C++11新特性解析与应用>(Michael Wong著,机械工业出版社,2016.4重印)一书的学习. 项目管理中,C语言工程做单元 ...

  8. 数据库系统概念:JDBC

    import java.sql.*; public class DataBase { public static void main() { } } /* 5.1.1 JDBC */ class JD ...

  9. java 11 值得关注的新特性

    JEP 181: Nest-Based Access Control 基于嵌套的访问控制 JEP 309: Dynamic Class-File Constants 动态类文件 JEP 315: Im ...

随机推荐

  1. typescript handbook 学习笔记1

    概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...

  2. 分布式控制系统Git学习

    git : n. 饭桶,无用的人 github : n. 社交编程及代码托管网站 hub: n. 中心:毂:木片 Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创 ...

  3. 读取.Properties文件以及Spring注解读取文件内容

    public class Main { public static void main(String[] args) throws IOException { //创建Properties对象 Pro ...

  4. 人脸检测----Adaboost学习方法

    有了haar特征,有了提升性能的积分图,是不是已经可以很好的解决人脸检测问题了?答案是:no. 因为,计算每一个特征值的时候速度都大幅提升了,但是,一个小小的24*24是人脸图像根据不同的位置, 以及 ...

  5. 微软2014校招笔试题-String reorder

    Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB Description For this question, your pro ...

  6. 关于c++11中的thread库

    c++11中新支持了thread这个库,常见的创建线程.join.detach都能支持. join是在main函数中等待线程执行完才继续执行main函数,detach则是把该线程分离出来,不管这个线程 ...

  7. linux中sed命令的使用

    sed命令是linux或者shell编程中常用的筛选.替换命令,如果能熟练使用sed则对经常使用的人来说在工作上是非常有帮助的 下面把sed主要的用法列出来(有错误的地方大家可以指正): p命令只打印 ...

  8. 离不开的微服务架构,脱不开的RPC细节

    服务化有什么好处? 服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦,如下图所示: 服务A:欧洲团队维护,技术背景是Java 服务B:美洲团队维护,用C++实现 ...

  9. 使用Jenkins部署Spring Boot项目

    jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...

  10. PHP-CPP开发扩展(三)

    PHP-CPP是一个用于开发PHP扩展的C++库.本节讲解PHP函数形参相关的实现. 指定函数参数类型 有时候,我们需要指定函数的形参是数组或者指定的,那么在PHP-CPP里是否可以指定函数的参数类型 ...