数据库设计和ER模型

设计过程概览

设计阶段

  • 需求分析
  • 概念设计
  • 逻辑设计
  • 物理设计

设计选择

在设计时,我们必须确保避免两个主要的缺陷:

  • 冗余
  • 不完整

实体 - 联系模型

实体集

实体:对象 实体集:实体构成的集合 实体通过一组属性来表示,每个属性都有一个值。

联系集

联系是指多个实体间的相互关联 联系集就是相同类型联系的集合 实体在联系中扮演的功能称为实体的角色 联系也可以具有描述性属性

属性

每个属性都有一个可取值的集合,称为该属性的域 属性类型的划分:

  • 简单和复合
  • 单值和多值
  • 派生属性

约束

映射基数

  • 一对一
  • 一对多
  • 多对一
  • 多对多

参与约束

  • 全部参与
  • 部分参与

实体的码是一个足以分区每个实体的属性集 同样,码也可以用于唯一标识联系

从实体集中删除冗余属性

当决定好实体集后,必须挑选合适的属性

实体 - 联系 图(ER图)

基本结构

  • 分割成两部分的矩形:实体集
  • 菱形:联系集
  • 未分割的矩形:联系集的属性
  • 线段:实体集与联系集的连接
  • 虚线:联系集到联系集的连接
  • 双线:实体在联系集中的参与度
  • 双菱形:连接到弱实体集的标志性联系集
  • 带箭头的线:代表箭头所指的那方实体映射基数为1
  • 不带箭头的线:代表箭头所指的那方实体映射基数为多

复杂的属性

比如 Address

- city
- street

角色

通过再菱形和矩形之间的连线上进行标注来表示角色

非二元的联系集

即一个联系连接了两个以上的实体

批注 2020-03-08 205525

继承关系

批注 2020-03-08 205614

弱实体集

没有足够的属性以形成主码的实体集称为 弱实体集 有主码的实体集称为 强实体集

转换为关系模式

具有简单属性的强实体集表示

比如实体集student,有三个属性:ID、name、credit 可以转换成如下关系模式:

  student(ID,name,credit)

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

比如student有一个属性address,又有子属性city,street, 那么可生成关系模式:

  student(ID,name,credit,city,street)

弱实体集的表示

设A为一个弱实体集,B为A所依赖的一个强实体集。 那么可以创建一个关系模式: B(a1,a2,a3,x),其中a1,a2,a3为B的属性,x为B到A的外键约束

联系集的表示

设R为联系集,a1,a2...an为参与R的实体集构成的属性集合, b1,b2...bn为R的属性,则R的属性为: {a1,a2..an}∪{b1,b2,...bn} 如何选取主码:

  • 对于多对多的二元联系:参与实体集的主码属性并集成为主码
  • 对于一对一的联系集:任何一个实体的主码都可以选作为主码
  • 对于多对一或者一对多:多的那一方的实体集可以选取作为主码

模式冗余

一般情况下,连接弱实体集与其所依赖的强实体集的联系集模式是冗余的。

模式的合并

  • 在一对一的联系的情况下:联系集的关系模式可以跟参与联系的任何一个实体集的模式进行合并

    实体-联系设计问题

    用实体集还是用属性

    什么构成实体集,什么构成属性?这个问题要根据现实情况进行回答。 一个常见的错误是用一个实体集的主码作为另一个实体集的属性,而不是用联系 另一个错误是将相关实体集的主码属性作为联系集的属性

    用实体集还是用联系集

    一个原则是: 当描述发生在实体间的行为时采用联系集

    二元还是n元联系集

    数据库中的联系通常都是二元的。 一些非二元的联系可以通过拆分分为二元联系,但是这样做,有时并不那么自然

    联系属性的布局

    属性放到哪里,是实体集还是联系集? 这也是要根据实际情况进行决定

    扩展的E-R特性

    特化

    自顶向下的,可以看做OOP当中父类转换成子类的这么样一个过程

    概化

    同上,类似于OOP中的向上转型

    属性继承

    高层实体集的属性可以被底层实体集继承

    概化上的约束

    数据库设计者可以决定哪些实体能成为给定低层实体集的成员,条件可以如下:
  • 条件定义
  • 用户定义

    聚集

    E-R模型的一个局限性在于它不能表达联系间的联系。 聚集是一种抽象,它把联系视为高层实体,这样就可以表达联系之间的联系了

    转换为关系模式

    概化的表示

  • 为高层实体集创建一个模式,为每个低层实体集创建一个模式
  • 如果概化是不相交并且完全的,就是说不存在同时属于两个同级的低层实体集的实体

    聚集的表示

    聚集的主码是定义该聚集的联系集的主码

    数据库建模的其他表示法

  • ER图的其他表示法
  • 统一建模语言UML

    数据库设计的其他方面

  • 数据约束和关系数据库设计 显示声明约束的优点:
    • 自动保持数据的一致性
    • 一些约束在数据库模式的设计中非常有用
    • 当然也可以提高访问效率 缺点: 但是在数据更新时,执行约束会在性能上带来潜在的高代价

      使用需求:查询、性能

      主要的两个度量方法:
  • 吞吐量
  • 响应时间

    授权需求

    数据流、工作流

    工作流表示一个流程中的数据和任务的组合 当用户在执行工作流中的任务时,工作流会与数据库系统进行交互,除了工作流操作的数据之外,数据库还可以存储工作流自身的数据

    数据库设计的其他问题

    数据库设计要求设计者可以预先估计一个组织将来的需求,设计出的模式在需求发生变更时只要做最少的改动即可满足要求。

results matching " "

No results matching " "

results matching " "

No results matching " "