*【零基础自学笔记】第一章:数据库系统概述

目录

一、数据库系统

(一)术语

1、数据

2、数据库

3、数据库管理系统(DBMS)

4、数据库系统

5、数据库应用系统

6、数据字典

(二)数据库系统的构成

(三)数据库系统的特点

(四)数据库系统的分层视图

(五)数据库系统的抽象层次

1、从应用系统开发的角度看数据库系统的抽象层次

2、从数据库系统的抽象层次看数据库应用系统的设计

 (六)数据抽象、数据模型、数据模式及其相互关系

1、数据抽象

2、数据模型

3、数据模式

4、数据抽象、数据模型及数据模式之间的关系

(七) 数据库语言

1、为什么需要数据库语言

2、数据库语言组成

3、SQL语言

4、SQL与ODBC/JDBC

二、数据库管理系统的出现

(一)基于文件系统的简单数据管理→数据库管理系统的出现

1、基于文件系统的简单数据管理:

2、基于文件系统的应用系统需要改进之处

3、数据库管理系统的出现

4、DBMS的主要功能

5、DBMS的优点

6、以下情况可以不考虑DBMS

三、数据库应用系统开发概述

(一)数据库应用系统开发两种模式

(二)软件开发技术

1、软件开发技术发展

2、组件技术

3、分布式对象技术

4、应用服务器应用程序或脚本接口技术

5、ASP/JSP/PHP

四、数据库系统总体结构

五、数据库技术的发展

(一)数据库技术和数据库系统发展阶段

(二)OLTP和OLAP

1、OLTP(Online Transaction Processing,联机事务处理)

2、OLAP(On-Line Analytical Processing,联机分析处理)

(三)数据仓库和数据挖掘

1、数据仓库

2、数据挖掘

(四)并行和分布式数据库系统

1、并行数据库系统

2、分布式数据库系统

(五)Internet/Web数据库

(六)面向对象的数据库系统


 

一、数据库系统

(一)术语

1、数据

描述现实世界中各种具体事物或抽象概念的、可存储并具有明确意义的信息。

2、数据库

是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

3、数据库管理系统(DBMS)

是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

4、数据库系统

为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质 、处理对象和管理系统的集合体。它是一个环境,用户的应用系统得以在这个环境中顺利运行。

5、数据库应用系统

是在数据库管理系统(DBMS)支持下建立的计算机应用系统,简写为DBAS,主要是实现业务逻辑的应用程序。

6、数据字典

指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。它是DBMS中的一个特殊文件,用于存储数据库的一些说明信息,这些说明信息称为“元数据(Meta Data)”。

数据字典究竟是什么样的 ?

 

(二)数据库系统的构成

1、数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。

2、硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。

3、软件:

(1)操作系统

(2)数据库管理系统及应用程序。数据库管理系统(databasemanagementsystem,DBMS)是数据库系统的核心软件,是在操作系统的支持下工作,解决如何科学地组织和存储数据,如何高效获取和维护数据的系统软件。其主要功能包括:数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。

4、人员:

(1)系统分析员和数据库设计人员:系统分析员负责应用系统的需求分析和规范说明,他们和用户及数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计。数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。

(2)应用程序员,负责编写使用数据库的应用程序。这些应用程序可对数据进行检索、建立、删除或修改。

(3)最终用户,他们利用系统的接口或查询语言访问数据库。

(4)数据库管理员(databaseadministrator,DBA),负责数据库的总体信息控制。DBA的具体职责包括:具体数据库中的信息内容和结构,决定数据库的存储结构和存取策略,定义数据库的安全性要求和完整性约束条件,监控数据库的使用和运行,负责数据库的性能改进、数据库的重组和重构,以提高系统的性能。

 

(三)数据库系统的特点

1、数据结构化

2、数据的共享性高,冗余度低且易扩充

3、数据独立性高

4、数据由数据库管理系统统一管理和控制

 

(四)数据库系统的分层视图

1、视图:(概念略)不同的用户对同一个数据库的每一种理解,成为该数据库的一个视图。因为不是所有用户都有权操作表中的所有数据,将用户能够看到的数据从一张表中映射出来,形成一张虚表,可以在一定程度上保护表中用户无权看到的数据。

2、将视图延伸到数据库系统形成数据库系统分层视图

(1)I/O视图:是最终用户能见到的数据库的样子。

(2)外部视图:是开发人员所见到的局部数据库结构。外部视图对应的模式为外部模式或子模式,也叫视图或用户视图。

(3)概念视图:为减少冗余,实现数据共享,综合子模式形成一个全局结构,即概念模式,该模式的设计不涉及任何数据库物理实现细节。 

(4)内部视图:特定的DBMS所处理的数据库的内部结构,成为内部模型。内部模式的形式化描述,称为内部视图或存储视图,它将数据库的数据表示为“内部记录”或“存储记录”的集合。存储记录是逻辑记录,不涉及任何具体设备限制。

(5)物理视图:数据库在存储设备上的物理组织称为物理模型,其描述称为物理视图。

各视图的不同叫法有点多啊!易混。

 

(五)数据库系统的抽象层次

1、从应用系统开发的角度看数据库系统的抽象层次

开发应用系统的目的是把现实系统转化为计算机化的管理,这个转化的过程就是一个“数据抽取”的过程,也叫“数据抽象”。要抽取数据必须用一定的方式来组织数据,使其具有“结构化”,即“数据模型”。数据模型是数据抽象的工具,利用这个工具完成对数据的抽取和组织,得到的结果就是“数据模式”。

下面的“a)学生基本信息结构”等四个表结构,就是一种数据模式。

一个现实的系统通常由多个部门组成(1)先对每个部门进行数据抽象,得到各自的数据模式 (子模式/外模式),完成第一层抽象(视图抽象)。(2)将所有的局部数据抽取完成后,再采取“合零为整”,去掉数据冗余,形成一个全局数据模式(概念模式)。(3)将概念模式抽象、转化为DBMS支持的数据模式(内模式)。

外模式可以有多个,概念模式只有一个。

 

2、从数据库系统的抽象层次看数据库应用系统的设计

 数据库的抽象层次反过来可以对应用系统设计起到指导作用,即可以将应用系统的设计按“自顶向下”或“自底向上”的方法进行,也就是“先全局后局部”或“先局部后全局”。

作为数据抽象工具的数据模型,需要有3个基本需求:

(1)能够真实地描述现实系统,这是最起码的要求。

(2)能够容易被业务用户所理解。

(3)能够容易被计算机实现。

然而(2)和(3)是一对矛盾,目前商业化DBMS支持的数据模型(关系模型、层次模型、网状模型)都不能同时满足这三个要求,为此设计了一个中间的数据模型,称作“高级数据模型”,有:实体联系数据模型(ERM)、面向对象数据模型(OOM)等。

 

 (六)数据抽象、数据模型、数据模式及其相互关系

1、数据抽象

一种数据抽取的过程,存在3个级别的数据抽象,分别是视图级抽象、概念级抽象、物理级抽象。

 

2、数据模型

用来组织数据的工具。

(1)数据模型三要素:

①数据结构:用于描述现实系统中数据的静态特性,不仅要描述实体本身还要描述实体之间的关系。

②数据操作:增删改查。

③数据约束:用于描述对数据的约束。将现实的管理制度对数据的约束定义到DBMS中。

(2)数据模型的分类:

①概念数据模型:面向用户、面向系统的数据模型,有:ER模型、对象模型等。

②逻辑数据模型:反映的是数据的逻辑结构,有关系模型、层次模型、网状模型等。

③物理数据模型:DBMS系统程序员关心这类数据模型,数据库应用系统开发中基本不涉及。

 

3、数据模式

抽取的数据用数据模型组织后,得到的结果既是“数据模式”。

 

4、数据抽象、数据模型及数据模式之间的关系

(1)视图级抽象和概念级抽象可用概念数据模型,各子模式和概念模式使用概念数据模型描述。如:实体联系模型ERM,主要进行数据库的设计。

(2)物理级抽象则用逻辑数据模型,内模式使用逻辑数据模型来描述。如:关系数据模型、层次数据模型和网状数据模型。

(3)物理数据模型,指具体的DBMS在实现其支持的逻辑数据模型时,所用到的、具体的物理存储结构。

 

(七) 数据库语言

1、为什么需要数据库语言

“数据结构”和“数据文件”不再由应用程序定义和操纵,而应由DBMS统一管理。对于具体的应用系统来说,DBMS并不清楚具体的“数据结构”,需要程序员来定义。于是,就要求DBMS提供定义“数据结构”的“接口”或“界面”,数据库语言正是DBMS提供给设计人员定义“数据结构”的一个界面。

 

2、数据库语言组成

①“数据结构”的定义功能,通常称作“数据定义子语言"(Data Definition Language,DDL)。相当于将装东西的篮子编好了。

②“数据操纵子语言  "(DataLanguage, DML):完成增删改查操作。相当于往篮子里装东西。

③“数据控制子语言”(Data Control Language,DCL):DBMS是一个系统软件 ,所以需要一个“管理”或“控制”界面 ,即DCL。

 

3、SQL语言

结构化查询语言(Structured Query Language),是关系型数据库管理系统(RDBMS)支持的数据库语言,RDBMS是目前领域主流的DBMS,所以SQL成为最流程的数据库语言。

 

4、SQL与ODBC/JDBC

由于RDBMS产品众多,且不同RDBMS产品支持的SQL语言在功能、语法上存在定差异,为便 于应用程序的移植和互操作,屏蔽不同RDBMS产品在SQL语言上的差异,需要种采用标准SQL语句的、访问DB的“中间件”(Middleware)。微软的ODBC和Sun公司的JDBC正是为各种高级程序语言或应用系统提供标准SQL数据访问的中间件。

 

二、数据库管理系统的出现

(一)基于文件系统的简单数据管理→数据库管理系统的出现

1、基于文件系统的简单数据管理:

利用操作系统(Operating System,OS)的文件系统开发简单的数据管理应用。

(1)以学生管理系统为例,设置学生学籍、学习注册、学生选课和学生成绩管理等模块,实现学生基本信息、注册、选课及成绩的录入、修改、删除及查询等管理。

(2)开发语言及环境:C语言+Windows操作系统

(3)实现过程:①定义数据结构→②构造链表→③设计用户操作界面→④创建数据存储文件

          ①定义数据结构:定义数据结构,以存储所要用到或产生的数据。

a)学生基本信息结构

struct StudentInfo
{
    int nStudNo;
    char szStudName[20];
    char cGender;
    int nAge;
    char szDept[30];
};

b)课程结构

struct Course
{
    int nCourseNo;
    char szCourseName[20];
    char szDept[30];
};

c)注册结构

struct Enrollment
{
    int nStudNo;
    char nWhichTerm;
    char cEnrolled;
    char szMem[30];
};

d)选课及成绩结构

struct Score
{
    int nStudNo;
    int nCourseNo;
    int nScore;
};

②构造链表:为了便于集合数据的操作或操纵,需要在程序中构造链表(Link)。有了链表后,可根据管理操作,分别对链表进行结点的插入删除修改链表查询。为加快检索速度,还可对链表进行排序

概念:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。链表有很多种不同的类型:单向链表,双向链表以及循环链表。

似懂非懂,先跳过,继续往后看...

③设计用户操作界面:为方便用户的操作,为用户设计图形化的操作界面。

④创建数据存储文件:将各链表中的数据以文件系统中的文件形式存放在磁盘上。

除第一次运行外,程序每次运行时,均需先将数据文件中的数据读出,放入程序中的对应链表中,以方便数据的操作;程序退出前,则应将链表中的数据分别写入对应的数据文件,以保存留待下次使用。

根据学生管理系统任务要求,可分别创建4个数据文件,即学生基本信息文件课程数据文件注册数据文件选课及成绩数据文件

 

2、基于文件系统的应用系统需要改进之处

前面是一个基础文件系统的、功能非常简单的管理应用系统,有很多需要改进的地方。

(1)当数据变得很大时,有三个问题需要解决:

①内存不够:前面的系统一般先将数据文件中的所有数据读到数据链表中,对于大量数据无法将所有数据都读入内存,可以采取分批读入的办法。

②32位计算机单个文件大小限制:32位计算机上的操作系统,不允许硬盘上单个文件超过4GB。可以采取创建多个文件来存放同一类数据,但同时需要协调同一类多个文件之间的处理关系。

③大数据量下的查询速度:对于大数据量的情况,既不能一次将所有数据读入内存进行查询,又不能只在一个数据文件中查询。

如何保证查询速度,是程序编制时需要考虑的重要环节。

(2)多用户并发访问

 多用户同时并发访问,可能导致多个用户同时存取同一数据,于是出现数据访问的冲突,可能导致访问数据的不一致甚至破坏数据。

(3)故障情况下的数据恢复

应用系统在日常管理中,不可避免地会遇到突然断电、系统死机、程序崩溃、磁盘不能读写等问题。这可能会造成数据未完全写入磁盘,导致数据丢失或被破坏。 因此要增加大量代码解决,以保证故障后顺利恢复数据,避免丢失。

(4)安全性

数据的安全性主要在于对访问用户的授权,以及授权用户只能访问允许访问的数据。

(5)数据的完整性

同一数据可能出现在多个数据结构中,同时对应出现在多个文件中。如何保证多个数据文件中同一数据的一致性。

比如修改了学生基本信息中的学号,而不修改选课等文件中的学号,则会产生数据的不一致,破坏数据的完整性。

 

3、数据库管理系统的出现

如果每开发一个类似前面的学生管理应用,都必须编写处理“大容量数据”、“并发访问”、“故障恢复”、“安全性”、“完整性”等基本“公共功能”的代码。既然是处理公共功能的代码,那么就可以将这些代码抽取出来,还要将这几个功能依赖的数据结构数据文件(即狭义上的数据模型和数据库)抽取出来,形成一个中间的、作为开发和应用的系统平台,这个平台就是数据库管理系统(DataBase Management System)DBMS是数据系统的核心。

 

4、DBMS的主要功能

(1)数据定义功能

①提供数据定义语言(DDL)

②定义数据库中的数据对象

(2)数据组织、存储和管理

①确定数据在存储级别上的结构和存取方式

②提供多种存取方法来提高存取效率

(3)数据操纵功能

①提供数据操纵语言(DML)

②实现对数据库的基本操作(增删改查)

 (4)数据库的事务管理和运行管理

①数据的安全性、完整性、多用户对数据的并发使用

②发生故障后的系统恢复数据库

 

5、DBMS的优点

(1)数据独立性

(2)高效数据访问

(3)数据完整性与安全性

(4)数据管理

(5)并发访问与故障恢复

(6)缩短应用开发时间

 

6、以下情况可以不考虑DBMS

(1)苛刻的实时环境

(2)操作少、代码要求精炼

(3)操纵的数据是非机构化或半结构化数据

 

三、数据库应用系统开发概述

(一)数据库应用系统开发两种模式

1、C/S模式(客户Client/服务器Server):是一种分布式的计算模式,前端客户机负责GUI处理以及向服务器发送用户请求和接收服务器回送的处理结果;后端服务器负责数据库管理,处理用户请求并回送。

(1)两层C/S结构:客户端和服务器端(胖客户端、瘦服务器)

客户机既要完成用户界面的表示逻辑,又要完成应用的业务逻辑,服务器端完成数据库的数据操作。

(2)三层C/S结构:客户端、应用服务器和DBMS服务器

客户端只用于实现表现逻辑,业务逻辑由应用服务器实现。

2、B/S模式(浏览器Brower/Server)

 

(二)软件开发技术

1、软件开发技术发展

(1)20世纪70年代:结构化方法

(2)20世纪80年代:面向对象技术(Object-Oriented,OO)

(3)逐渐转向组件技术和分布式对象技术

 

2、组件技术

组件技术是一种更高层次的对象技术,独立于语言和面向应用程序,只规定组件的外在表现形式,不关心内部实现方法;既可用OO编程语言实现,也可用非OO的过程语言实现。

组件模型由组件和容器构成。组件是具有某种功能的独立软件单元,其最重要的特性就是可复用性,通过接口向外界提供功能入口。容器用于实现组件间的交互,也可以作为另一个容器的组件,形成嵌套结构。

产品有微软的VBX、OCX及ActiveX控件等...

 

3、分布式对象技术

组件技术向分布环境的延伸,形成了分布式对象技术。分布式对象具有动态性,可以在网络上到处移动,是一种具有分布式特征的组件。

目前组件技术和分布式对象技术用得较广泛的模型有CORBA、COMM/DCOM和Java Beans。

CORBA核心是一套标准的语言、接口和协议;COM/DCOM/COM优点是开发者只使用同一厂家提供的系列开发工具,比组合多家开发工具更有吸引力,但依赖于微软操作系统平台,不能在其他平台上发挥作用。

 

4、应用服务器应用程序或脚本接口技术

(1)CGI(Common Gateway interface):是浏览器、Web服务器和应用服务器之间传递信息的一组规范。跨平台性非常好,但由于服务器上运行的每一个CGI程序都要占据不同的进程,而每个CGI程序只能处理一个用户请求,消耗系统资源,效率低下。

(2)ISAPI(Internet Server Application Programming Interface):是微软独特的、具有类似CGI功能的网络应用接口标准,它能实现CGI的全部功能,并在此基础上进行扩展。在实现机制上,不同于CGI,在ISAPI下建立的应用程序是以动态链接库(DLL)形式存在。

ISAPI特点是占用系统资源少、方便、灵活。不足是①必须具备ISAPI和ODBC的专门编程技术。②只能通过程序语言来构造HTML页面,不直观、易错。③ISAPI与Web服务器处于同一系统进程空间,因此ISAPI可能造成Web服务器崩溃④一旦DLL被服务器加载,如果想替换这个DLL必须停止服务器。

(3)NASPI:指Netscape的Internet服务器编程接口,必须在Netscape的服务器上才可以执行,但可以支持多种操作系统。

 

5、ASP/JSP/PHP

(1)ASP(Active Server Page活动服务器页面):是微软开发的动态网页技术,是一个Web服务器端的脚本编写环境,使用它可以创建和运行动态、交互的Web服务器应用程序。ASP中的命令和脚本语句都是由服务器来解释执行的,生成动态网页后再送往浏览器;而客户端动态网页技术下的脚本是由浏览器解释执行。

(2)JSP(Java Server Page)是Sun公司在Java基础下开发的,也是一种能够生成动态网页的技术标准。

(3)PHP(Personal Home Page):是一种服务器端HTML页面嵌入式脚本语言,类似于ASP。

 

四、数据库系统总体结构

将数据库原理、数据库应用及数据库设计3个部分有机地联系起来,形成数据库系统的总体结构图:

(1)数据库的原理部分:说明的是DBMS系统本身的功能设计以及它为外界提供的操作及应用平台

(2)数据库的设计部分:说明如何将现实系统的数据通过某种数据模型组织起来,并利用DBMS提供的界面功能,将其结构及约束等存人DBMS中

(3)数据库的应用部分:着重于现实系统业务逻辑的实现,即通过某种应用模式(C/S模式或B/S模式)和某种程序设计语言、开发技术和工具,在数据库设计以及DBMS平台支持的基础上,实现现实系统的业务功能(或逻辑),为业务用户提供友好和人性化的业务操作界面。

 

五、数据库技术的发展

(一)数据库技术和数据库系统发展阶段

(1)20世纪50年代中期:人工管理阶段

(2)20世纪50年代后期至60年代中期:文件系统阶段

(3)数据库系统阶段:

①20世纪60年代末:层次/网状数据库系统(第一代)

②20世纪70年代初:关系数据库系统(第二代)

③20世纪80年代:面向对象的数据库系统(第三代)

 

(二)OLTP和OLAP

1、OLTP(Online Transaction Processing,联机事务处理)

OLTP是一类应用,主要面向日常的业务数据管理,完成用户的事务处理,提高业务处理效率,通常要进行大量的更新操作,同时对响应时间要求比较高。如民航订票系统、银行储蓄系统等基本都属于OLTP应用。

 

2、OLAP(On-Line Analytical Processing,联机分析处理)

OLTP着重于数据管理,OLAP着重于数据分析,主要是对用户当前及历史数据进行分析,辅助领导决策,通常要进行大量的查询操作,对时间的要求不太严格。

 

(三)数据仓库和数据挖掘

1、数据仓库

数据仓库是面向主题的、集成的、稳定的、不同时间的数据集合,用以支持经营管理中决策制定过程。面向主题、集成、稳定和随时间变化是数据仓库的4个最主要的特征。

 

2、数据挖掘

数据挖掘是在大量的、不完整的、有噪声的数据中发现潜在的、有价值的模式和数据间关系或知识的过程。

 

(四)并行和分布式数据库系统

1、并行数据库系统

随着企业OLTP系统的长期运行,数据库的数据量越来越大,联机访问的用户数量越来越多,提高数据库系统的吞吐量和减少事务的响应时间,成为数据库系统发展的关键问题。于是出现了将传统的数据库管理技术与并行处理技术相结合的并行数据库系统(Parallel Database System)。由多处理机和多磁盘构成的并行处理系统所支持的数据库系统,称为并行数据库系统。

 

2、分布式数据库系统

分布式数据库系统中的数据在逻辑上是统一的,而在物理上却是分散的,并且支持全局应用,即一个应用可以涉及两个或两个以上的计算机网络结点(场地)上的数据库。

 

(五)Internet/Web数据库

所谓Internet/Web数据库,其实质是在传统的关系数据技术基础上,对数据库模型、存储机制和检索技术等方面进行改进,而构造出基于Internet/Web应用的数据库系统。

 

(六)面向对象的数据库系统

关系数据库在对复杂对象、长事务处理和版本管理等处理上能力欠缺,而面向对象数据模型本身的特性,对处理这些数据有得天独厚的优越性。随着面向对象编程、面向对象的分析与设计技术的成熟,将面向对象技术和数据库技术结合,形成了第三代数据库系统——面向对象的数据库系统(Object-oriented Database System,OODBS)。

OODBS概念是1989年正式提出的,1990年又提出了以关系数据库系统为基础,建立第三代的数据库系统,即对象-关系数据库系统(Object-Relational Database System,ORDBS)。OODBS和ORDBS都属于面向对象的数据库系统。有人将ORDBS归入第三代数据库系统,OODBS归入第四代数据库系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值