热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据库原理(一)数据库基本概念

1数据库基本概念1.1数据库和数据库管理系统数据库管理系统:由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这个数据集合一般叫做数据库。数据库管理系统(Database

1 数据库基本概念

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


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


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


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


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




1.2 数据库系统和文件系统

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

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

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


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

其实文件和数据库我们都可以用来存数据,但是文件是操作系统提供的一个最简单最基本的一个存取数据的机制;在操作系统里,数据在文件里没有结构,而是一串平滑的字符流。所以,文件系统明显地有下列5个缺点:



  • 数据访问困难;编写应用程序很不方便。由于操作系统只提供打开、关闭、读、写等几个低级的文件操作系统,对文件的查询、修改等处理都必须在应用程序解决。

  • 数据冗余不一致;文件的设计很难满足多种应用程序的不同要求,数据冗余往往是不可避免的 。相同的信息可能在几个地方重复存储,比如一个学生是学数学和音乐的,数学课的文件上面有他的名字和学号,音乐课上面也有;这样的话如果该学生学号改变,两个文件都要改,假如一个地方没改,就会造成数据不一致

  • 维护艰难;对文件结构的每个修改将导致应用程序的修改,应用程序的维护工作量很大。

  • 并发访问异常;文件系统一般不支持对文件的并发访问。

  • 数据孤立;由于数据缺少同一管理,在数据的结构、编码、表示格式、命名以及输出格式等方面不容易做到规范化、标准化;在数据的安全和保密方面,也难以采取有效的措施。

  • 原子性问题;传统的文件处理系统中,保持原子性很难做到。比如两个发生银行的转账,两个账户的文件都要同时修改,也就是说,转账这个操作必须是原子的——要么不发生要么全发生,而这个是传统的文件系统很难做到的。


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


数据库管理系统的好处



  • 数据独立性和有效访问。

  • 减少应用开发时间。

  • 数据完整性和安全性。

  • 对数据库的统一管理。

  • 故障恢复。





1.3 数据模型

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


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



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



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


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

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




  1. 关系模型

这里我们不过多提及



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

这里我们不过多提及



  1. 基于对象的数据模型

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



  1. 半结构化数据模型

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

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





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 数据独立性

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


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

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

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



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

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


数据独立性是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这样的应用程序接口标准被用于进行客户端和服务器的交互。

image-20220124121444130


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

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

image-20220124121505132

拿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. 数据库的扩充和重构

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





推荐阅读
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 图数据库中的知识表示与推理机制
    本文探讨了图数据库及其技术生态系统在知识表示和推理问题上的应用。通过理解图数据结构,尤其是属性图的特性,可以为复杂的数据关系提供高效且优雅的解决方案。我们将详细介绍属性图的基本概念、对象建模、概念建模以及自动推理的过程,并结合实际代码示例进行说明。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 本文详细介绍了 MySQL 数据库中的基础操作,包括创建、查询、修改和删除数据库、表及数据的命令。通过具体的 SQL 语句示例,帮助读者快速掌握 MySQL 的基本操作。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文探讨了在使用 Django 进行数据库迁移时遇到的常见问题,特别是当出现不一致的迁移历史记录时,如何通过删除所有表并重新进行迁移来解决问题。同时,提供详细的步骤和最佳实践,帮助开发者顺利解决此类问题。 ... [详细]
  • 本文探讨了dbforms框架的核心设计理念及其背后的技术原理,详细分析了该框架如何通过其独特的设计模式来简化开发流程,并为开发者提供了优化使用方法的建议。 ... [详细]
author-avatar
宇中尘粒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有