一、数据模型概述

        计算机信息管理的对象是现实生活中的客观事物,但这些事物是无法直接送入计算机的, 必须通过进一步整理和归类,进行信息的规范化,然后才能将规范信息数据化并送入计算机的数据库中保存起来。这一过程经历了3个领域——现实世界、信息世界和数据(机器)世界。

  • 数据模型:对现实世界数据特征的抽象,是现实世界的模拟。

  • 数据模型的作用:用来描述数据、组织数据和对数据进行操作。

二、数据建模的两步抽象过程

        用户只与概念模型打交道,DBMS与数据模型打交道。

三、概念模型

1.术语

2.E-R模型(实体-联系模型)

        概念模型的表示方法很多,其中最著名的是E-R方法(Entity-Relations,即实体-联系方法), 它用E-R图来描述现实世界的概念模型。E-R图的主要成分是实体、联系和属性。E-R图通用 的表现规则如下。

  • 实体 → 矩形框

  • 属性 → 椭圆框

  • 联系 → 菱形框

        例如,要画出某个学校学生选课系统的E-R图,学校每学期开设若干课程供学生选择,每门课程可接受多个学生选修,每个学生可以选修多门课程,每门课程有一个教师讲授,每个教 师可以讲授多门课程。

四、数据模型

        数据库中的数据是结构化的,它是按某种数据模型来组织的。当前流行的基本数据模型有 3 类:关系模型、层次模型和网状模型。它们之间的根本区别在于数据之间联系的表示方式不 同。关系模型用二维表来表示数据之间的联系;层次模型用树结构来表示数据之间的联系;网 状模型用图结构来表示数据之间的联系。

1.数据模型三要素

2.层次模型

        层次数据模型是数据库系统最早使用的一种模型,它的数据结构是一棵有向树。层次结构模型具有如下特征。

        (1)有且仅有一个结点没有双亲,该结点是根结点。

        (2) 其他结点有且仅有一个双亲。        

3. 网状模型

        如果取消层次模型的两个限制,即两个或两个以上的结点都可以有多个双亲,则“有向树” 就变成了“有向图”。“有向图”结构描述了网状模型。网状模型具有如下特征。

        (1)可有一个以上的结点没有双亲。

        (2)至少有一个结点可以有多于一个双亲。

4. 关系模型 

        关系模型(Relational Model)是用二维表格结构来表示实体和实体之间联系的数据模型。关系模型的数据结构是一个“二维表框架”组成的集合,每个二维表又可称为关系。因此可以说, 关系模型是“关系框架”组成的集合。

        关系模型是使用最广泛的数据模型,目前大多数数据库管理系统都是关系型的。

        例如:对于某校学生、课程和成绩的管理,要用到如表1-1至表1-3所示的几个表格。如果要找到学生“栾鹏”的“高等数学”成绩,首先需在学生信息表中找到【姓名】为“栾鹏” 的记录,记下他的学号201021112,如表1-1所示。

        再到课程表中找到【课程名称】为“高等数学”的【课程号】1003,如表1-2所示。

        接着到成绩表中查找【课程号】为1003,【学号】为201021112的对应成绩值,如表1-3 所示。

        关系模型中数据的逻辑结构就是一张二维表,它由行和列组成。 一张二维表对应了一个关系,表中的一行即为一条记录,表中的一列即为记录的一个属性。

五、关系模式

        关系模式就是数据库中 "表的结构定义",是对一张二维表的完整描述。

1.关系模式与关系

  • 关系模式:是表的 "型",静态的,描述 "这张表有哪些列、每列是什么类型、列之间有什么关系"
  • 关系:是表的 "值",是动态的、随时间变化的具体数据,是关系模式在某一时刻的实例

        例如:关系模式:学生(学号, 姓名, 性别, 出生日期, 主修专业)

        关系:就是学生表中实际存储的一行行学生数据

2.关系模式相关概念

3.三种关系类型

4.关系模式形式化表示

R (U, D, DOM, F)

R = 学生
U = {学号,姓名,性别,出生日期,主修专业,联系电话}
D = {字符串(12),字符串(20),字符串(2),日期,字符串(30),字符串(15)}
DOM = {DOM(学号)=字符串(12), DOM(姓名)=字符串(20), DOM(性别)=字符串(2), 
       DOM(出生日期)=日期, DOM(主修专业)=字符串(30), DOM(联系电话)=字符串(15)}
F = {学号 → 姓名,性别,出生日期,主修专业,联系电话}   // 函数依赖
     实体完整性:学号不能为空
     用户定义完整性:性别 ∈ {'男', '女'},联系电话格式为手机号

学生(学号,姓名,性别,出生日期,主修专业,联系电话)

5.完整性约束类

        完整性约束:是数据库里的一套自动执行的规则,用来保证你存储的数据是正确、合法、一致的。

        触发器:一种自动执行的存储程序。不用主动调用,而是绑定在某张表的事件(INSERT、UPDATE、DELETE)上,当该事件发生时,数据库会自动触发它运行。

        举例:成绩等级与奖励学分

6.E-R模型到关系模式的转换规则

(1)实体转表

每一个实体型(矩形框)必须转换为一个关系模式(一张表)

        例: 实体 学生(属性:学号,姓名)
        → 创建表 学生(学号, 姓名),主键为 学号

(2)联系转表

        一对一 (1:1)

业务例子:

  • 实体:部门(主键:部门号)

  • 实体:经理(主键:经理号)

  • 联系:管理(一个部门由一个经理管理,一个经理只管一个部门)

        一对多 (1:N)

业务例子:

  • 实体:部门(一)

  • 实体:员工(多)

  • 联系:属于(一个部门有多名员工,一名员工只属于一个部门)

注意:不能归并到“一”端,否则一个部门只能存一名员工。

        多对多 (M:N)

业务例子:

  • 实体:学生(主键:学号)

  • 实体:课程(主键:课程号)

  • 联系:选修(一个学生可选多门课,一门课可被多名学生选)

        总结:一对一两端都可合,一对多合多端,多对多必须独立建中间表

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐