数据库概论

数据库的相关概念

  • 数据独立性:指应用程序与数据库的数据结构之间相互独立。
  • 数据库(DB):DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
  • 数据库管理系统(DBMS):是位于用户和操作系统之间的一层数据库管理软件,它为用户或应用程序提供访问DB的方法。
  • 数据库系统(DBS):是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。
  • 数据库技术:是研究数据库的结构、存储、设计、管理和使用的一门软件学科。

数据描述

数据描述历经三个阶段:概念设计、逻辑设计和物理设计。

概念设计和逻辑设计的术语对应关系:

概念设计

逻辑设计

实体(客观存在、可以互相区别的事物称为实体)

记录(字段的有序集合称为记录)

属性(实体有很多特性,一个特性称为一个属性)

字段(标记实体属性的命名单位)

实体集(性质相同的同类实体的集合)

文件(同一类记录的集合称为文件)

实体标识符(能唯一标识实体的属性或属性集)

关键码(能唯一标识每条记录的字段或字段集)

物理设计中的数据描述即为:位、字节、字、块、桶、卷。

数据联系的描述:

联系:是实体键的相互关系。与一个联系相关的实体集个数,成为联系的元数。例如有一元联系、二元联系、三元联系等。

数据抽象的级别

根据数据抽象级别定义了4种模型:概念数据模型、逻辑数据模型、外部数据模型和内部数据模型。

概念模型:

表达用户需求观点的数据全局逻辑结构称为概念模型。概念模型的抽象级别最高。

现在采用的概念模型主要是实体联系模型(ER图)。ER图有三个基本成分:

  1. 矩形框:用于标识实体模型(考虑问题的对象);
  2. 菱形框:用于表示联系模型(实体间联系);
  3. 椭圆形框:用于表示实体类型与联系类型的属性。

概念模型的四个特点:

  1. 表达了数据的整体逻辑结构;
  2. 从用户需求的观点出发,对数据建模;
  3. 独立于硬件和软件;
  4. 是数据库设计人员和用户之间进行交流的工具;

逻辑模型:

表达计算机实现观点的DB全局逻辑结构的模型称为逻辑模型。

逻辑模型具有下列特点:

  1. 表达了DB的整体逻辑结构,是设计人员对整个应用项目数据库的全面描述。
  2. 从数据库实现的观点出发对数据建模;
  3. 独立于硬件,但依赖于软件(DBMS);
  4. 是数据库设计人员和应用程序员之间交流的工具。

逻辑模型主要有层次、网状、关系和对象模型四种。

项目

层次模型

网状模型

关系模型

对象模型

创始

1968年

1969年

1970年

20世纪80年代

数据结构

复杂(树结构)

复杂(有向图结构)

简单(二维表)

复杂(嵌套、递归)

数据联系

通过指针

通过指针

通过表间的公共属性

通过对象标识

查询语言

过程性语言

过程性语言

非过程性语言

面向对象语言

优点

与文件系统相比查询效率较高

M:N联系容易实现查询效率较高

操作简单,数据结构简单

具有丰富的表达能力

缺点

只能表示1:N的关系;层间关系复杂程序编写复杂

数据结构复杂,编程复杂

复杂问题领域不如对象模型

m模型相对复杂,涉及的知识比较多

外部模型:

表达用户使用观点的DB局部逻辑结构的模型称为外部模型。

外部模型有以下几个特点:

  • 是逻辑模型的一个子集;
  • 独立于硬件,但依赖于软件;
  • 反映了用户使用数据库的观点;

外部模型的优点:

  • 简化了用户的观点;
  • 有助于数据库的安全性维护;
  • 是对概念模型的支持;

内部模型:

表达DB物理结构的模型称为内部模型。

内部模型又称为物理模型,是数据库最底层的抽象,它描述数据在磁盘或磁带上的存储方式、存取设备和存取方法。内部模型是和硬件和软件紧密相连的。

三层模式和两级抽象

三层模式体系结构

从用户(或应用程序)到数据库之间,DB的数据结构描述有三个层次:

  • 外模式是用户和数据库系统的接口,是用户用到的那部分数据的描述;
  • 逻辑模式是数据库中全部数据的整体逻辑结构的描述;
  • 内模式是数据库在物理存储方面的描述。

三层模式体系结构有三个特点:

  • 用户使用DB的数据操纵语言(DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作。例如读取一个记录值,实际读到的是一个外部记录值,而非数据库的内部记录值。有了外模式,程序员不必关心逻辑模式。实际上外模式是逻辑模式的逻辑子集。
  • 逻辑模式必须不涉及存储结构、访问技术等细节。
  • 内模式不涉及物理设备的约束。比内模式更接近物理存储和访问的那些软件机制是操作系统的一部分。

两级映像

  • 外模式/逻辑模式映像:存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性。这个映像一般是放在外模式中描述的。
  • 逻辑模式/内模式映像:存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性。这个映像一般是放在内模式中描述的。

高度的数据独立性

数据独立性是指应用程序与数据库的数据结构之间相互独立。在修改数据结构时,尽可能不修改应用程序。

  • 物理数据独立性:如果数据库的内模式要修改,即数据库的物理结构有所变化,那么只要对逻辑模式/内模式映像做相应修改,可以使逻辑模式保存不变,当然对外模式和应用程序影响更小。这称为达到了物理独立性。
  • 逻辑数据独立性:如果数据库的逻辑模式要修改,只要对外模式/逻辑模式映像做相应修改,可以使外模式和应用程序尽可能保存不变,这时称达到了逻辑独立性。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python新手应该如何练手?知乎5600赞答案告诉你!

作者:小小搬运工 链接:https://www.zhihu.com/question/29372574/answer/88624507 一直在学习python,...

40270
来自专栏牛客网

今日头条三面面经

4.       优先队列的底层数据结构?插入和删除一个节点的时间复杂度是多少? 

95920
来自专栏CDA数据分析师

Python进阶学习之阅读代码

起因 最近在公司的任务是写一些简单的运营工具,因为是很小的工具,所以就用了github上面的一个开源项目flask-admin,可以省去很多的事情。 但是,这个...

28770
来自专栏企鹅号快讯

如何用Python读取开放数据?

当你开始接触丰富多彩的开放数据集时,CSV、JSON和XML等格式名词就会奔涌而来。如何用Python高效地读取它们,为后续的整理和分析做准备呢?本文为你一步步...

53280
来自专栏Golang语言社区

C++ 实现银行排队服务模拟

教程简介:使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时...

51350
来自专栏每日一篇技术文章

AudioToolbox_如何录制PCM格式的数据

先来认识一下头文件 AudioConverter.h: 音频转换接口。定义用于创建和使用音频转换器的接口 AudioFile.h: 定义一个用于读取和写入...

26910
来自专栏PPV课数据科学社区

数据流编程教程:R语言与DataFrame

DataFrame DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量。 一. DataFrame数据流编程 ? 二....

495120
来自专栏扎心了老铁

hadoop streaming编程小demo(python版)

大数据团队搞数据质量评测。自动化质检和监控平台是用django,MR也是通过python实现的。(后来发现有orc压缩问题,python不知道怎么解决,正在改成...

45340
来自专栏有趣的Python和你

Python数据分析之dataframe的groupbygroupby函数highcharts绘图

14530
来自专栏me的随笔

【译】《Clean C#》

本文是《Clean C#》一书译文的序言,阅读译文请移步至:《Clean C#》译文。

14120

扫码关注云+社区

领取腾讯云代金券