iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【MySQL】数据库基本知识小结
  • 418
分享到

【MySQL】数据库基本知识小结

数据库mysqljava范式ER图 2023-09-07 17:09:13 418人浏览 独家记忆
摘要

哈喽大家好,我是阿Q,今天我们来总结一下【Mysql】 入门的必备知识点吧~ 文章目录 数据库的基本概念什么是元组, 码, 候选码, 主码, 外码, 主属性, 非主属性?主键和外键有什么区别?

哈喽大家好,我是阿Q,今天我们来总结一下【Mysql入门的必备知识点吧~

文章目录

数据库的基本概念

  • 数据库:DataBase 简称 DB,就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。
  • 数据库管理系统:DataBase Management System 简称 DBMS,是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。
  • 数据库管理员:DataBase Administrator, 简称 DBA,负责全面管理和控制数据库系统。

什么是元组, 码, 候选码, 主码, 外码, 主属性, 非主属性?

  • 元组:元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。
  • 码:码就是能唯一标识实体的属性,对应表中的列;
  • 候选码: 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。我理解的是一个字段或者多个字段组成唯一索引。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。
  • 主码:主码也叫主键。主码是从候选码中选出来的。 一个实体集中只能有一个主码,但可以有多个候选码。
  • 外码:外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。
  • 主属性:候选码中出现过的属性称为主属性。比如关系 工人(工号,身份证号,姓名,性别,部门). 显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。
  • 非主属性:不包含在任何一个候选码中的属性称为非主属性。比如在关系——学生(学号,姓名,年龄,性别,班级)中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性。

主键和外键有什么区别?

  • 主键(主码) :主键用于唯一标识一个元组,不能有重复,不允许为空。一个表只能有一个主键。
  • 外键(外码) :外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键。

为什么不推荐使用外键与级联?

对于外键和级联,阿里巴巴开发手册这样说到:

【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
说明: 以学生和成绩的关系为例,学生表中的 student_id 是主键,那么成绩表中的 student_id 则为外键。如果更新学生表中的 student_id,同时触发成绩表中的 student_id 更新,即为级联更新。外键与级联更新适用于单机低并发,不适合分布式高并发集群; 级联更新是强阻塞,存在数据库更新风暴的风 险; 外键影响数据库的插入速度。

外键的缺点

  1. 增加了复杂性: a. 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦, 测试数据极为不方便; b. 外键的主从关系是定的,假如哪天需求有变化,数据库中的这个字段根本不需要和其他表有关联的话就会增加很多麻烦。
  2. 增加了额外工作:数据库需要增加维护外键的工作,比如当我们做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,保证数据的的一致性和正确性,这样会不得不消耗资源;(个人觉得这个不是不用外键的原因,因为即使你不使用外键,你在应用层面也还是要保证的。所以,我觉得这个影响可以忽略不计。)
  3. 对分库分表不友好 :因为分库分表下外键是无法生效的。

外键的优点

  1. 保证了数据库数据的一致性和完整性;
  2. 级联操作方便,减轻了程序代码量;

总结

如果不涉及到分库分表,并发量不是很高的可以考虑外键。

ER 图

E-R 图 也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 它是描述现实世界关系概念模型的有效方法,是表示概念关系模型的一种方式。

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

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

我们试着将上面的 ER 图转换成数据库实际的关系模型(实际设计中,我们通常会将任课教师也作为一个实体来处理)

在这里插入图片描述

数据库范式

1NF(第一范式)

属性(对应于表中的字段)不能再被分割,也就是这个字段只能是一个值,不能再分为多个其他的字段了。1NF 是所有关系型数据库的最基本要求 ,也就是说关系型数据库中创建的表一定满足第一范式。

2NF(第二范式)

2NF 在 1NF 的基础之上,消除了非主属性对于码的部分函数依赖

举例1:比如学生表中有学号、姓名、系名、课名、分数字段,其中(学号、课名)能唯一确定一条数据,所以(学号、课名)就被称为码,则学号、课名分别被称为主属性,其它的字段便为非主属性。此时(学号、课名)能确定唯一的学生姓名,但是学号也可以确定,这就是非主属性(姓名)对于码(学号、课名)的部分函数依赖。

举例2:比如学生表中有学号、姓名、系名、课名、分数字段,我们把它拆成学号、课名、分数表(表一)和学号、姓名、系名表(表二)。

  • 表一中(学号、课名)依然是码,此时(学号、课名)能确定唯一的分数,但是学号和课名不能单独确定,所以不存在非主属性分数对于码 (学号、课名)的部分函数依赖,所以此表符合2NF的要求。
  • 表二中学号是码,非主属性是姓名、系名,因为码只有一个属性,所以不可能存在非主属性对于码的部分函数依赖,也符合2NF的要求。

如下图所示,展示了第一范式到第二范式的过渡。第二范式在第一范式的基础上增加了一个列,这个列称为主键,非主属性都依赖于主键。

在这里插入图片描述

3NF(第三范式)

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

举例:比如学生表中有学号、姓名、系名、系主任字段,学号是码,非主属性是姓名、系名、系主任。其中系名依赖于学号,系主任依赖于系名,所以存在非主属性(系主任)对于码(学号)的传递依赖,所以该表不符合3NF的要求,可以将表拆为(学号,姓名,系名)和(系名、系主任)。

概念补充

  • 函数依赖(functional dependency) :若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值,那么就可以说 Y 函数依赖于 X,写作 X → Y。
  • 部分函数依赖(partial functional dependency) :如果 X→Y,并且存在 X 的一个真子集 X0,使得 X0→Y,则称 Y 对 X 部分函数依赖。见第二范式举例。
  • 完全函数依赖(Full functional dependency) :在一个关系中,若某个非主属性数据项依赖于全部关键字称之为完全函数依赖。
  • 传递函数依赖 : 在关系模式 R(U)中,设 X,Y,Z 是 U 的不同的属性子集,如果 X 确定 Y、Y 确定 Z,且有 X 不包含 Y,Y 不确定 X,(X∪Y)∩Z=空集合,则称 Z 传递函数依赖(transitive functional dependency) 于 X。见第三范式举例。传递函数依赖会导致数据冗余和异常。传递函数依赖的 Y 和 Z 子集往往同属于某一个事物,因此可将其合并放到一个表中。

存储过程

我们可以把存储过程看成是一些 sql 语句的集合,中间加了点逻辑控制语句。

存储过程在业务比较复杂的时候是非常实用的,比如很多时候我们完成一个操作可能需要写一大串 SQL 语句,这时候我们就可以写一个存储过程,这样也方便我们下一次的调用。

存储过程一旦调试完成通过后就能稳定运行,另外,使用存储过程比单纯 SQL 语句执行要快,因为存储过程是预编译过的。

存储过程在互联网公司应用不多,因为存储过程难以调试和扩展,而且没有移植性,还会消耗数据库资源。

阿里巴巴 Java 开发手册里要求禁止使用存储过程。

总结

  • 了解数据库的基本概念;
  • 区分基本的元组、码、候选码、主码、外码、主属性、非主属性的概念;
  • 注意外键的优缺点及具体使用场景;
  • 数据库范式不一定都需要满足,要具体场景具体处理;
  • 存储过程在生产中慎用;

来源地址:https://blog.csdn.net/Qingai521/article/details/131172929

您可能感兴趣的文档:

--结束END--

本文标题: 【MySQL】数据库基本知识小结

本文链接: https://www.lsjlt.com/news/398779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【MySQL】数据库基本知识小结
    哈喽大家好,我是阿Q,今天我们来总结一下【MySQL】 入门的必备知识点吧~ 文章目录 数据库的基本概念什么是元组, 码, 候选码, 主码, 外码, 主属性, 非主属性?主键和外键有什么区别为...
    99+
    2023-09-07
    数据库 mysql java 范式 ER图
  • MySql数据库基础知识点总结
    本文实例讲述了MySql数据库基础知识点。分享给大家供大家参考,具体如下: 数据库基本操作 1)创建数据库 基本语法: create database 数据库名称 ; 创建应该名称为itcas...
    99+
    2022-05-19
    MySql 数据库基础
  • 数据库基本知识
    一、创建和查看数据库 1.创建数据库 CREATE DATABASE [IF NOT EXISTS]#可选内容 db_name [create_specification]#如下定义:[DEFAUL...
    99+
    2022-10-18
  • mysql数据库的一些基本知识
    下文主要给大家带来mysql数据库的一些基本知识,希望这些内容能够带给大家实际用处,这也是我编辑mysql数据库的一些基本知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。MySQL数据库&nbs...
    99+
    2022-10-18
  • 掌握MySQL数据库的基本知识
    本篇文章给大家主要讲的是关于MySQL数据库的基本知识的内容,感兴趣的话就一起来看看这篇文章吧,相信看完MySQL数据库的基本知识对大家多少有点参考价值吧。一、数据的存储方式人工管理阶段:人工将信息写到甲骨...
    99+
    2022-10-18
  • 【MySQL】数据库基础知识
    文章目录 一. 什么是数据库二. 为什么要有数据库三. 数据库分类四. 数据库的基本使用1. MySQL安装2. 检查MySQL后端服务器是否启动3. 连接MySQL服务器4. 服务器,数据库...
    99+
    2023-09-03
    数据库 mysql
  • MySQL数据库基础知识
    day02 MySQL数据库基础知识一、基础知识概述:    基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如。才能够对数据库有更深入的...
    99+
    2022-10-18
  • MySQL数据库备份的基础知识总结
    本篇内容介绍了“MySQL数据库备份的基础知识总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、数据备...
    99+
    2022-10-18
  • MySQL数据库灾备的基础知识总结
    这篇文章主要讲解了“MySQL数据库灾备的基础知识总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库灾备的基础知识总结”吧!一、数据备份捷径因为这个方法没有得到官方正式文档的...
    99+
    2023-06-17
  • JavaWeb Mysql数据库基础知识
    1、常用命令 1.1安装数据库  以mysql56为例,存放在d盘,打开cmd,依次输入如下命令:(1)d:(2)cd mysql56(3)cd bin(4)mysqld -install即可安装。1.2启...
    99+
    2022-10-18
  • MySQL 数据库的基础知识
    目录1. 认识数据库1.1 数据库和数据结构的关系1.2 为什么需要数据库1.3 数据库的存储2. SQL2.1 介绍2.2 分类3. 数据库的类别3.1 关系型数据库3.2 非关系...
    99+
    2022-11-12
  • 数据库基本知识点总结(一)[云图智联]
    第一节       一、相关概念        1. Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。        2. Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。       ...
    99+
    2021-01-12
    数据库基本知识点总结(一)[云图智联]
  • 数据库基本知识点总结(二)[云图智联]
           18. 数据库设计必须遵循结构设计和行为设计相结合的原则。        19. 数据字典主要包括数据项、数据结构、数据流、数据存储和处理过程五个部分。        20. 三种常用抽象方法是分类、聚集和概括。     ...
    99+
    2014-08-04
    数据库基本知识点总结(二)[云图智联]
  • Mysql数据库之sql基本语句小结
    本文实例讲述了Mysql数据库之sql基本语句。分享给大家供大家参考,具体如下: SQL基本语句 1.登录退出及快捷键: (1)快捷键: ————快速回到行首 ctrl + a ————回到行末 ctr...
    99+
    2022-10-18
  • 数据库原理基本知识点
    这篇文章主要介绍了数据库原理基本知识点,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。数据库原理基本知识点有:1、数据库系统的两级映射以及物理、逻...
    99+
    2022-10-18
  • PHP数据库连接的基本知识
    PHP是一种流行的服务器端语言,用于创建动态Web应用程序。在创建这些应用程序时,经常需要连接到数据库,以从数据库中读取数据,修改数据或将新数据插入到数据库中。本文将介绍PHP数据库连接的基本知识。一、选择数据库类型在连接PHP与数据库时,...
    99+
    2023-05-15
    PHP 数据库连接 基本知识
  • 汇总MySql数据库基础知识点
    这篇文章主要为大家汇总MySql数据库基础知识点,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。本文实例讲述了MySql数据库基础知识点。分享给大家供大家参考,...
    99+
    2022-10-18
  • 数据库基础知识
    1.数据库的概念数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。2.数据库的作用3.数据层次模型4.常见关系型数据库5.SQL结构化查询语言本章没有讲NoSQL...
    99+
    2022-10-18
  • 数据库的基本知识都有什么
    本篇文章给大家分享的是有关数据库的基本知识都有什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。数据库每个表都应有一个主键  数据库介绍主键每...
    99+
    2022-10-19
  • MySQL数据库基础知识点有哪些
    这篇文章主要介绍“MySQL数据库基础知识点有哪些”,在日常操作中,相信很多人在MySQL数据库基础知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作