​虽然基本的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. 你不知道的console调试

    概述 浏览器的开发者工具我们经常用,console.log我们也经常用,但是console还有其它一些方便调试的命令,我总结了几个常用的记录在下面,供以后开发时参考,相信对其他人也有用. 获取js执行 ...

  2. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 2.安装配置OpenStack基础服务

    节点配置情况说明: 控制节点:controller: IP:192.168.164.128 hostname&hosts:likeadmin 计算加点:Nova: IP:192.168.164 ...

  3. scrapy Data flow

    The data flow in Scrapy is controlled by the execution engine, and goes like this:1. The Engine gets ...

  4. PHP利用Session实现上传进度

    实现文件上传进度条基本是依靠JS插件或HTML5的File API来完成,其实PHP配合ajax也能实现此功能. PHP手册对于session上传进度是这么介绍的: 当 session.upload_ ...

  5. 3-1 vue生命周期

    Vue实例生命周期函数 ================================================================== ③-④当beforeMount这个函数执行 ...

  6. 个人总结的一个中高级Java开发工程师或架构师需要掌握哪几点!

    今天,我来唠叨几句~~ 知识改变命运,对于Java程序员来说,技术不断更新,只有及时充电,才能不被市场淘汰.今天为大家分享Java程序员学习的6个小技巧. 1.一定要看书 现在学习Java变得比以前容 ...

  7. odoo开发笔记 -- 升级模块 提示外部ID找不到

    可能的原因: 排查顺序: 1.id在视图中的加载顺序问题. 可能是:__manifest__.py文件,view文件先后加载顺序有问题:也可能是:xml 视图文件中,被引用的id出现在了引用id的下方 ...

  8. SQL 必知必会·笔记<18>管理事务处理

    事务处理是一种机制,用来管理必须成批执行的SQL操作,保证数据库不包含不完整的操作结果.利用事务处理,可以保证一组操作不会中途停止,它们要 么完全执行,要么完全不执行(除非明确指示).如果没有错误发生 ...

  9. dfs问题总结

    组合总和——给定元素不重复 需求:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candida ...

  10. centos适用的国内yum源:网易、搜狐

    默认的yum源是centos官网的,速度慢是不用说了.所以使用yum安装东西之前需要把yum源改为国内的.参考 http://mirrors.163.com/.help/centos.html 和 h ...