2023年11月4日

Database: 候选码、主码、全码、外码、主属性、主键、主关键字、非主属性 清晰总结

一、讲解 首先说明 键字=码字,所以 主键=主码=主关键字,候选键=候选码=候选关键字... 所谓关系键,指的是一个表中的一个(或一组)属性,用来标识该表的每一行或与另一个表产生联系。 话不多说,上图:   相信这个图已经画得很清晰了,下面逐一解释: 1、码=超键:能够唯一标识一条记录的属性或属性集。 标识性:一个数据表的所有记录都具有不同的超键 非空性:不能为空 有些时候也把码称作“键” 2、候选键=候选码:能够唯一标识一条记录的最小属性集 标识性:一个数据表的所有记录都具有不同的候选键 最小性:任一候选键的任何真子集都不能唯一标识一个记录(比如在成绩表中(学号,课程号)是一个候选键,单独的学号,课程号都不能决定一条记录) 非空性:不能为空 候选键是没有多余属性的超键 举例:学生ID是候选码,那么含有候选码的都是码。 少部分地方也有叫超级…
2023年11月4日

Database: 关系型数据库范式

目录 一、基本概念 二、第一范式      1、概述      2、实例分析      3、不足 三、第二范式      1、概述      2、相关概念      3、实例分析 三、第三范式      1、概述      2、实例分析 四、其它范式(待补充细化) 五、总结 设计关系数据库时,为了设计出合理的数据库表结构,需要遵从不同的规范要求,这些规范性要求被称为范式。 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 各种范式呈递次规范,越高的范式数据库冗余越小。满足高层次范式的必定满足低层次范式,如一个数据库设计如果符合第二范式,一定也符合第一范式。 一、基本概念      1、实体:现实世界中客观存在的并…
2023年11月3日

Database: 关系型数据库设计的6种范式

目录 关系型数据库的规范化理论 数据依赖 函数依赖 平凡函数依赖与非平凡函数依赖 完全函数依赖与部分函数依赖 传递函数依赖 码&主码、主属性&非主属性 码&主码 外码(外键) 主属性&非主属性 范式 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 关系模式规范化 概念 遵循原则 关系模式的分解 无损连接 保持函数依赖 关系型数据库的规范化理论 规范化理论用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。 数据依赖 通过一个关系中属性间值的相等与否体现出来的数据键的相互关系 现实世界属性间相互联系的抽象 数据的内在的性质 语义的体现 函数依赖 关系的X属性集上的值,可以唯一决定R的Y属性集上的值 对于R的任意两个…
2023年11月3日

Database: 数据库的存储结构

数据库的存储结构是怎样的? 记录是按照行存储的,但是数据库的读取不是以行为单位,否则一次读取只能处理一行,效率很低。因此数据库,无论是读一行,还是读取多行,都是将这些行所在的页进行加载。数据管理存储空间的基本单位是页(Page) 快速回顾一遍数据库存储结构:一页可以存储多个行记录(Row) ,先是表空间(Tablespace),表空间包含段(segement),还存在区(Extent),其关系如下图所示: 段(Segment)段里面有多个区,区在文件系统是一个连续的分片空间,不过在段中不要求区与区之间是分配单位,不同类型的数据库对象以不同的段形式存在。 当我们创建数据表,索引的时候,就会创建对应的段,比如建表的时候,会自动创建表段,创建表索引的时候,会创建一个索引段。 区(Extent) 是一个比页高一个级别的存储结构,一个…
2023年11月3日

Database: 常用数据库术语表 Glossary of common database terminology

Glossary of common database terminology 常用数据库术语表 Introduction 介绍 本文中文由机器翻译,未经校对,仅供参考。原文链接:https://www.prisma.io/dataguide/intro/database-glossary When dealing with databases, there is a lot of terminology that you must learn in order to understand the technology, how best to use it, and how it relates to other parts of your environment. This glossary aims to collect common terminology used in the database commun…
2023年11月3日

Database: 数据库名词解释

另可参考:https://blog.norria.com/14051.html DB(Data Base,数据库): 是统一管理的相关数据的集合。DB能为各种用户共享,具有最小的冗余度,数据既联系密切,而又有较高的数据独立性。 DBMS(Database Management System,数据库管理系统): 是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面向对象型DBMS。 RDB(Relational Database,关系数据库): 是基于关系模型的数据库,关系数据库是数据和数据库对象的集合。有数据表和数据表之间的关联组成,数据表通常由行和列组成的二维表,每个数据表分别说明数据库中某一特定…
2023年10月25日

Database: 数据库DML、DDL和DCL的概念

一、DML DML(data manipulation language)数据操纵语言: 我们经常会用到的 INSERT、DELETE、UPDATE、SELECT语句。 主要用来对数据库的数据进行一些操作。 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) DELETE FROM 表名称 WHERE 列名称 = 值 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 SELECT 列名称 FROM 表名称 二、DDL DDL(data definition language)数据库定义语言,如: CREATE:创建 ALTER:修改表结构 RENAME:修改表名或列名 DROP:删除表中的数据和结构,删除后不能回滚 TRUNCATE:删除表中的数据不删除表结构,删除后不能回滚,效率比DELETE高 其实就是我们…
2023年10月18日

Database: ERD实体关系图 / ER图

开始之前,如果对ER实体关系的基本概念还不太清楚的,可先参照这篇文章: https://www.iteye.com/blog/josh-persistence-2518063 数据库是软件系统中不可或缺的一个组成部分,若能在数据库工程中好好利用 ER 图,便能让您生成高质量的数据库设计,用于数据库创建,管理和维护,也为人员间的交流提供了有意义的基础。 今天,我们将为你深入介绍 ER 图表。通过阅读本ERD指南,您将获得有关 ER 图和数据库设计的基本知识和技能。你会学到什么是 ERD,为什么要绘制 ERD,ERD 符号,如何绘制 ERD 等,以及一堆 ERD 示例。 什么是实体关系图(ERD)? 首先,什么是实体关系图? 实体关系图也被称为 ERD、ER 图、实体联系模型、实体联系模式图或 ER 模型,是一种用于数据库设计的结构图。一幅 ERD 包含不同的符号…
2023年10月11日

Database: SQL语句的执行顺序及解释

1. 通用SQL语句的执行顺序: (8) SELECT (9)DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) WITH {CUBE|ROLLUP} (7) HAVING <having_condition> (10) ORDER BY <order_by_list> (11) LIMIT <limit_number> 2. 重新排序后的通用SQL语句的执行顺序: (1) FROM <lef…
2023年10月10日

Database: PostgreSQL 和 MySQL 之间的一些区别 注释 引号 大小写 逻辑运算符

PostgreSQL 和 MySQL 之间的一些区别 参考:从 MySQL 迁移到 PostgreSQL 时需要了解的事项 https://wiki.postgresql.org/...from_MySQL_to_PostgreSQL 总的来说,PostgreSQL 付出了很大的努力来符合现有的数据库标准,而 MySQL 在这方面有着复杂的背景。如果您以前使用过 MySQL 或 Microsoft Access,那么某些更改可能看起来很奇怪(例如不使用双引号来引用字符串值)。 MySQL 使用非标准的“#”来开始注释行;PostgreSQL 没有。相反,请使用“--”(双破折号),因为这是 ANSI 标准,并且两个数据库都理解它。 MySQL 使用 ' 或 " 来引用值(即 WHERE name = "John")。这不是数据库的 ANSI 标准。PostgreSQL 为此仅使用…