数据模型

来源:互联网 发布:淘宝助理创建宝贝模板 编辑:程序博客网 时间:2024/06/14 15:29


定义

1. 模型

  • 一张地图、房地产沙盘都是模型。
  • 模型是对现实世界中某个对象特征的模拟和抽象。

    例如:航模飞机是对真实飞机的模拟和抽象,它模拟了飞机的起飞、飞行、降落;它抽象了飞机的基本特征---机身、机头、机翼、机尾。

2. 数据模型

  • 数据模型符合上述“模型”的定义。
  • 特殊的是:这是专门描述“数据”这种对象的模型。

    由于计算机处理不了现实世界的具体事物,所以首先必须把一切“数字化”,把现实世界中的人、物、活动、概念等用【数据模型这个工具】来抽象、表示和处理。

  • 再有:现有的所有数据库(DB)都是基于某种数据模型的。所以,数据模型是DB系统的核心和基础



两类数据模型

如同在建筑设计和施工的不同阶段需要不同的图纸一样,在开发实施数据库应用系统中也需要使用不同的数据模型,有如下两类3种:

  • 概念模型
  • 逻辑模型、物理模型

1. 概念模型(Conceptual Model)

概念模型是按照用户的观点来对数据和信息建模,主要用于数据库设计

特点:概念模型与具体的计算机系统和DBMS无关。概念模型的表示方法有很多,最著名和常用的是“实体-联系方法(Entity - Relationship Approach)”,该方法用E-R图来描述概念模型。

2. 逻辑模型(Logical Model)

逻辑模型是按照计算机系统的观点来对数据和信息建模,主要用于DBMS的实现

包括:

  • 层次模型 - Hierarchical Model
  • 网状模型 - Network Model
  • 关系模型 - Relational Model
  • 面向对象模型 - Object Oriented Model
  • 对象关系模型 - Object Relational Model

3. 物理模型(Physical Model)

物理模型是对数据最底层的抽象,他描述数据在系统内部的表示方式和存取方法。如:在磁盘或者磁带上的存储方式和存取方法,是面向计算机系统的。物理模型的具体实现是DBMS的任务,数据库设计人员(即程序员)了解和选择物理模型,一般用户则不必考虑物理级的细节。


4. 基于上面1、2和3的数据库设计步骤

数据库设计目的:把现实世界的具体事物抽象、组织为某一DBMS支持的数据模型

  1. 首先,把现实世界中的客观对象抽象为一种结构,此结构不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型。这也就是所谓概念模型。
  2. 然后,再把概念模型转换为某一个DBMS支持的数据模型。

具体描述1和2如下

  1. 现实世界 —-> 概念模型 (数据库设计人员来做)
  2. 概念模型 —-> 逻辑模型 (数据库设计人员 或者 数据库设计工具协助数据库设计人员完成)
  3. 交流的语言。因此,概念模型应该有较强的语义表达能力,另一方面它还应该简单、清晰、易于用户理解。

    2. 信息世界的一些基本概念

    1. 实体(Entity)
      客观存在并可相互区别的事物称为实体。它可以是具体的人、事,也可以是抽象的联系
    2. 属性(Attribute)
      实体具有的某一特性称为属性。一个实体可以有若干的属性来刻画
    3. 码(Key)
      唯一标示一个实体的属性称为码。注意是属性集,可以是1个或多个
    4. 域(Domain)
      域是一组具有相同数据类型的值的集合。就是属性的取值范围,如学号的domain为“8位整数”
    5. 实体型(Entity Type)
      具有相同属性的实体必然具有共同的特征和性质。即实体型是描述某一类实体的,格式为“实体名(属性1, 属性2, …… )
    6. 实体集(Entity Set)
      同一类型实体的集合称为实体集。如,全体学生就是一个实体集。(在表中就代表所有的记录)
    7. 联系(Relationship)
      实体内部和之前的关系称为联系。内部:指的是各个属性之间的关系;之间:指的是不同实体集之间的关系
      1. 实体型内部的联系
        同一实体型内部的不同实体之间,存在着一对一、一对多和多对多的关系。(以我实际工作来看,一对多最经常,比如树形父子关系)
      2. 实体型之间的联系
        也是一对一、一对多和多对多

    3. 实体 - 联系方法(E-R图)

    概念模型是对信息世界进行建模,所以要能描述上述信息世界的概念。一种最著名和常用的方式是:E-R图。
    E-R图提供了表示实体型、属性和联系的方法:

    1. 实体型:矩形表示,内写实体名
    2. 属性:用椭圆形表示,用无向边与实体型连接起来。
    3. 联系:用菱形表示,内写联系名,用无向边将有关系的实体型连接起来,然后在无向边旁边标上联系的类型(1:1,1:n,m:n)。另外,联系也可以有属性。

    下面是所有构件的描述图:
    这里写图片描述逻辑模型 —-> 物理模型 (DBMS来做)

逻辑模型(Logical Model)

逻辑模型是按照计算机系统的观点来对数据和信息建模,主要用于DBMS的实现

包括:

  • 层次模型 - Hierarchical Model
  • 网状模型 - Network Model
  • 关系模型 - Relational Model
  • 面向对象模型 - Object Oriented Model
  • 对象关系模型 - Object Relational Model

层次模型 —> 网状模型 —> 关系模型 —> 面向对象/对象关系模型

1. 层次模型、网状模型

层次和网状模型称为:格式化模型。这类模型在20世纪70到80年代初非常流行,但现在以被关系模型取代了。

2. 面向对象模型、对象关系模型

20世纪80年代以来面向对象的方法和技术在计算机各个领域蓬勃发展,也推动和影响了关系模型,从而产生了对象关系模型。一般来说,现在还都是用关系模型,有一些纯粹的面向对象模型的数据库已经出现,但是并没有流行。
1. 从RDBMS扩展而来的ORDBMS随着面向对象技术的发展而出现并能被接受了。
2. 1999年发布的SQL3终于提供了面向对象的扩展,由于SQL3晚于ORDBMS,所以各个数据库对面向对象模型的支持语法的、功能不尽相同。
3. SQL3扩展了:LOB、BOOLEAN、集合ARRAY、自定义DISTINCT类型等

一些ORDBMS的例子有:SQLServer和Oracle的地理信息支持

3. 关系模型

关系模型是目前最重要的数据模型,关系数据库依据关系模型。

历史:1970年IBM的San Jose研究室研究员E.F.Codd提出了关系模型。他于1981年获得ACM图灵奖。
关系模型建立在严格的数学概念基础上,每个关系的数据结构就是一张规范化的二维表。下面是一些关系模型术语:

  1. 关系(Relation)
    一个关系对应一张二维表
  2. 元组(Tuple)
    表中的一行即为一个元组
  3. 属性(Attribute)
    表中的一列即为属性
  4. 码(Key)
    表中可以唯一确定一个元组的属性组
  5. 域(Domain)
    属性的取值范围,如:人的年龄为整数且在1-150之间
  6. 分量
    元组中的一个属性值
  7. 关系模型
    对关系的描述,格式:关系名(属性1,属性2,……)

物理模型(Physical Model)

在Database - Data Model(数据模型)中已经介绍过,物理模型的具体实现是DBMS的任务,而我们开发人员要做的就是:学习相关DBMS,了解和使用其设计好的物理模型

所以说:物理模型和具体的数据相关,如MySQL、SQL Server、Oracle等等

1. 作用

程序员设计依据一个具体的DBMS来设计一个物理模型后,该物理模型就完整的表达了将要被创建的数据库的所有要素,也就是说物理模型可以直接被转化为完整的建库SQL。

例如:下图是mysql的 Workbench工具,只有New Model(就是Physical Model)选项。也就是说 一个完整的物理模型就等于一个数据库

这里写图片描述

2. 元素

由于物理模型与具体数据相关,所以他们的元素不尽相同,但有些共有的如下:

1. Table(表)

表中有属性(Attribute),属性有主属性(Key)和非主属性,还有外码,属性还有值域(Domain)等等

2. View(视图)

基于某一张或多张表而创建的逻辑表

3. Procedure(存储过程)

4. Index(索引)

原创粉丝点击