首页 > 数据库 >MySQL【一】

MySQL【一】

时间:2024-10-08 20:47:37浏览次数:3  
标签:关系 非主 范式 数据库 MySQL 属性

数据库基础知识

基础概念介绍

数据库:

数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。 


数据库管理系统:

 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。 常见的数据库系统包括 MySQL、PostgreSQL、Oracle、SQL Server 等


数据库系统:

数据库系统(Data Base System,简称 DBS)通常由软件、数据库和数据管理员(DBA)组成。 


数据库管理员:

数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统。 


元组:

元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。 


码:

码就是能唯一标识实体的属性,对应表中的列,即属性列


候选码:

若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。


主码:

主码也叫主键。主码是从候选码中选出来的。 一个实体集中只能有一个主码,但可以有多个候选码。 


外码:

外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。 


主属性:

候选码中出现过的属性称为主属性。比如关系 工人(工号,身份证号,姓名,性别,部门). 显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。


非主属性:

不包含在任何一个候选码中的属性称为非主属性。比如在关系——学生(学号,姓名,年龄,性别,班级)中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性。

图中上下两种划分方式并不是对立的,只是为了帮助大家划分概念这么画的,毕竟主属性的定义是候选码中出现过的属性称为主属性 ,说明他们是不存在概念上的绝对切割的。


ER图:

全称是 Entity Relationship Diagram(实体联系图),提供了表示实体类型、属性和联系的方法
由以下三个要素组成:

  • 实体:通常是现实世界的业务对象,使用逻辑对象也可以。比如一个校园管理系统,会涉及学生,教师,班级,课程等实体。在ER图中用矩形框表示
  • 属性:即某个实体拥有的属性,属性用来描述组成实体的要素,对于产品设计来说可以理解为字段。在 ER 图中,属性使用椭圆形表示。
  • 联系:即实体与实体之间的关系,在 ER 图中用菱形表示,这个关系不仅有业务关联关系,还能通过数字表示实体之间的数量对照关系。例如,一个班级会有多个学生就是一种实体间的联系。

下图是一个学生选课的 ER 图,每个学生可以选若干门课程,同一门课程也可以被若干人选择,所以它们之间的关系是多对多(M: N)。另外,还有其他两种实体之间的关系是:1 对 1(1:1)、1 对多(1: N)。

 学生与课程之间联系的E-R图

数据库范式

数据库范式有三种:

  • 1NF(第一范式):属性不可再分。
  • 2NF(第二范式):在1NF 的基础之上,消除了非主属性对于码的部分函数依赖。
  • 3NF(第三范式):3NF 在 2NF 的基础之上,消除了非主属性对于码的传递函数依赖

三大范式是用于设计数据库表结构的规范,旨在减少数据冗余、避免异常并保证数据的一致性。随着范式级别的提高,数据结构会更加规范和优化。主要针对的是关系型数据库

1NF(第一范式):

属性,即表中字段,必须是不可再分割的原子值,也就是说这个字段只能是一个值,不能包含数组、集合或复合数据类型。1NF是所有关系型数据库的基本要求,也就是说关系型数据库创建的表一定满足第一范式。

2NF(第二范式):

2NF 在 1NF 的基础之上,消除了非主属性对于码的部分函数依赖。第二范式在第一范式的基础上增加了一个列,这个列称为主键,非主属性都依赖于主键。

商品名称供应商名称价格重量供应商电话有效期分类
可乐饮料一厂3.00250g888888882024.11.1饮料
可乐饮料二厂3.00250g333344442024.12.1饮料

 现在这个表中就存在部分函数依赖,你能看出来吗?
答案是:供应商电话部分依赖于(商品名称,供应商名称),原因在于供应商名称本身就可以确定供应商电话,不需要组合属性,该表不符合2NF

商品ID名称价格重量有效期分类
1可乐3.00250g2024.11.1饮料
2可乐3.00250g2024.12.1饮料
供应商ID供应商名称供应商电话
1饮料一厂88888888
2饮料二厂33334444
记录ID商品ID供应商ID
111
222

修改为这样就符合2NF了。

 一些重要概念(只举例子,详细定义请自己了解):

  • 函数依赖:若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值,那么就可以说 Y 函数依赖于 X,写作 X → Y。
  • 部分函数依赖:部分函数依赖是指一个非主属性仅依赖于组合属性的一部分,而不是依赖整个组合属性。如果通过组合属性的某个部分(而不是整个组合)就可以唯一地确定那个非主属性,那么这个属性就是部分依赖于组合属性的这一部分。例如学生基本信息表 R 中(学号,身份证号,姓名)当然学号属性取值是唯一的,在 R 关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖于(学号,身份证号)。
  • 完全函数依赖:在一个关系中,若某个非主属性数据项依赖于全部关键字称之为完全函数依赖。比如学生基本信息表 R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在 R 关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级)
  • 传递函数依赖:传递函数依赖会导致数据冗余和异常,比如在关系 R(学号 , 姓名, 系名,系主任)中,学号 → 系名,系名 → 系主任,所以存在非主属性系主任对于学号的传递函数依赖,可以将 系名,系主任 放在同一个表中,然后就变成了R1(学号,姓名,系名),R2(系名,系主任)

3NF(第三范式):

3NF 在 2NF 的基础之上,消除了非主属性对于码的传递函数依赖,符合 3NF 要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。

什么是存储过程

是数据库中一组预先编写并存储的SQL语句的集合,可以在数据库服务器端执行。简单来说,存储过程就是一系列SQL语句的集合,中间加了一些逻辑控制语句,是开发人员提前准备好的,用于处理复杂业务时直接调用的,以提高数据库操作的效率和可维护性。

有点类似于编程语言中的函数,可以接收输入参数、执行操作,并返回结果。存储过程一旦调试完成通过后就能稳定运行,另外,使用存储过程比单纯 SQL 语句执行要,因为存储过程是预编译过的。

但是也有缺点,缺点在于存储过程难以调试和扩展,而且没有移植性,还会消耗数据库资源。

数据库设计步骤

  1. 需求分析:分析用户的需求,包括数据、功能和性能需求。
  2. 概念结构设计:主要采用 E-R 模型进行设计,包括画 E-R 图。
  3. 逻辑结构设计:通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。
  4. 物理结构设计:主要是为所设计的数据库选择合适的存储结构和存取路径。
  5. 数据库实施:包括编程、测试和试运行
  6. 数据库的运行与维护:系统的运行与数据库的日常维护。

MySQL基础

什么是关系型数据库

顾名思义,关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。

关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。

关系型数据库表关系

大部分关系型数据库都使用 SQL 来操作数据库中的数据。并且,大部分关系型数据库都支持事务的四大特性(ACID)。

常见的关系型数据库有:MySQL、PostgreSQL、Oracle、SQL Server等

什么是SQL

SQL 是一种结构化查询语言(Structured Query Language),专门用来与数据库打交道,目的是提供一种从数据库中读写数据的简单有效的方法。

几乎所有的主流关系数据库都支持 SQL ,适用性非常强。并且,一些非关系型数据库也兼容 SQL 或者使用的是类似于 SQL 的查询语言。

什么是MySQL

MySQL 是一种关系型数据库,主要用于持久化存储我们的系统中的一些数据比如用户信息。

由于 MySQL 是开源免费并且比较成熟的数据库,因此,MySQL 被大量使用在各种系统中。任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL 的默认端口号是3306

MySQL的优点

MySQL 主要具有下面这些优点:

  • 成熟稳定,功能完善。
  • 开源免费。
  • 文档丰富,既有详细的官方文档,又有非常多优质文章可供参考学习。
  • 开箱即用,操作简单,维护成本低。
  • 兼容性好,支持常见的操作系统,支持多种开发语言。
  • 社区活跃,生态完善。
  • 事务支持优秀, InnoDB 存储引擎默认使用 REPEATABLE-READ 并不会有任何性能损失,并且,InnoDB 实现的 REPEATABLE-READ 隔离级别其实是可以解决幻读问题发生的。
  • 支持分库分表、读写分离、高可用。

 总结:

本期博客介绍了很多基础知识,并没有深入介绍MySQL这个开源的关系型数据库,下期再深入介绍,关于这些基础知识,当提及时大家知道是什么东西,怎么回事就行了,不必一字不差的记住,好了,我们下期再见。

标签:关系,非主,范式,数据库,MySQL,属性
From: https://blog.csdn.net/qq_65754164/article/details/142643573

相关文章

  • 通过sysbench工具实现MySQL数据库的性能测试
    1.背景 sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。sysbench支持的测试有CPU运算性能测试、内存分配及传输速度测试、磁盘IO性能测试、POSIX线程性能测试、互斥性测试测试、数据库性能测试(OLTP基准测试)。目前支持的数据库主要是My......
  • 【MYSQL】MYSQL约束-----非空约束(not null)和唯一约束(unique)
    1、概念MYSQL非空约束(notnull),指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库就会报错。注意:非空约束一张表中可以有多个。2、语法方式1:在创建表时指定(常用)<字段名><数据类型>not null例如:create table  t_user(i......
  • 免费送源码:Java+spring boot+MySQL springboot社区快递代取服务系统 计算机毕业设计原
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对社区快递代取服务系统等问题,对社区快递代取服务系统进行研究分析,然后开发设计出社区快递代......
  • MySQL慢查询优化&缩容实践
    索引调整在一个数据量较大的订单表中,发现某些查询因为缺少合适的索引而变慢。添加了必要的索引后,查询效率明显提升。查询条件调整在一个sql中需要根据时间条件查询,但是等号左边的字段使用了函数操作(将时间戳转换成了年月日),导致索引失效进行了全表扫描。解决:将等号右边的条件反......
  • MySQL的基本语法(增,删,改,查)
    MySQL的基本语法(增,删,改,查)MySQL中的(增)操作创建数据库CREATEDATABASE库名;例如:CREATEDATABASEdb;创建一个名为db的数据库。创建列表use数据库名;CREATETABLE表名(字段名1数据类型1,字段名2数据类型2);例如:usedb;CREATETABLEplayers(uidBI......
  • Prometheus + Grafana 监控 MySQL 数据库
    文章目录1、前置介绍2、搭建流程2.1、安装Docker2.2、安装MySQL2.3、安装MySQLExporter2.4、安装Prometheus2.5、安装Grafana1、前置介绍本次监控平台搭建,我使用2台阿里云服务器来完成本次的搭建部署操作,配置如下:阿里云ECS1:2核2G,Ubuntu22.02,内网ip:172.16.0......
  • MySQL数据库备份与恢复
    MySQL数据库的备份与恢复是数据库管理中至关重要的一部分。无论是在Windows还是Linux系统上,掌握这些技能都能有效保护数据,防止数据丢失。本文将详细介绍MySQL数据库的备份与恢复方法,包括常用工具和步骤。一、备份MySQL数据库1.使用 mysqldump 工具mysqldump是......
  • linux中mysql5.7安装
    系统要求:CentOS7.664位卸载系统自带mariadb-lib1、rpm-qa|grepmariadb2、rpm-emariadb-libs-5.5.68-1.el7.x86_64 --nodeps 解压tar包:tar-xvfmysql*.tar以下加粗rpm包需要安装:mysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-libs-co......
  • MySQL与RESTfulAPI
    MySQL与RESTfulAPI 2024-01-2566阅读7分钟 1.背景介绍MySQL与RESTfulAPI是一个非常重要的技术主题,它们在现代互联网应用中扮演着关键角色。在这篇文章中,我们将深入探讨这两个技术的核心概念、算法原理、最佳实践以及实际应用场景。1.背景介绍MySQL是一种流行的关......
  • Mysql高级篇(下)——主从复制
    主从复制一、概述二、作用......