SQL数据库学习总结(一)

SQL数据库学习总结(一)前序这是面向后端开发者的 SQL 数据库知识的一次总结 由于本人目前正在找工作 所以边学边做笔记 以便日后复习使用 SQL 数据库即结构化查询语言数据库 名字就说明了要学习的内容的两个特点 1 操作数据库的语言 2 语言的操作对象 在我个人看来了解语言的操作对象要必了解语言更加首 先 重 要 我对数据库的学习就是以数据库为核心 语言为辅助进行的 什么是结构化数据库

前序

构建关系数据库——范式的理解应用

关系数据库是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示(维基百科)。由定义可知关系模型是关系数据库的核心所在。所以要构建关系数据库首先先要了解关系模型的基本概念。这里借用刘慰老师在知乎上的讲解内容做一次笔记以便日后复习,刘慰老师原文内容严谨思路清晰大家可从中获取真知灼见。原著给您指路如何解释关系数据库的第一第二第三范式?。
设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为码。在实际中我们通常可以理解为:假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。一张表中可以有超过一个码。(实际应用中为了方便,通常选择其中的一个码作为主码)
主属性包含在任何一个码中的属性成为主属性。
非主属性不是主属性的即为非主属性
函数依赖我们可以这么理解(但并不是特别严格的定义):若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性 Y Y Y的值,那么就可以说 Y Y Y函数依赖于 X X X,写作 X → Y X → Y XY。也就是说,在数据表中,不存在任意两条记录,它们在 X X X属性(或属性组)上的值相同,而在 Y Y Y属性上的值不同。这也就是“函数依赖”名字的由来,类似于函数关系$ y = f(x) , 在 ,在 x 的 值 确 定 的 情 况 下 , 的值确定的情况下, y$的值一定是确定的。说白了就是函数关系。
完全函数依赖在一张表中,若 X → Y X → Y XY,且对于 X X X的任何一个真子集(假如属性组 X X X 包含超过一个属性的话), X ′ → Y X ‘ → Y XY 不成立,那么我们称 Y Y Y对于 X X X完全函数依赖,记作 X ⟶ F Y X\stackrel{F}{\longrightarrow}Y XFY。说白了就是函数关系的完全映射。即自变量必须在其完整集合中取值才能取遍因变量集合内所有值。
部分函数依赖假如 Y Y Y函数依赖于 X X X,但同时 Y Y Y并不完全函数依赖于 X X X,那么我们就称 Y Y Y部分函数依赖于 X X X,记作 X ⟶ P Y X\stackrel{P}{\longrightarrow}Y XPY即非完全映射关系。
传递函数依赖假如 Z Z Z函数依赖于 Y Y Y, Y r i g h t a r r o w Z Yrightarrow Z YrightarrowZ,且 Y Y Y函数依赖于 X X X, X → Y X\rightarrow Y XY(前提条件: Y Y Y不包含于 X X X,且 X X X不函数依赖于 Y Y Y),那么我们就称 Z Z Z传递函数依赖于 X X X,记作 X ⟶ T Y X\stackrel{T}{\longrightarrow}Y XTY。前提条件解析: Y ⊈ X Y\not\subseteq X YX Y ↛ X Y\not\rightarrow X YX






什么是范式

范式就是依据关系模型的不同类别将数据表的划分为若干等级。我就会3个范式。

第一范式(1NF)

第一范式只是为了确保我们要创建的东西确实是一张表。第一范式的定义为:符合1NF的关系中的每个属性都不可再分。即表中的属性必须为基本数据类型,不然就没有办法创建表了。举例表一就不符合1NF所以不能被创建,因为其中的属性“销售”和“购进”不是基本属性(不能用基本数据类型表示),将表一改为表2就可以被创建了。
表一:
表一,源于刘慰老师的知乎文章
表二:
源于刘慰老师的知乎文章



第二范式(2NF)

2NF的定义为在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的非主属性都完全函数依赖与码。

第三范式(3NF)

3NF的定义为在满足2NF的基础上,非主属性不存在传递函数依赖与码。

创建一张符合1NF、2NF、3NF的表的过程

对数据表的操作——sql语句的使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231042.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月1日 下午5:01
下一篇 2026年2月1日 下午5:22


相关推荐

  • Cursor宣布,学生免费!!!

    Cursor宣布,学生免费!!!

    2026年3月16日
    2
  • 苹果绿RGB值

    苹果绿RGB值ESL 的值为 85 123 205RGB 的值为 199 237 204ESL 和 RGB 只需填一个即可 另一个会自动调整 转载于 https www cnblogs com pandaly p 10337142 html

    2026年3月20日
    2
  • leetcode-33搜索旋转排序数组(二分)[通俗易懂]

    leetcode-33搜索旋转排序数组(二分)[通俗易懂]整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数 ta

    2022年8月8日
    10
  • DOMContentLoaded和window.onload

    DOMContentLoaded和window.onload

    2022年1月15日
    57
  • mysql h2_h2初始化数据库

    mysql h2_h2初始化数据库H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。一、引入Maven依赖在maven中定义H2数据库的版本属性1.3.172添加H2依赖com.h2databaseh2${h2.version}test二、运行方式1、在内存中…

    2022年10月10日
    6
  • C语言中getopt()函数的用法[通俗易懂]

    C语言中getopt()函数的用法[通俗易懂]1.getopt()函数getopt函数用来解析命令行选项,声明所在头文件为:#include<unistd.h>函数原型如下:intgetopt(intargc,char*constargv[],constchar*optstring);第一个参数argc是

    2022年5月3日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号