基本概念
数据库基础
什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库(想象为一个文件柜🗄️)。数据库保存有组织的数据的容器(通常是一个文件或一组文件),数据库是通过 DBMS(数据库管理系统)数据库软件创建和操纵的容器。直接访问文件的读写速度很慢,因此我们通常不直接访问数据库,而是使用 DBMS,替我们访问数据库。
表
表是某种特定类型数据的结构化清单。
将资料放入自己的文件柜时,先在文件柜创建文件,然后将相关的资料放入特定的文件中。在数据库领域中,这种文件成为表。表是一种结构化的文件,可用来存储某种特定类型的数据,如顾客清单、产品目录等。
注意的是,**存储在表中的数据是一种类型的数据是一种类型的数据或一个清单。**例如,不应该把顾客的清单与订单的清单存储在同一个数据表中(后端接口的提供,通常也是基于数据库表的组织来订,如根据顾客id 获取订单列表)。数据库中的每个表都有一个名字,用来表识自己。此名字是唯一的,这表示数据库中没有其他表具有相同的名字。
模式(schema)
模式是关于数据库和表的布局及特性的信息。
表具有一些特性,这些特性定义了数据在表中如何存储,如可以存储什么样的数据,数据如何分解,各部分信息如何命名等,描述表的这组信息就是所谓的模式。
列和数据类型
列(column),表中的一个字段。所有表都是由一个或多个列组成的。
表由列组成,列中存储着表中某部分的信息。我们可以将数据库表想象为一个网格,网格中每一列存储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,一个列存储着顾客名。
要学会分解数据,正确地将数九分解为多个列极为重要。例如,城市、州、邮政编码应该总是独立的列,好处是可以更加方便地对特定的列进行数据的排序和过滤。
数据类型
数据类型(datatype)所容许的数据的类型,每个表列都有相应的数据类型,它限制(或容许)该该列中存储的数据(防止出现在数值字段录入字符值)。
行
表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如,顾客表中可以每行存储一个顾客,表中的行数为记录的总数。
主键
主键(primary key)一列(或一组列),其值能够唯一区分表中每个行。
表中每一行都应该有可以唯一表识自己的一列(或一组列),这个称为主键。例如,一个顾客表可以使用顾客编号列,而订单表可以使用订单 ID。
没有主键,更新或删除表中特定的行很困难,因为没有安全的方法保证只涉及相关的行。因此,我们应该总是定义主键,每个表具有一个主键。主键通常定义再表的一列上,但这并不是必需的,也可以一起使用多个列作为主键,但是必须保证所有列值的组合是唯一的。
一些约定好习惯
- 不更新主键列中的值;
- 不重用主键列的值;
- 不在主键列中使用可能会更改的值。(例如,使用一个名字作为主键以标识用户。)
什么是 SQL
SQL 是结构化查询语言(Structured Query Language)的缩写。SQL 是一种专门用来与数据库通信的语言。
RDBMS
现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成 database。
- 数据库:数据库是一些关联表的集合。
- 数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列:一列(数据元素)包含了相同类型的数据,例如邮政编码的数据。
- 行:一行(=元组或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一个用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一个结构。类似书籍的目录。
- 参照完整性:参照的完整性要求关系中不允许引用不存在的实体。实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。 MySQL 为关系型数据库,这种所谓的“关系型”可以理解为“表格”的概念,一个关系型数据库由一个或数个表格组成,如图所示的一个表格:
- 表头:每一列的名称;
- 列(col):具有相同数据类型的数据的集合;
- 行(row):每一行用来描述某条记录的具体信息;
- 值(value):行的具体信息,每个值必须与该列的数据类型相同;
- 键(key):键的值在当前列中具有唯一性。
数据字典功能
什么是数据字典
数据字典存储有关数据的来源、说明、与其他数据的关系、用途和格式等信息,它本身就 是一个数据库,存储“关于数据项的数据”。数据字典是个指南,它为数据库提供了“路线图”, 而不是“原始数据”。
建立数据字典的目的
- 提高开发效率,降低研制成本。数据字典是数据库开发者、数据监管人和用户之间的共同 约定,是系统说明书的一个重要组成部分。一个统一的数据字典有助于开发者建立数据模型 以及程序和数据库之间的数据转换接口,为规范化设计和实施数据管理系统铺平了道路。
- 促进数据共享,提高数据的使用效率。通过数据字典,用户可以方便地知道每项数据的意 义,了解数据的来源和使用方法,从而帮助用户迅速地找到所需的信息,并按照正确的方法 使用数据。
- 控制数据的使用。在某些特定的场合,可以通过对数据字典的控制达到控制数据使用的目的。
一个完整的数据字典至少应当包括以下内容:
数据集(系统)名称 数据集(系统)的正式名称
数据库名称 数据库文件的名称
数据名称 数据项的名称
数据存储名称 数据字段的名称
数据类型 数据的类型,如数字类型等
数据说明 关于数据含义的说明
数据存储长度 在计算机中数据存储的空间,用字节(BYTE)表示
单位 数据的测量单位
代码说明 使用的代码体系及编码规则
精密度 有效数字最低位数的位置
准确度 有效数字位数
数据的下限 数据合理的下限
数据的上限 数据合理的上限
获得数据的手段 数据测量的方法或引用的来源
时间和/或环境 获得数据的时间和/或环境
数据的例子 一个数据的实例
数据字典功能 -- 数据字典详细应用
实战
- Mongodb分片集群搭建 -- 理论实践结合。
- mongodb的安全使用(如果把它当做成rdbms使用会有什么问题)
MySQL →