zoukankan      html  css  js  c++  java
  • 数据库入门2 数据库基础

    知识内容:

    1.数据模型

    2.数据库系统

    3.数据库的控制功能

    4.数据仓库与数据挖掘-> 简单了解即可

    一、数据模型

    1.数据模型的分类

    数据模型主要有两类,一类是概念模型,另一类是基本数据模型

    概念模型是按照用户的观点对数据和信息进行建模,主要用于数据库设计。概念模型主要用实体联系方法表示,也称为E-R模型

    基本数据模型是按照计算机系统的观点对数据和信息进行建模,主要用于DBMS的实现。基本数据模型是数据库系统的核心和基础。基本数据模型由数据结构、数据操作和完整性约束三部分组成。

    2.概念模型

    (1)概念模型的定义

    概念模型是对现实世界的抽象反映,它不依赖于具体的计算机系统,是现实世界到机器世界的一个中间层次

    (2)相关概念

    实体: 客观存在并可以区分的事物。实体可以是具体的人或物,如学生、桌子

    属性: 属性是实体所具有的特性,比如学生的学号、性别、年龄等属性特征

    键: 唯一标识实体的属性集称为键,比如学生的学号是学生实体的键

    实体型: 具有相同属性的实体具有共同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体称为实体型

    实体集: 同类实体的集合称为实体集。例如全体学生就是一个实体集

    联系: 现实世界的事物之间的联系,主要有两种,一种是实体内部之间不同属性之间的联系,另一种是实体之间的联系

    (3)实体之间的关系

    • 一对一联系(1:1)
    • 一对多联系(1:m)
    • 多对多联系(m:n)

    (4)概念模型的表示方法

    概念模型最常用的表示方法是实体联系方法,用这个方法描述的模型也叫E-R模型,在E-R模型中,信息由实体型、实体属性和实体键的联系三种概念单元来表示,画出对应的图像即是E-R图

    实体型用矩形表示;实体属性用椭圆形表示;实体间的联系是两个或两个以上实体类型之间的有名称的关联,用菱形来表示

    实体型、实体属性和实体键的联系又叫实体名、属性和练习,详情如下图:

    E-R图示例:

    3.基本数据模型

    • 层次模型:层次模型使用树形结构来表示数据以及数据之间的联系
    • 网状模型:网状模型使用网状结构表示数据以及数据之间的联系
    • 关系模型:关系模型是一种理论最成熟,应用最广泛的数据模型。在关系模型中,数据存放在一种称为二维表的逻辑中,整个数据库又是由若干个相互关联的二维表组成的

    现在数据库广泛使用的数据模型就是关系模型,因为关系模型概念简单、清晰,用户易懂易用,有严格的数学基础以及在此基础上发展来的关系数据理论简化了程序员的工作和数据库开发、建立的工作。

    二、数据库系统

    1.数据库系统的组成

    数据库系统是一个带有数据库的计算机系统,它能够按照数据库的方式存储数据和维护数据,并向应用程序提供数据,数据库系统由数据库、硬件、软件以及人员(DBA,系统分析师,应用程序员,用户)组成

    2.数据库系统的三级模式和两级映射

    数据库系统的三级模式是指概念模式、外模式(用户模式)、内模式,两级映射是指模式/内模式映射以及外模式/模式映射,见下图

    (1)概念模式

    概念模式(模式)是用以描述整个数据库系统中数据库的逻辑结构描述现实世界中的实体及其性质与联系,定义记录、数据项、数据的完整性约束条件及记录之间的联系,是数据项值的框架。概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式

    (2)外模式

    外模式(用户模式)是用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据。外模式主要描述组成用户视图的各个记录的组成、相互关系、数据项的特征、数据的安全性和完整性约束条件

    外模式是数据库用户(包括程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据用户的数据视图,是与某个应用有关的数据的逻辑表示

    一个数据库可以有多个外模式,但是一个应用程序只能使用一个外模式!

    (3)内模式

    内模式是整个数据库的最底层表示,是数据物理结构和存储方式的描述,是数据在数据库内部的表达方式,一个数据库只有一个内模式

    (4)两级映射

    模式/内模式映射 -> 存在于概念级和内部级之间,实现了概念模式和内模式之间的相互转化 -> 保证了数据的物理独立性

    外模式/模式映射 -> 存在于外部级和概念级之间,实现了外模式和概念模式之间的相互转化 -> 保证了数据与程序间的逻辑独立性

    3.数据库系统的两级独立性

    数据库系统的两级独立性是指物理独立性和逻辑独立性,三个抽象级间通过两级映射(见上面)进行相互转换,使得数据库的三级形成一个整体

    (1)物理独立性

    物理独立性是指用户的应用程序与存储在硬盘上的数据库中的数据是相互独立的,当数据的物理存储改变时,应用程序不需要改变,当然为了保证程序的正常运行,需要修改概念模式和内模式之间的映射

    (2)逻辑独立性

    逻辑独立性是指用户的应用程序与数据库中的逻辑结构是相互独立的,当数据的逻辑结构改变时,应用程序不需要改变,当然为了保证程序的正常运行,需要修改外模式和概念模式之间的映射

    注:逻辑独立性比物理独立性更不容易实现!

    4.数据库系统的功能

    • 数据库定义功能:定义外模式、模式和内模式,定义数据库中的表结构
    • 数据存取功能:检索、插入、修改、删除
    • 数据库运行管理:并发控制、存取控制(安全性检查)、完整性约束条件的检查和执行、数据库内部的维护等
    • 数据库的建立和维护:数据的载入、转换功能、数据库的转储、恢复功能、数据库的重组织功能和性能监视、分析功能
    • 数据字典:数据字典是存放数据库体系结构描述的文件

    5.数据库系统的特点

    • 数据结构化
    • 较高的数据共享性
    • 较高的数据独立性
    • 数据由DBMS统一管理和控制

    三、数据库的控制功能

    1.并发控制

    (1)事务的定义与特征

    数据库管理系统运行的基本工作单位是事务,事务是用户定义的一个数据库操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单位。事务具有以下的特征:

    • 原子性: 事务必须为工作的最小单位,其所进行的操作要么全部执行要么全部不执行
    • 一致性: 使数据库从一个一致性状态变到另一个一致性状态
    • 隔离性: 一个事务所做的修改必须与其他事务所做的修改隔离
    • 持续性: 一旦提交,改变就是永久性的

    事务是一个原子,是不可分割的操作序列,事务中包括的所有操作,要么都做要么都不做(就效果而言)

    (2)并发操作的问题与两种封锁

    数据库的并发操作带来一些问题:

    • 丢失更新问题
    • 不一致问题(读过的数据)
    • 依赖于未提交更新的问题(读了脏数据)

    处理以上并发控制的问题主要方法是采用封锁技术,有两种封锁: X封锁和S封锁

    • 共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。获准共享锁的事务只能读数据,不能修改数据。
    • 排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
    注:  共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据
    排他锁只允许一个事务独锁和使用数据,共享锁允许并发读但是不可以修改

    (3)三级封锁协议

    在运用X锁和S锁对数据对象加锁时,还需要约定一些规则 ,例如何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为封锁协议

    对封锁方式规定不同的规则,就形成了各种不同的封锁协议。

    一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。
    一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。
    在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。
      
    二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。
    二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
      
    三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
    三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。

     

    总结:

    上述三级协议的主要区别在于什么操作需要申请封锁,以及何时释放。

    一级封锁协议 -> 防止丢失更新

    一级封锁协议 -> 防止丢失修改和读脏数据

    一级封锁协议 -> 防止丢失修改、读脏数据及实现数据可重复读

    2.数据的备份与恢复技术

    总结各种故障,对数据库的影响有两种可能性,一是数据库本身被破坏,二是数据库没有被破坏,但数据可能不正确
    (1)数据备份:静态备份和动态备份,海量备份和增量备份。
     
    (2)日志文件:写一个修改到数据库和写一个表示这个修改的日志记录到日志文件中是两个不同的操作,有可能在这两个操作之间发生故障,如果先写了数据库修改,而在日志记录中没有登记这个修改,则以后就无法恢复这个修改了。因为,为了安全,应该先写日志文件,即首先把修改记录写到日志文件上,然后再写数据训的修改,这就是“先写日志文件”的原则。
     
    (3)数据恢复
    • 事务故障的恢复:由系统自动完成,反向扫描日志文件,查找该事务的更新操作,对该事务的更新操作执行逆操作,继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理,如此处理下去,直至读致此事务的开始标记,事务故障恢复完成。
    • 系统故障恢复:在系统重新启动时自动完成,不需要用户干预。正向扫描日志文件,找出在故障发生前已提交的事务,将其事务标识记入重做Redo队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(Undo)队列。对于撤销队列中的各个事务进行撤销处理,反向扫描日志文件,对每个Undo事务的更新操作执行逆操作。对于重做队列中的各个事务进行重做处理。正向扫描日志文件,对每个Redo事务重新执行日志文件登记的操作。
    • 介质故障和病毒破坏恢复:将入最新的数据库备份,从故障点开始反向扫描日志文件,找出已提交事务标识并记入redo队列,从起始点开始正向扫描日志文件,根据Redo队列中的记录,重做已完成的任务。

    3.安全性

    数据库的安全性依靠以下两种方式:

    • DBMS本身提供的用户识别、视图、使用权限控制、审计和数据加密等管理措施
    • 数据库的应用程序来实现对数据库访问进行控制和管理 
     
    DBMS对于用户的访问存取控制有以下两个基本的原则:
    • 隔离原则:用户只能存取他自己所有的和已经取得制授权的数据对象
    • 控制原则:用户只能按他所取得的数据存取方式存取数据,不能越权

    4.完整性

    数据库的完整性可分为
    (1)实体完整性:要求主码中的任一属性不能为空。
    (2)参照完整性:外键必须是对应表中的主键(允许为空)
    (3)用户自定义的完整性: 比如说用户自定义年龄不能为负数或0

    四、数据仓库与数据挖掘 -> 简单了解即可

    1.数据仓库的概念

    数据仓库是一个面向主题、集成的、相对稳定的且随时间变化的数据集合,用于支持管理决策

    数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。

    • 面向主题:指数据仓库中的数据是按照一定的主题域进行组织。
    • 集成:指对原有分散的数据库数据经过系统加工, 整理得到的消除源数据中的不一致性。
    • 相对稳定:指一旦某个数据进入数据仓库以后只需要定期的加载、刷新。
    • 反映历史变化:指通过这些信息,对企业的发展历程和未来趋势做出定量分析预测。

    数据仓库建设是一个工程,是一个过程,而不是一种可以购买的产品。企业数据处理方式是以联机事务处理形式信息,并利用信息进行决策;在信息应用过程中管理信息。数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。数据仓库与数据库的主要区别在于:

    • 数据库是面向事务的设计,数据仓库是面向主题设计的
    • 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据
    • 数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余
    • 数据库是为捕获数据而设计,数据仓库是为分析数据而设计
    简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
    数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
    数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。

    数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”

    2.数据挖掘技术概述

    数据挖掘,就是从数据集中自动识别出有用的相关知识,又乘坐数据库中的知识发现(knowledge discovery in database,简记为KDD),是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。还有许多和这一技术相近似的术语,如从数据库中发现知识(KDD)、数据分析、数据融合(datra fusion)以及决策支持等。人们把原始数据看作是形成知识的源泉,就像从矿石中采矿一样。原始数据可以使结构化的,如关系型数据库中的数据,也可以是半结构化的,如文本、图形、图像数据,甚至是分布在网络上的异构型数据。发现知识的方法可以使数学的,也可以是非数学的;可以使演绎的,也可以是归纳的。发现了知识可以被用于信息管理、查询优化、决策支持、过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门广义的交叉学科,它汇聚了不同领域的研究者,尤其是数据库、人工智能、梳理统计、可视化、并行计算等方面的学者和工程技术人员。
    数据挖掘时一个完整的过程,该过程从大型数据库中挖掘先前未知的,有效的,可实用的信息,并使用这些信息做出决策或丰富知识。它可以分为:确定业务对象、数据选择、数据预处理、建立模型、评价和解释、预测六大步骤。

    3.数据挖掘的功能

    • 自动预测趋势和行为
    • 关联分析
    • 聚类
    • 概念描述
    • 偏差检测

    4.数据挖掘常用技术

    • 关联分析
    • 序列分析
    • 分类分析
    • 聚类分析
    • 预测
    • 时间分类分析

    5.数据挖掘的流程

    数据挖掘的基本流程如下图所示:

    (1)解读需求

    绝大多数的数据挖掘工程都是针对具体领域的,因此数据挖掘工作人员和具体领域的专家交流合作以正确的解读出项目需求。这种合作应当贯穿整个项目生命周期。

    (2)搜集数据

    在大型公司,数据搜集大都是从其他业务系统数据库提取。很多时候我们是对数据进行抽样,在这种情况下必须理解数据的抽样过程是如何影响取样分布,以确保评估模型环节中用于训练(train)和检验(test)模型的数据来自同一个分布。

    (3)预处理数据

    预处理数据可主要分为数据准备和数据归约两部分。其中前者包含了缺失值处理、异常值处理、归一化、平整化、时间序列加权等;而后者主要包含维度归约、值归约、以及案例归约。后面两篇博文将分别讲解数据准备和数据归约。

    (4)评估模型

    确切来说,这一步就是在不同的模型之间做出选择,找到最优模型。很多人认为这一步是数据挖掘的全部,但显然这是以偏概全的,甚至绝大多数情况下这一步耗费的时间和精力在整个流程里是最少的。

    (5)解释模型

    数据挖掘模型在大多数情况下是用来辅助决策的,人们显然不会根据"黑箱模型"来制定决策。如何针对具体环境对模型做出合理解释也是一项非常重要的任务。

  • 相关阅读:
    js中的数据类型转换
    js中的数据类型
    模仿QQ菜单的手风琴效果(点击当前展示其“兄弟”关闭)
    QQ菜单案例,点击展开再次点击关闭(类似手风琴效果)
    日期格式化:SimpleDateFormat【线程不安全】、FastDateFormat和Joda-Time【后两个都是线程安全】
    lik模糊e查询语句,索引使用效果详解
    组合索引的使用效果的总结
    Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
    Spring4新特性
    Spring 事物机制(总结)
  • 原文地址:https://www.cnblogs.com/wyb666/p/8724384.html
Copyright © 2011-2022 走看看