MySQL系列之开篇 MySQL关系型数据库基础概念


Posted in MySQL onJuly 02, 2021
目录
  • 一、基础概念
  • 二、数据库管理技术的发展
  • 三、关系型数据库(RDBMS)概念
  • 四、RDBMS设计范式

 

一、基础概念

数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的、可以鉴别的信息。

1、数据库(Database,DB)是指长期储存在计算机中的有组织的、可共享的数据集合。数据要按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性,系统易于扩展,并可以被多个用户分享。

数据的三个基本特点:

  • 永久存储
  • 有组织
  • 可共享

2、数据库管理系统(DBMS)是专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。 它实现数据库系统的各种功能。是数据库系统的核心。

  • 数据定义功能
  • 数据操作功能
  • 数据库的运行管理功能
  • 数据库的建立和维护功能
  • 数据组织、存储和管理功能
  • 数据的安全保证
  • 数据的备份功能

3、数据库系统的构成有:

  • 用户(终端用户)
  • 程序(API)
  • 应用程序:指以数据库为基础的应用程序
  • 数据库管理系统
  • 数据库管理员(DBA):负责数据库的规划、设计、协调、维护和管理等工作
  • 数据库

4、数据库系统的架构:

  • 单机架构
  • 大型 主机/终端 架构
  • 主从式架构 c/s :客户/服务器结构(Client/Server,C/S)中, “客户端”、“前台”或“表示层”主要完成与数据库使用者的交互任务; “服务器”、“后台”或“数据层”主要负责数据管理。
  • 分布式架构

5、数据库系统的结构

  • 模式:也称为概念模式或逻辑模式,是数据在逻辑上的视图,即概念视图
  • 外模式:也称为子模式或用户模式 数据视图,即用户视图
  • 内模式:也称为存储模式,是内部视图或存储视图

外模式/模式映像 保证了数据与程序的逻辑独立性

内模式/模式映像 保证了数据与程序的物理独立性

6、模型

​模型(Model)是现实世界特征的模拟和抽象表达。

​数据模型是对现实世界数据特征的抽象,描述的是数据的共性内容。

 

二、数据库管理技术的发展

  • 萌芽阶段-----文件系统 使用磁盘文件来存储数据
  • 初级阶段-----第一代数据库 出现了网状模型、层次模型的数据库
  • 中级阶段-----第二代数据库 关系型数据库和结构化查询语言
  • 高级阶段------新一代数据库 “关系-对象”型数据库

1、文件系统管理的缺点

  • 编写应用程序不方便
  • 数据冗余不可避免
  • 应用程序依赖性
  • 不支持对文件的并发访问
  • 数据间联系弱
  • 难以按用户视图表示数据
  • 无安全控制功能

2、数据库管理系统的优点

  • 相互关联的数据的集合
  • 较少的数据冗余
  • 程序与数据相互独立
  • 保证数据的安全、可靠
  • 最大限度地保证数据的正确性
  • 数据可以并发使用并能同时保证一致性

 

三、关系型数据库(RDBMS)概念

​关系数据库(Relation Database)是所有关系的集合,构成一个关系数据库。 以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。

  • 表(Table)是一个二维的数据结构,由表名、列、若干行数据组成。
  • 关系 :关系就是二维表。并满足如下性质: 表中的行、列次序并不重要
  • 行row:表中的每一行,又称为一条记录Record或元组Tuple。表中的数据按行存储。
  • 列column:表中的每一列,称为属性Attribute,字段Field
  • 分量(Component) :元组(行)中的一个属性值,称为分量。
  • 键(Key):属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的键。
  • 主键(Primary key):用于惟一确定一个记录的字段
  • 外键(Foreign Key) 某个属性(或属性组)不是这个关系的主码或候选码,而是另一个关系的主键。
  • 参照关系(Referencing Relation)和被参照关系(Referenced Relation):参照关系也称为从关系,被参照关系也称为主关系,它们是指以外键相关联的两个关系。
  • 域domain:属性的取值范围,如,性别只能是‘男'和‘女'两个值。
  • 数据类型(Data Type) 每个列都有相应的数据类型,它用于限制(或容许)该列中存储的数据。

1、事务transaction

多个操作被当作一个整体对待

事务遵循ACID特性:

  • A原子性:不可分割性,所有的动作要全做,要不都不做
  • C一致性:保持数据一致性
  • I隔离性:事务没有完成无法看大最终数据
  • dirty data 脏数据:事务没做完的数据
  • D持久性:持久影响,永久性

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

​实体Entity:客观存在并可以相互区分的客观事物或抽象事件称为实体。在E-R图中用矩形框表示实体,把实体名写在框内。

​属性:实体所具有的特征或性质

​联系:联系是数据之间的关联集合,是客观存在的应用语义链。联系有实体内部的联系和实体之间的联系。实体之间的联系用菱形框表示。

联系的类型:

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

3、关系型数据库的历史

  • 1970年 IBM的E.F.Codd提出了关系模型,奠定了关系数据库的理论基础
  • 20世纪70年代末关系方法理论研究和软件系统的研制取得了重大突破
  • 1981年 出现了比较成熟的关系数据库管理技术,证实了关系数据库的优点:高级的非过程语言接口、较好的数据独立性。
  • 20世纪80年代后 网状模型和层次模型与底层实现的结合紧密,关系模型具有坚实理论基础,成为主流数据模型。

4、关系数据模型的组成要素

数据模型的要素包括:

  • 关系数据结构
  • 关系操作集合
  • 关系完整性约束

5、数据三要素

  • 数据结构:包括两类,一类是与数据类型、内容、性质有关的对象,比如关系模型中的域、属性和关系等;另一类是与数据之间联系有关的对象,它从数据组织层表达数据记录与字段的结构。
  • 数据的操作:

数据提取,在数据集合中提取感兴趣的内容。
数据更新:变更数据库中的数据。

  • 数据的约束条件:是一组完整性规则的集合

实体(行)完整性 Entity integrity
域(列)完整性 Domain Integrity
参考完整性 Referential Integrity

6、约束constraint

  • 主键约束:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能有一个。
  • 惟一键约束:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个。
  • 外键约束:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据。
  • 检查约束:字段值在一定范围内。

7、索引

​将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储。

8、关系运算

  • 选择:挑选出符合条件的行
  • 投影:挑选出需要的字段
  • 连接:表间字段的关联

9、数据模型

  • 数据抽象:

物理层:数据存储格式,即RDBMS在磁盘上如何组织文件
逻辑层:DBA角度,描述存储什么数据,以及数据间存在什么样的关系
视图层:用户角度,描述DB中的部分数据

  • 关系模型的分类:

基于对象的关系模型
半结构化的关系模型

 

四、RDBMS设计范式

​设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

​目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

​满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。

一般说来,数据库只需满足第三范式(3NF)即可。

  • 1NF:无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。除去同类型的字段,就是无重复的列。

说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库

  • 2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性。
  • 3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系。

到此这篇关于MySQL系列之开篇 MySQL关系型数据库基础概念的文章就介绍到这了,更多相关MySQL关系型数据库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL 全文索引使用指南
May 25 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
浅谈MySQL 亿级数据分页的优化
Jun 15 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 MySQL
MySQL数据库⾼可⽤HA实现小结
Jan 22 MySQL
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
MySQL索引失效场景及解决方案
Jul 23 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 #MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 #MySQL
mysql连接查询中and与where的区别浅析
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 #MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
MySQL query_cache_type 参数与使用详解
Jul 01 #MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 #MySQL
You might like
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python单元测试简单示例
2018/07/03 Python
python实现事件驱动
2018/11/21 Python
python安装scipy的方法步骤
2019/06/26 Python
python实现图片中文字分割效果
2019/07/22 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python输出指定字符串的方法
2020/02/06 Python
html5唤起app的方法
2017/11/30 HTML / CSS
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
出纳担保书范文
2014/04/02 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
销售助理岗位职责
2015/02/11 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
python在package下继续嵌套一个package
2022/04/14 Python