数据库杂谈(一)——数据库基本概念

文章目录

  • 1 数据库基本概念
    • 1.1数据库和数据库管理系统
    • 1.2 数据库系统和文件系统
    • 1.3 数据模型
    • 1.4 数据库三级模式和两级独立性
      • 1.4.1 三级模式
      • 1.4.2 二级映像功能
      • 1.4.3 数据独立性
    • 1.5 数据库发展历史及分类
    • 1.6 数据库系统的组成和生命周期
      • 1.6.1 三个概念
      • 1.6.2 生命周期
      • 1.6.3 存储管理器
    • 1.7 数据库用户和管理员

1 数据库基本概念

1.1数据库和数据库管理系统


Q:数据库和数据库管理系统是啥?

数据库管理系统:由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这个数据集合一般叫做数据库

数据库管理系统(Database Management System,简称DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言(Data Definition Language,DDL)和数据操作语言(Data Manipulation Language,DML),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

数据库:数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

从数据库管理系统的定义可知,数据库是数据库管理系统的子集


1.2 数据库系统和文件系统


Q:设计数据库系统的目的是为了管理大量信息。那为什么我们有文件系统了,可以放数据了,为啥还要用到数据库呢?

在早期的计算机中,保存信息的方法是将它们保存在操作系统文件中。为了使用户可以对信息进行操作,系统中应该有一些对文件进行操作的应用程序。这个谈到的应用程序不是我们说的QQ啊,网易云啊这种程序,而是针对某种功能设计的特殊程序。比如大学学生管理系统中增加新的学生、教师和课程;为课程注册学生,并产生班级花名册。这些应用程序都是由系统程序员根据大学的需求编写的。

也就是说,当我们追求越完美的学生管理系统,所需要的文件和应用程序可能就越来越多。而这似乎有一些弊端。


文件和数据库的区别(这里我们讲的是在应用开发上的区别)

其实文件和数据库我们都可以用来存数据,但是文件是操作系统提供的一个最简单最基本的一个存取数据的机制;在操作系统里,数据在文件里没有结构,而是一串平滑的字符流。对于数据管理,文件系统只提供了简单create,open,read,write,lseek等简单的操作,如果对数据管理有复杂的管理的话,文件系统是远远不够用的。

然而,使用数据库管理系统可以提高数据管理的能力,一些非常底层的操作DBMS都能帮你去做。

综上所述,文件系统明显地有下列5个缺点:

  • 数据访问困难;编写应用程序很不方便。由于操作系统只提供打开、关闭、读、写等几个低级的文件操作系统,对文件的查询、修改等处理都必须在应用程序解决。
  • 数据冗余不一致;文件的设计很难满足多种应用程序的不同要求,数据冗余往往是不可避免的 。相同的信息可能在几个地方重复存储,比如一个学生是学数学和音乐的,数学课的文件上面有他的名字和学号,音乐课上面也有;这样的话如果该学生学号改变,两个文件都要改,假如一个地方没改,就会造成数据不一致
  • 维护艰难;对文件结构的每个修改将导致应用程序的修改,应用程序的维护工作量很大。
  • 并发访问异常;文件系统一般不支持对文件的并发访问。
  • 数据孤立;由于数据缺少同一管理,在数据的结构、编码、表示格式、命名以及输出格式等方面不容易做到规范化、标准化;在数据的安全和保密方面,也难以采取有效的措施。
  • 原子性问题;传统的文件处理系统中,保持原子性很难做到。比如两个发生银行的转账,两个账户的文件都要同时修改,也就是说,转账这个操作必须是原子的——要么不发生要么全发生,而这个是传统的文件系统很难做到的。

也就是说,我们使用数据库管理系统的优点即为文件系统的缺点。

数据库管理系统的好处

  • 数据独立性和有效访问。
  • 减少应用开发时间。
  • 数据完整性和安全性。
  • 对数据库的统一管理。
  • 故障恢复。

1.3 数据模型


在讲解这一部分之前,我们需要对几个概念有些许了解。

数据:就是描述现实世界的符号,它是信息存在的形式。

数据模型:数据模型就是来描述数据的一组概念和定义;也可以理解为数据结构,实际上就是描述现实世界的方法。

数据模式:用一个给定的数据模型对一个具体数据的描述。

实际上,如果学过数据结构,就可以很轻松地了解以上的概念。你也可以这么理解:数据模型相当于编程语言,比如C++,Java等,数据模式就是用对应的编程语言写出来的软件。

或者说,我受某个企业所托,用某种形式去描述它们企业内的数据。那么这句话中所谓的某种形式就是数据模型,数据模式就是我描述的结果。

目前数据库中主流的数据模型是关系数据模型,在数据库原理的课程中一般都是围绕关系数据模型作为讲解。数据模型可以分为以下四类:

关系模型

使用关系模型的数据库我们叫做`关系型数据库`。在上世纪七十年代,关系数据库已是主流。关系数据库的基本数据结构就是`关系`,换而言之就是一张特殊的二维表,这个表有行有列,其中的行我们称为元组,其中的列我们称为属性

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

基于对象的数据模型

面向对象的程序设计已经目前称为主流的软件开发方法。这导致面向对象数据模型的发展,面向对象的数据类型可以看成是E-R模型增加了封装,方法(函数)和对象标识等概念的扩展。对象-关系数据模型结合了面向对象的数据模型和关系数据模型的特征。

半结构化数据模型

这里我们不过多累述,但是我们要知道可扩展标记语言被广泛地用来表示半结构化数据。

提示

需要注意的是,实际上在以前还有网状数据模型和层次数据模型,下面我们也有讲述,不过由于他们已经过时了,除了在某些地方仍旧是用的旧数据库之外,现在已经很少使用了。


1.4 数据库三级模式和两级独立性

1.4.1 三级模式


三级模式指的是:许多视图、简单的概念(逻辑)模式物理模式。这和Java中的MVC设计框架有点类似。

image-20211004004634420
  • 外模式(视图)描述的是如何去看数据。

  • 概念模式定义逻辑结构。

  • 物理模式描述文件和索引的使用。

一个数据库中的文件,最终会以文件的形式存储在磁盘上。那么表在磁盘上会怎么存呢?比如说学生基本信息表,你是用一个堆文件来存,还是用一个哈希文件来存,还是用一个簇集,这都是取决于我们用什么结构来存,而存法,就是physical Schema(物理模式)。

概念模式,就是我们刚刚说的表,表的结构是什么,属性有多少,长度如何,这就是概念模式,我们把概念模式里的表叫做基表,基表是用真正的某种结构存储在磁盘上的。而外模式(视图),是通过对基表的改造,来呈现不同的样子给用户看,不同权限的用户看到的视图是不一样的。

不同的术语

概念模式一般也叫结构模式或简称模式,其作用是对数据库中全体数据的整体逻辑结构和特征的描述。

而外模式也叫子模式用户模式,是数据库用户看到的视图。

物理模式也叫存储模式内模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。

举个例子,如果拿大学数据库的例子来说明上面的三级模式的话:

概念模式

Student(sid:string,name:string,login:string,age:integer,gpa:real)
Course(cid:string,cname:string,credits:integer)
Enrolled(sid:string,cid:string,grade:integer)

物理模式

  • 以堆文件来存放
  • 在学生表的第一列建一个B+树索引

视图

Course_info(cid:string,enrollment:integer)

视图可以不是基表的信息,可以是通过基表的信息计算出来的。

基表是真真实实存在的,他的数据显式地存储在数据库中,或者换一种说法就是,你当时存的时候什么样基表就长什么样。

而虚表是仅有逻辑定义,可以根据其定义从其他表(包括视图)中导出,但不作为一个表显式地存储在数据库中。换一种说法就是,比如你数据库里面已经有个基表了,然后我通过某些要求过滤了一些条件,查询出来的表就是虚表,虚表实际上不存在数据库里,他只是通过一些计算和逻辑语言提取出来的。

当基表的模式修改时,通过定义适当的视图,仍可以为用户提供修改前的数据模式,避免修改应用程序,从而有利于提高数据的逻辑独立性。也就是说,即使你基表改了,但是为了视图还是和以前一样,我们可以在基表的基础上做一些其他的操作,使他改变操作后算出来的虚表和之前没改的虚表一模一样。


1.4.2 二级映像功能


数据库管理系统的三级模式对应数据库中数据的三个抽象级别。为了能够在数据库内部实现这三个抽象层次的联系和转换,数据库系统提供了三级模式之间的两层映像

两层映像指的是外模式/模式映像模式/内模式映像


1.4.3 数据独立性


实际上对于应用程序来说,其可以不在意数据库中的数据是怎么存放的,这是由于数据库中的数据具有数据独立性。

逻辑数据独立性:保护数据的逻辑结构的改变

一个在数据库的基础之上开发的应用程序不受数据逻辑结构的影响。

假如基表变动(也就是数据结构变动),那么通过改变一些逻辑,能够使得原来基表还未变动之前的视图不受改变。即基表虽然改变,但是视图为了保证不变,我修改基表和视图的映射。

物理数据独立性:保护数据的物理结构的改变

一个表结构变化,比如我前面使用哈希文件存的,但是现在用堆文件存,只要表逻辑结构不变,物理结构变化是没事的。

数据独立性是DBMS最大的好处之一。因为文件系统是没有这样的优点的。


1.5 数据库发展历史及分类


发展历史我觉得几个特别的需要记住,其他的就算了。

  • 1964年,第一个DBMS:美国通用电气公司Bachman等人开发的IDS,采用网状数据模型。
  • 1969年,IBM公司推出了IMS,采用层次数据模型。
  • 1970年,E.Fcodd(IBM)提出了关系数据模型,以关系(表)作为描述数据的基础。

如果根据DBMS的发展历史来分类的话:

在计算机发展早期,那时候没有网络,一台主机带着一堆终端,大家通过终端来访问一台机器,很明显,那时候数据库也是集中放在一台机器上,所以当时DBMS早期是一种集中式数据库结构

70年代中后期,随着局域网的发展还有其他网络的普及,出现了分布式数据库系统;所谓并行计算机系统就是在一台计算机上,可能会有多个CPU,每个CPU可能带有自己的内存甚至带有自己的硬盘。在考虑并行计算机系统的软硬件特点,前人做出了能够提高效率的并行式数据库系统;由于当时电脑配置还不是很高级,很多时候用一个分布式操作系统通过网络控制多台机器,使其协调共同完成一个数据库系统的工作。

随着无线网络的发展,后来又出现了移动数据库的概念,也就是充分利用移动网络的能力,在随时随地都能够访问到数据库。网格计算和云计算都是这方面的技术。

根据数据库架构的话可以分为以下两种:

CS结构(两层体系架构)

C/S又称Client/Server或客户/服务器模式,服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。也就是说,在CS架构中,应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库系统功能。像ODBC和JDBC这样的应用程序接口标准被用于进行客户端和服务器的交互。

BS结构(三层数据库结构)

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。BS结构中用户端的浏览器通过应用服务器同数据库进行数据交互。

拿VPN来说,现在比如说校园网,都是通过IE浏览器然后访问互联网,然后互联网给Web服务端(应用服务器)发请求,如果成功,则通过App服务端(用户端)访问校园网数据库,如果失败则进入不了校园网。

C/S架构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个: 只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。


1.6 数据库系统的组成和生命周期

1.6.1 三个概念


在最开始的时候我们提到数据库是数据库管理系统的一个子集,对于很多人来说,数据库、数据库管理系统、数据库系统三个概念常常容易混淆,这里给出三者定义方便做对比:

数据库是长期存储在计算机内有组织、可共享的数据集合,数据库中的数据按一定的数据模型组织、描述、存储,冗余度小,具有较高的数据独立性、共享性和易扩展性。

数据库管理系统是数据库系统的核心组成部分,它是介于用户与操作系统之间的一层数据管理软件,是用户和数据库的接口。

数据库系统是带有数据库的计算机系统,一般由数据库、数据库管理系统(及其开发工具)、相关的硬件、软件和各类人员组成。数据模型是数据库的核心。

image-20211004020310273

综上所述:数据库系统=应用+DBMS+数据库+DBA


1.6.2 生命周期


数据库和软件一样,也有一个生存周期,它包含下列五个阶段。

  1. 数据库系统的规划

    它包含系统的应用和功能的确认、应用环境的分析、DBMS及其支持环境的选择和配置、人员的配置和培训以及投资估算和效益分析等活动。

  2. 数据库设计

    数据库设计实际上主要是数据的表示方法和存储结构的设计。

  3. 数据库建立

  4. 数据库的运行、管理和维护

    数据库投入运行后,还必须监视和调优其性能,听取用户的反馈,必要时对数据库做相应的调整

  5. 数据库的扩充和重构

    一个单位的组成、结构和功能是会变化的,其对应的数据模式也须做相应的改变。


1.6.3 存储管理器


存储管理器负责数据库中数据的存储、检索和更新,其和文件管理器进行交互,原始数据通过操作系统提供的文件系统存储在磁盘上。

存储管理器一般包括以下几类:

存储管理部件说明
权限及完整性管理器它检测是否满足完整性约束,并检查视图访问数据的用户的权限
事务管理器它保证即使发送了保障,数据库也保持在一致的状态,并保证并发事务的执行不发生冲突
文件管理器它管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构
缓冲区管理器它负责将数据从磁盘上取到内存来,并决定哪些数据应该缓冲存储在内存中

存储管理器还实现了一些数据结构,可以作为系统物理实现的一部分:

数据结构说明
数据文件存储数据库自身
数据字典存储关于数据库结构的元数据,尤其是数据库模式
索引用于提供对数据项的快速访问,在MySQL中一般采用B+树索引

1.7 数据库用户和管理员


使用数据库的人员一般分为数据库用户数据库管理员

举个简单的例子,我们要登录QQ,那么在登录界面当你输入账号密码后,后端马上会去数据库寻找关于你的数据,一旦找到了就通过登录。那么作为登录用户,你就是数据库用户;而对于后台管理数据库的人来说,它要设计你所在数据库中对应的表,还有负责一系列优化、并发、恢复工作,这类人就叫数据库管理员,即DBA。

DBA主要的作用如下:

作用说明
模式定义DBA利用DDL来书写关于表的定义
存储结构以及存取方式的定义
模式和物理组织的修改DBA设计模式来适应不同的需求,并且选择不同的物理结构来提高性能
数据访问授权对不同类型的权限,DBA可以给不同权限看不同的视图
日常维护主要是定期备份、监视磁盘空间、监视数据库运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Java删除文件夹和文件

原文网址:http://kxjhlele.iteye.com/blog/323657 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1&#xff0c…

数据库杂谈(二)——数据模型

2 数据模型 摘要:数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是…

android编译系统apk文件,VS2012中MonoForAndroid打包编译APK文件详细图文教程

本文用于介绍Visual Studio 2012中Xamarin Mono For Android 如何打包编译APK文件,从如何创建Android项目,到如何启动调试,都会逐个配图讲解。1 新建项目2 选择安卓3 选择安卓程序4 随便取名和设置存放路径5 确定1 创建完一个新的项目2 点击“…

判断程序是否已经运行

近段时间,需要写一个小功能,就是需要判断程序是否已经运行。某个程序安装后,也许被多个用户运行。那怎样判断当前用户已经运行了此程序了呢?下面是Insus.NET的做法,就是:《VB.NET WinForm获取运行程序用户名…

浅谈缓存技术在ASP.NET中的运用

本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可&#…

Git快速入门+复习笔记

对于学习编程的同志来说,学习Git是必不可少的一项技术,如果你是第一次观看我的文章,欢迎关注我的频道,我会分享更多有趣的知识。 文章目录1 目标2 概述2.1 开发中的实际场景2.2 版本控制器的方式2.3 工作流程图3 Git安装和常用命令…

Android浏览器速度测试,Android平台浏览器网页加载速度对比评测

参与测试的浏览器手机上网已经渐渐成为人们的一种习惯,无论在等公交时、乘地铁时、吃饭等餐时,很多朋友都习惯掏出手机简单浏览一下微博、人人、新闻网站等页面。移动网络的确为我们带来了莫大的便利,但网速和稳定性却是移动网络的硬伤。针对…

操作系统随笔(一)

你好朋友,当你点进来这份读书笔记时,我相信你不是无意中点进来就是对这一部分饶有兴趣,可惜的是,我也只是个普通的大学生,有时候对知识的见解获取没有屏幕前的你那么有天赋,所以在阅读完这篇文章的同时点个…

codeforces 483B Friends and Presents 解题报告

题目链接:http://codeforces.com/problemset/problem/483/B 题目意思:有两个 friends,需要将 cnt1 个不能整除 x 的数分给第一个friend,cnt2 个不能整除 y 的数分给第二个friend。x 和 y 都是素数来的。要求求出最小的 v&#xff…

并行计算随笔(一)

如果觉得本篇文章对你有所启发,请给我点个赞好吗,这对我很重要,谢谢 文章目录1 并行计算基础1.1 什么是并行计算1.1.1 对计算速度的需求1.1.2 并行计算1.1.3 并行计算的基本条件1.1.4 平行计算和分布式计算1.2 为什么需要并行计算1.3 并行计算…

命令行的形式运行php

转自:http://www.cnblogs.com/myjavawork/articles/1869205.html 注意:在安装php时需要将php 的安装目录加到环境变量 PATH 中 (右击我的电脑->属性->高级->环境变量, 如果存在 PATH 则在原来的 PATH 中加入你的PHP安装目录, 如果不存在则新建一…

idea android 模块,IntelliJ IDEA 12 - 新的Android应用程序模块向导失败,“无法找到模块的资源目录”...

我面临的问题是一个非常简单的问题... 我无法使用IntelliJ IDEA 12来帮助我创建一个Android应用程序模块(项目)。IntelliJ IDEA 12 - 新的Android应用程序模块向导失败,“无法找到模块的资源目录”成功安装的IntelliJ IDEA 12和使IDE和二者的SDK(Java和Android设备)…

JQuery常用知识点汇总

2019独角兽企业重金招聘Python工程师标准>>> 0、JQuery的基本属性标识: $(".xxx"):标签的class属性; $("#xxx"):标签的id属性; $("xxx"): 标签名&#…

数据库杂谈(三)——关系代数

3 形式化关系查询语言 摘要:关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。在本文中,我们不仅谈论关系代数的知识点,而且还配备了对应的练习题。 文章目录3 形式化关系查询…

android native.js,Android Native与JS通信互调

写在最前:看Android最新技术总结,关注公众号:最近因为App与H5交互逻辑太乱,所以抽空梳理了下;对目前App与H5的各种交互通信做个总结,自取适合自己的交互方式。一、H5调用原生的native方法1、拦截shouldOver…

SharePoint2013 Excel导出好的代码

C#Excel操作类ExcelHelper.cs 来源:http://www.hellocsharp.com/article/67.aspx C#源码世界 发布于: 2014-09-12使用本类之前必须在本机安装了office excel组件或直接下载Microsoft.Office.Interop.Excel.dll文件引用到项目目录下: 然后复制…

基于PMOS的电源防反接电路

如下图所示,是来自TI的参考设计TIDA-00982中的一个电路,功能主要是防止输入反接,R6和C6形成吸收回路,可以对上电过冲有一定的抑制作用。电源正常接入时,PMOS导通,给负载供电,由于VDS的存在&…

计算机组成原理随笔(一)

1 计算机体系结构 计算机革命发展得非常快速,以至于使用老式计算机的很多电影现在看起来十分有年代感,有的电影甚至无法预料后来的计算机是什么样的。 计算机各个组成部分的技术发展非常不均衡,各部分性能差异非常大。在计算机的发展前期&a…

Mongo读书笔记1 -- GridFS

一个Mongo文档最大4M. GridFS不依赖于MongoDB, 其他符合规范的驱动都可以访问它。 GridFS包含两部分:一部分存储文件名和其他metadata; 另一部分存储实际的文件,通常分成一个个大小为256k的小块。 这两个部分通常被命名为files和chunks,在fs命名空间下&a…

简单搭建一个SSM项目(一)

简单搭建一个用户管理的SSM项目框架,虽然也能用servletjdbc搭建更简单的,不过个人感觉工作中更多用的ssm框架项目,这里就简单用ssm来搭建需要的项目吧。 准备工具:eclipse、jdk1.7、Mysql、maven、tomcat。(请先确定计…