数据建模:思想与方法


文章目录

为什么要数据建模与数据库设计

软件之所以开发失败是很多时候是因为没有充分理解客户的需求。成功的软件开发过程应当能够在交付时超出用户的预期需求。
要达到用户的期望,就要很好的理解需求,以及根据需求设计数据库等

数据模型与概念模型

表达计算机世界的模型称数据模型 ;表达信息世界的模型称概念数据模型,简称 概念模型,信息世界是对现实世界的理解与抽象.
在这里插入图片描述

抽象的八个字

理解:正确理解问题。
区分:衡量是否理解了问题可以通过看能否区分出问题中不同概念。
命名:区分的标志是对不同概念进行了不同命名。
表达:用其它人能理解的方式进行表达。

E-R模型

E-R 模型又称 实体联系模型。它的观点是 世界是由一组称为实体的基本对象和这些对象之间的联系构成的。

E-R 模型中的一些概念包括 实体、属性、联系、关键字。
面对一个具体问题时,将 E-R 模型中的那些抽象概念予以具体的语义的过程即为建模。

实体与实例

实体 指的是客观存在的可区分的事物。

实体的类指的是具有相似特征的个体的集合,实体的实例指的则是具体的个体。这个定义有点类似于 class 和 instance 的区别。注意不同语境下的区分。

后面统一将实体的类称为 实体的型,实例称为 实体的值


实体使用 属性 进行刻画。

实体具有一组属性,每个不同的实例都应该在这组属性下具有具体的属性值。例如
学生实体就可能有生日和姓名属性,而每个学生实例都应该有具体的生日值和姓名值。

属性中比较特殊的情况是:

        单一属性和复合属性
        单值属性和多值属性
        可空属性和非空属性
        导出属性:该属性的值只依赖于其它的若干属性
        
按照第一范式,关系模型中不能有复合属性和多值属性。不过这里不是第一范式。

每个实体有一个特殊的属性叫做关键字 ,每个实例的关键字的值不同并且是唯一的,可以和其它实例相互区分。

联系与联系的元数

联系指的是不同实体之间的关联关系。联系不一定是二元的,联系的 元数指的就是一个联系会与几种实体相关联。

一元联系是存在的,因为在此定义下,属于同一实体的不同实例间的联系就是一元的。

如果一个联系和同一实体的不同实例有关,那么需要用 角色 对不同的实例加以区分。例如对家庭关系建模时,“人”是实体,具体的人是一个实例,在表达谁是谁的父亲时就应该引入父亲和儿子两个角色来区分不同的人。

联系与联系的基数

实体之间的联系可以分类为一对一、一对多和多对多的。

联系的 基数 指的是实体实例之间联系的数量,即一个实体可以通过这个联系和多少个实体发生关联。这涉及到联系的存储的实现,因此比较重要。一般使用最小有多少个、最大有多少个来进行描述。

如果实体的每个实例最少要参与一个联系,称为完全参与联系 ,否则为 部分参与联系。

Chen 方法表达 E-R 模型

E-R模型的几种图示化表达方法
     Chen 方法
     Crow’s Foot方法
     IDEF1X方法(工程化方法)

在这里插入图片描述
复合关键字指的是需要多个域才能共同确定一个实体的实例。此外,一个实体可能具有不同的几组关键字。

如果实体之间存在多种联系,则需要在它们之中画多个菱形,并且每个联系可以具有不同的基数。即使是实体之间只有一种联系,也可能出现表示实体的结点和表示联系的结点之间有多条直线(考虑一元联系)。

如果存在复合属性,可以以复合属性为结点树状展开属性的层次关系。

Chen方法中不同“联系”的区分方法:
在这里插入图片描述
关系基数的符号还有一种使用箭头的方案,但是统一性不如这个方案好。


对于每个实体都应该给出关键字;对于联系可以给出属性,但不一定要给出关键字。

Chen 方法建模案例-物资管理系统数据建模
使用 Chen 方法进行建模的步骤:

1、理解需求,寻找实体;
2、使用属性刻画实体(注意不要把一个实体作为另一个实体的属性——应当用联系进行关联);
3、确定每个实体的关键字;
4、确定实体之间的联系并命名(以及联系的属性),同时确定联系的基数;
5、检查是否覆盖了所有需求。

Crow’s Foot 方法表达 E-R 模型

Crow’s Foot 也是一种实体关联模型的表达方法。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

数据模型与两种抽象层次

**
— 概念级抽象:将真实世界抽象到信息世界**

— 实现级抽象:将信息世界抽象到计算机世界

再看抽象层次

对实际问题的抽象可以将实际问题抽象为模型。对模型的抽象可以将模型抽象为元模型(比如将物流管理模型、学生管理模型抽象为实体关联模型)。对元模型的抽象可以将元模型抽象为 meta-object facility(这个层次只有概念和概念之间的关系,非常抽象)。


文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录