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 常见存储引擎的优劣
Jun 02 MySQL
MySQL 不等于的三种使用及区别
Jun 03 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
mysql序号rownum行号实现方式
Dec 24 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
3种平台下安装php4经验点滴
2006/10/09 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
简单谈谈favicon
2015/06/10 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python 加密的实例详解
2017/10/09 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
python 制作本地应用搜索工具
2021/02/27 Python
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
大学生入党推荐书范文
2014/05/17 职场文书
大学新闻系求职信
2014/06/03 职场文书
2014年创卫工作总结
2014/11/24 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android