MYSQL基本介绍和范式介绍

MYSQL基本介绍和范式介绍

MYSQL基本介绍:
MYSQL属于数据库的一种
数据库:是一个存储数据的仓库,将数据按特定的规律存储在磁盘上,把数据有组织的、可共享的长期存储在计算机内
数据库分为关系型数据库和非关系型数据库:

  • 关系型数据库:数据与数据之间有关系(属性与属性值之间的关系、表与表之间的关系)
  • 非关系型数据库:数据与数据之间没有联系(不用表存储)

MYSQL是关系型数据库,关系型数据库还有微软的SQL server
非关系型数据库典型的是redis,我的博客非关系型数据库redis介绍及与MySQL区别中有介绍。
MySQL和其它关系型数据库有一个非常大的区别,就是支持可更换的插件式的存储引擎,其中InnoDB引擎非常强大

MYSQL是一种C/S模型(客户端/服务器),客户端通过账号和密码连接服务器,连接成功后才可以进行数据库操作(增删改查 CRUD)
MYSQL的服务端采用IO复用和可伸缩的线程池,实现了网络高并发的经典模型

MYSQL中SQL语句的类别划分:

  • DDL(Data Definition Language):数据库定义语言
    定义不同数据库、表、列、索引等数据库对象的语言
    常用的SQL:create(创建)、drop(删除)、alter(更改)
  • DML(Data Manipulation Language):数据操控语言
    用于添加、删除、变更、查询数据库中的记录(表中的一行)的语言
    常用的SQL:insert(添加)、delete(删除)、update(更新)、select(查询)
  • DCL(Data Control Language):数据控制语言
    控制不同数据库段直接访问和访问级别的语言
    常用SQL:grant、remove
举例:
创建一个用户表(姓名、性别)--->DDL
添加一个用户1(王五、男)--->DML

数据库相关术语

 实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,比如“老师与学校的关系”。
 属性:书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
 元组:表中的一行就是一个元组/记录。
 分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,分量是“不可分的”。否则就不是关系数据库了。
 码(键):表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
 全码:如果一个码包含了所有的属性,这个码就是全码。
 主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
 非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
 外码:一个属性(或属性组),它不是码,但它是别的表的码,它就是外码。

数据库范式
作用:进行数据库设计时字段、库表划分的依据

  1. 第一范式(1NF):每一列保持原子特征,列是基本数据项,不能再进行拆分,如果能拆分就不符合1NF,要设计成一对多的关系
    不满足1NF不能称之为关系型数据库
例:用户表(姓名、性别、地址)
 地址:陕西省西安市雁塔区,可拆分为省市区,所以上表不满足1NF
 该表可拆分为满足1NF的两个表:
 用户表(姓名、性别、地址ID)
 地址表(地址ID、省、市、区)

2.第二范式(2NF):1NF基础上,属性完全依赖于主键,如果不完全依赖主键,应该拆分成新的主体,拆分成一对多(一表变多表)的关系。针对联合主键,消除部份依赖

例:
用户购物表(用户ID、用户姓名、购买商品名称、购买数量)
主键(用户ID、商品名称)
用户姓名依赖用户ID--->部份依赖(不符合2NF)
购买数量依赖用户ID和商品名称--->完全依赖
 该表可拆分为满足2NF的两个表:
用户表(用户ID、用户姓名、商品ID) 主键:用户ID
用户购物表(用户ID、商品ID、购买商品名称、购买数量)主键:用户ID、商品ID
  • 第三范式(3NF):1NF、2NF基础上,属性不依赖于其他非主属性消除依赖传递
例:
用户表(用户ID、姓名、性别、工作单位、单位电话)  主键:用户ID
用户姓名依赖于用户ID
用户性别依赖于用户ID
用户工作单位依赖于用户ID
单位电话:先通过用户ID查工作单位,再根据工作单位查单位电话,单位电话依赖工作单位,而工作单位又依赖用户ID,工作单位不是主键,单位电话依赖非主属性,不满足3NF
 该表可拆分为满足3NF的两个表:
 用户表(用户ID、姓名、性别、工作单位ID)主键:用户ID
 单位表(工作单位ID、工作单位、单位电话)主键:工作单位ID

BCNF、4NF、5NF等级越来越高,要求越来越高,这里不再介绍
第三范式已经很大程度上减少了数据冗余,并且基本预防了数据插入异常,更新异常,和删除异常了,所以通常用到到3NF
应用范式越高,表越多,多表带来的问题:
(单表查询效率高于多表联合查询)

  • 查询时需要连接多个表,增加了查询的复杂性
  • 查询时需要连接多个表,降低了数据库查询的性能

应用范式的好处:
1)减少数据冗余(最主要的好处、其他好处因此而附带)
2)消除异常(插入异常、更新异常、删除异常)
3)让数据组织的更加和谐。

发布了19 篇原创文章 · 获赞 9 · 访问量 2218

猜你喜欢

转载自blog.csdn.net/weixin_44480874/article/details/99652412