数据库系统概念读书笔记(2)--实体联系模型

 

1.几个基本概念

实体-联系(E-R)模型是基于如下的一种认识:世界由一组实体和实体之间的相互联系组成。E-R模型是一种语义模型, 前面也提到过,这种模型经常作为关系数据库模型的基础。 很多数据库设计工具也都使用了E-R模型的概念。

下面是几个核心概念

  1. 实体集:具有相同类型及共享相同性质的实体集合。而相应的实体集中每一个元素就是实体。这个概念对应到面向对象中就是class-object概念, 而我们野可以想象,实体集还会有继承的概念(虽然我暂时还无法想象在数据库中如何实现实体集的继承)。
  2. 属性,值和域:实体是通过一组属性来表示的,属性就是每个成员所具有的描述性性质,而每个实体的所有属性都有一个, 每一个属性的取值范围就称作该属性的
  3. 联系集:联系是指实体之间的相互关联,而同类型的关系组成的集合就是关系集。在通常的数据库系统中,联系可以表现为两种,一种是联系表,而另一种就可能是一个简单的sql语句。

2.约束

有了实体集合,有了联系集合,自然而然的就产生出来约束,约束描述的是实体集和实体集之间的关系,而这种关系就具现为一个联系集。 我们要讨论的是映射基数参与约束这两类最重要的约束。

2.1.映射基数

映射基数是指一个实体集和另一个实体集之间的实体对应关系。有如下的四种

  1. 一对一
  2. 多对一
  3. 一对多
  4. 多对多

具体的解释可以看书,映射基数在描述二元联系集的时候,特别有用。

2.2.参与约束

参与约束只是讲实体集和联系集的关系,实体集E中的任意一个实体e如果都参与到了联系集R中,那么就说E对R是完全参与的;相对来说就有部分参与

3.码

码是在实体集中唯一表示某一个实体的属性集合,按照超码中包含的属性数量分可以分为“超码”,“候选码”,“主码”三种。

  1. 超码:在实体集中任何可以唯一标识实体的属性集合都叫做超码,所以,根据这个定义,任何超码的超集也都是超码。
  2. 候选码:任意真子集都不能成为超码的超码叫做候选码。
  3. 主码:数据库设计者选中的候选码。

候选码应该选择那些从不或者极少变化的属性。

4.设计问题

4.1.用实体集还是用属性

书中给的例子是很明显的,employee-name本身不能作为一个实体,尽管employee-name可能会有first-name,会有 middle-name 和last-name,但是把它们做成employee 的属性更加的合理。而把telephone做成一个实体就很有道理了,因为我们可以存储telephone的额外信息。而有两种错误一定要注意一下。

  1. 不要用实体集的主码作为另一个实体集的属性。
  2. 不要将有关系的实体集的主码属性作为联系集的属性。(这句话不明白)
4.2.用实体集还是联系集
  1. 原则:当描述发生在实体之间的行为时采用联系集。
4.3.二元联系集与n元联系集
  1. n元关系可以分解成二元关系,但是会出现关系描述不准确的情况。

5.弱实体集和其他的扩展特性

如果一个实体集的属性可能不足以形成主码,这样的实体集就成为弱实体集。反之就叫做强实体集。而作为设计的目标之一,一个弱实体集必须要依赖 于一个强实体集,标识性联系是从弱实体集到标识实体集的多对一的联系,并且弱实体集全部参与联系。

另外,我们还有一些关于实体的特性,比如继承,说的是实体集之间的继承关系,但是这样的关系只是在设计的时候适用,在真正建立 table的时候,会造成一些实现上的困难。还有聚集,这是非常有用的,说明了联系集和其他集的联系集,具体的例子参考书,就是employee, branch,job和manager之间的关系(论述非常的经典)。

6.E-R模式像Table转化

6.1.强实体集

强实体集被对应成数据库里面的一张表,有多少个属性就有多少列。并且主码做主键

6.2.弱实体集

弱实体集也被对应成一张表,这张表一定要包含所依赖的强实体集的主码。

6.3.联系集

联系集被翻译成一张表,整个表里面要包含所有参与联系的实体的主码。并且附加描述性属性。

  1. 1对1:任意一方的主码都可以拿来作为主码。
  2. 1对n:多方主码成为联系集的主码,单方主码作为属性。
  3. n对n:把双方的主码的组合作为主码。
6.4.复合属性

性为每一个子属性创建一个单独的属性。

6.5.多值属性

必须为多值属性创建一个表。

6.6.一般化(父子集成的关系)

通常都为子实体集合创建一个单独的表,如果还有实体属于父实体集合,那么也要为父实体创建表

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值