数据库

数据库基础知识,数据库基本概念和知识重点。

一、数据库

数据:是科学实验、检验、统计等所获得的和用于科学研究、技术设计、查证、决策等的数值。

  在计算机系统中,信息是观念上的,各种字母、数字符号的组合、语音、图形、图像等统称为数据,数据经过加工后就成为信息。

数据库:是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。是一个按数据结构来存储和管理数据的计算机软件系统。

  数据库是一个实体,它是能够合理保管数据的仓库,用户在该仓库中存放要管理的事务数据,数据和库两个概念结合成为数据库。数据库是数据管理的新方法和技术,他能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

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

  用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。

数据库系统:简称DBS,是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。它是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。

  数据库系统通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。

数据仓库:简写为DW或DWH,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

二、数据库类型

  数据库通常分为层次式数据库、网络式数据库和关系式数据库三种,而不同的数据库是按不同的数据结构来联系和组织的。在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。

关系型数据库:解决网状数据库和层次数据库在数据库独立性和抽象级别上的欠缺,把复杂的数据结构归结为简单的二元关系(即二维表格形式)。

  因此在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。关系型数据库诞生40多年了,常见的有Oracle和MySQL数据库。

非关系型数据库:即NoSQL,主要是基于非关系模型的数据库,常见的非关系模型有列模型、键值对模型、文档类模型,相比于关系型数据库,节省了大量空间。

  非关系型数据库可以看成是一种数据结构化存储方法的集合,通常采用分布式存储,且一般不支持ACID。常见的非关系型数据库有redis、mongoDB等。

关系型数据库和非关系型数据库区别
  数据存储方式不同:关系型数据库存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。非关系型数据库存储在数据集中,就像文档、键值对或者图结构,而具体的存储结构取决于数据的特性。
  扩展方式不同:为了支持更多并发量,关系型数据库通常是纵向扩展,也就是为了提高处理能力,要使用速度更快速的计算机来处理数据集,但最终可能达到纵向扩展的上限。而非关系型数据库天然就是分布式的,可以使用横向扩展的方式即通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
  对事务的支持不同:对于数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么关系型数据库从性能和稳定性方面是最佳选择,关系型数据库支持对事务原子性细粒度控制,并且易于回滚事务。虽然非关系型数据库也支持事务,但稳定性方面没法和关系型数据库比较。它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

三、关系型数据库

主键:唯一标识一条记录,不能有重复的,不允许为空。
外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值。
迪卡尔积:规定为两个集合的乘积。

基本概念
  在关系型数据库中,关系就是一张表,而表中的每行(数据库中每条记录)就是一个元组,也称为数据行。而每列就是一个属性,也叫做字段。因此可以发现字段定义了数据的意义,数据行的集合就构成了数据表,数据库则是数据表的集合。

关系表示
  一对一:可以单独由一张表表示,表的主键用来做唯一标识。
  一对多:两张表,其中一张表需要通过外键指向另一张表的主键来表达一对多的关系。
  多对多:需要三张表,其中两张独立的表,一张关系表有两个外键分别指向其余两张表的主键,通过关系表表达多对多关系。

关系运算
  集合运算:包括集合的合并运算、求交集运算、求差集运算以及集合乘积元素(即集合的迪卡尔积)。
  选择运算:是单目运算,从一个关系中选择出(可根据比较运算符、逻辑运算符)满足给定条件的所有元组,并同R具有相同的结构。
  投影运算:也是单目运算,从一个关系R所有属性中选择某些指定属性,组成一个新的关系。即投影运算选取关系的某些列,并消除重复的数据得到新的关系。
  连接运算:属于二目运算,从两个关系元组的所有组合(即迪卡尔积)中选取满足一定条件的元组,由这些元组形成连接运算的结果关系。
  除运算:设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。可以理解为结果关系T所包含的字段为关系R的字段集合减去关系S的字段集合。且满足关系T和关系S的迪卡尔积包含于关系R中。

完整性约束
  实体完整性约束:表中的每一行数据都反映不同的实体,不能存在相同的数据行,即每个表都有唯一标识符,每一个表中的主键字段不能为空或者重复的值。
  参照完整性约束:是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。通常指关系中的外键必须是另一个关系的主键有效值,或者是NULL。维护参照完整性报保证一定的更新删除插入规则。
  域完整性约束:是对数据表中字段属性的约束,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。
  用户定义完整性约束:用来定义特定的规则,反映某一具体应用所涉及的数据必须满足的语义要求。包括非空约束、唯一约束、检查约束、主键约束 、外键约束等,也可使用存储过程和触发器来实现。

四、数据库范式

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。超键的组合是唯一的,但可能不是最小唯一。
候选键:不含有多余属性的超键称为候选键。侯选键可以有多个,而主键是选择一个侯选键将其定义为主键。
主属性:在一个关系中,如一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。否则就是非主属性。

设计范式:是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新操作异常。反之不规范的数据库设计不仅在操作上容易发生异常,还可能存储了大量不需要的冗余信息。

第一范式
  第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。即实体中的某个属性不能有多个值或者不能有重复的属性。第一范式是对关系模式的基本要求,也不存在任何的关系型数据库管理系统能够把数据表的一列分为二列或多列,否则其就不是关系型数据库。

第二范式
  第二范式(2NF)在第一范式的基础上,要求关系的每一个非主属性完全函数依赖于关系的某个候选键(不存在部分依赖)。第二范式要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。另外所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。

  当不满足第二范式通常会存在数据冗余、更新异常、插入异常、删除异常。(如关系(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)不满足第二范式就会产生上述问题,解决方法是将该关系分解为学生(学号, 姓名, 年龄)、课程(课程名称, 学分)、选课(学号, 课程名称, 成绩)三个关系,三个关系都符合第二范式,消除问题)

第三范式
  第三范式(3NF)在第二范式的基础上,满足关系每个非主属性都不传递依赖于关系的候选键(属性不依赖于其它非主属性)。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

  通常不满足第三范式也会存在数据冗余、更新异常、插入异常和删除异常的情况。(如关系(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话),不满足第三范式是因为存在(学号) → (所在学院) → (学院地点, 学院电话)。解决方法将其分解为学生(学号, 姓名, 年龄, 所在学院)、学院(学院, 地点, 电话)两个关系,两者均满足第三范式)

BCNF
  BCNF是指在第三范式的基础上进一步消除主属性对于码的部分函数依赖和传递依赖。(一般不强制要求满足)

  不满足BCNF也可能发生更新异常、插入异常和删除异常。(如仓库管理关系有(仓库ID,存储物品ID) →(管理员ID,数量)和(管理员ID,存储物品ID) → (仓库ID,数量)两个函数依赖,因此(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是候选关键字,存在(仓库ID) → (管理员ID)、(管理员ID) → (仓库ID)所以不满足BCNF。解决方法将表分为仓库管理(仓库ID,管理员ID)和仓库(仓库ID,存储物品ID,数量)两个表)

五、数据库索引

索引:

posted @ 2024-07-02 23:40  Idempotent  阅读(1)  评论(0编辑  收藏  举报