《数据库系统概念》11-扩展的E-R特性
虽然基本的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特性的更多相关文章
- Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php
Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php 1. RFC2396标准 including HTML 4.01 section ...
- 《数据库系统概念》1-数据抽象、模型及SQL
DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...
- 数据库系统概念:SQL的数据类型与模式、授权
public class DataBase { public static void main() { } } /* 4.5 SQL的数据类型与模式 4.5.1 SQL的日期与时间类型 SQL标准支持 ...
- C#语言のC#扩展方法(.Net特性)
this在C#中的常见用法:1.在C#中,this关键字代表当前实例,我们可以用this.来调用当前实例的成员方法,变量,属性,字段等; 2.也可以用this来做为参数状当前实例做为参数传入方法. 3 ...
- 《数据库系统概念》10-ER模型
通过建立实体到概念模型的映射,Entity-Relationship Model可以表达整个数据库的逻辑结构,很多数据库产品都采用E-R模型来表达数据库设计. 一.E-R模型采用了三个基本概念:实体集 ...
- SQLServer数据库系统概念
数据模型是一种抽象模型,现实世界中的客观事物是彼此相互联系的 (1)数据模型是一组集成的概念,用户描述和操作组织内的数据,数据间的联系以及对数据的约束,它包含了数据结构,数据操作和完整性约束 (2)概 ...
- C++类的完美单元测试方案——基于C++11扩展的friend语法
版权相关声明:本文所述方案来自于<深入理解C++11—C++11新特性解析与应用>(Michael Wong著,机械工业出版社,2016.4重印)一书的学习. 项目管理中,C语言工程做单元 ...
- 数据库系统概念:JDBC
import java.sql.*; public class DataBase { public static void main() { } } /* 5.1.1 JDBC */ class JD ...
- java 11 值得关注的新特性
JEP 181: Nest-Based Access Control 基于嵌套的访问控制 JEP 309: Dynamic Class-File Constants 动态类文件 JEP 315: Im ...
随机推荐
- Swift5 语言指南(六) 字符和字符串
甲串是一系列字符,如的或.Swift字符串由类型表示.可以通过各种方式访问a的内容,包括作为值的集合."hello, world""albatross"Stri ...
- Python模块学习 - fabric
简介 fabric是一个Python的库,同时它也是一个命令行工具.使用fabric提供的命令行工具,可以很方便地执行应用部署和系统管理等操作. fabric依赖于paramiko进行ssh交互,fa ...
- win10 + gtx1060 + cuda8.0 + caffe + vs2013 + Tensorflow + PyTorch
一. 安装cuda8.0 1)先去官网下载cuda8.0 https://developer.nvidia.com/cuda-toolkit 2)下载完之后进行安装,安装时间有点长,请耐心等待,默认 ...
- 线程的中断(Lock与synchronized)
Thread包含interrupt()方法,因此你可以终止被阻塞的任务,这个方法将设置线程的中断状态.如果一个线程已经被阻塞,或者试图执行一个阻塞操作.那么设置这个线程的中断状态将 抛出Interru ...
- Android开发之漫漫长途 XVII——动画(续)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Java 面试基础总结(一)
1.九种基本数据类型的大小以及它们的封装类 java提供的九种基本数据类型:boolean.byte(1).char(2).short(2).int(4).long(8).float(4).doubl ...
- 如何用TexturePacker打包素材
如何用TexturePacker打包素材 TexturePacker是一个非常好用的图片素材打包工具,它能帮助你减少游戏的图片内存使用. 官方下载地址:http://www.codeandweb.co ...
- 通过 URL 打开 Activity
为每个 Activity 绑定一个 url 可以方便的让第三方 app 直接打开这些 Activity.也可以方便在 app 内部进行页面跳转,解耦. 背景 举一个常见的案例,假设我们有个产品 A,产 ...
- netty源码解解析(4.0)-7 线程模型-IO线程EventLoopGroup和NIO实现(二)
把NIO事件转换成对channel unsafe的调用或NioTask的调用 processSelectedKeys()方法是处理NIO事件的入口: private void processSelec ...
- Extjs4.2+webAPI+EF实现分页以及webapi的数据传值(续)
现在领导又要增加功能,需要分页的时候,每页显示N条信息.由于是每个页面都要改,所有需要声明了一个扩展类代码如下: // Copyright : 欧蓝德畅电子技术有限公司. All rights res ...