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 相关文章推荐
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
MYSQL数据库使用UTF-8中文编码乱码的解决办法
May 26 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
MySQL GRANT用户授权的实现
Jun 18 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
千万级用户系统SQL调优实战分享
Mar 03 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 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
PHP HTML代码串 截取实现代码
2009/06/29 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
javascript 播放器 控制
2007/01/22 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
整理Python中的赋值运算符
2015/05/13 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
停电通知范文
2015/04/16 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
nginx常用配置conf的示例代码详解
2022/03/21 Servers