软件测试|RDBMS是什么意思,你搞懂了吗?

简介: 软件测试|RDBMS是什么意思,你搞懂了吗?

前言

上一篇文章我们介绍了什么是SQL,还有部分相关概念,本文我们来介绍关系型数据库管理系统(RDBMS)。

RDBMS 是 Relational Database Management System 的缩写,它是 SQL 语言以及所有现代数据库系统(例如 SQL Server、DB2、Oracle、MySQL 和 Microsoft Access)的基础。

比如我们每个人在大学入学时都会有一个自己的学号,学号对应着我们的学院、专业、姓名等信息,后续我们只需要通过学号就可以查询到这个学生的相关信息。我们也可以通过专业名称查询到这个专业的学生,这些都是依靠这数据之间的关系来实现的。

表(table)

在关系型数据库中,数据被存储在一种称为表(Table)的数据库对象中,它和 Excel 表格类似,都由许多行(Row)和列(Column)构成。每一行都是一条数据,每一列都是数据的一个属性,整个表就是若干条相关数据的集合。

表是关系型数据库中最常见、最简单的数据存储形式。

示例如下,名为“provice”的信息表:

+----+-----+--------+-----+-------+---------+
| 编码 | 名称| 简称| 地区 | 类别 | 省会 |
+----+--------+--------+-----+--------------+
|  11 | 北京 | 京 | 华北 |直辖市| 不适用 |
|  21 | 辽宁 | 辽 | 东北 |  省 |  沈阳 |
|  31 | 上海 | 沪 | 华东 |直辖市| 不适用 |
|  36 | 江西 | 赣 | 华东 |  省 |  南昌 |
|  45 | 广西 | 桂 | 中南 |自治区|  南宁 |
+----+-----+------+-----+-------+-----------+

字段(Field)

每个表都由若干列构成,每一列都称为一个字段(Field),上表 website 所包含的字段有 id、name、url、age、alexa、uv 和 country。

字段用来维护数据表中每一条数据(记录)的特定信息。

列(Column)

与Excel类似,列(Column)是从垂直方向观察表中的数据,它包含了与某个字段相关联的所有信息。如上表中的简称一列,如下所示:

+----------------------------+
| 简称                        |
+----------------------------+
| 京    |
| 辽    |
| 沪    |
| 赣    |
| 桂    |

+----------------------------+

记录(Record)

数据表中的每一行数据都称为一条记录(Record),有多少行数据就有多少条记录。

字段是从垂直方向看表中的数据,记录是从水平方向看表中的数据。

如上面表中的第四条记录的数据

|  36 | 江西 | 赣 | 华东 |  省 |  南昌 |

空值(NULL)

字段的取值可以为 NULL,此时意味着该字段是空的,没有任何值,所以 NULL 被称为“空值”。

注意,NULL 和零值不一样,和包含空白符(空格、缩进、换行等)的字段也不一样,NULL 字段是指在添加记录的时候留空的字段,也即不为该字段指定任何值。

SQL 约束

约束(Constraint)是指表的数据列必须强行遵守的规则,这些规则用于限制插入表中的数据的值,这样能够确保每份数据的准确定和可靠性。

约束可以是列级别,也可以是表级别;列级约束仅作用于某一列,而表级约束则作用于整张表。

下面是 SQL 常用的一些约束:

约束 说明
NOT NULL 非空约束,确保列中不能有 NULL 值。
DEFAULT 默认约束,如果未指定值,那么列将提供默认值。
UNIQUE 唯一约束,确保列中所有的值都不相同。
PRIMARY KEY 主键,用来唯一标识数据表中的每一行/记录。
FOREIGN KEY 外键,用于将两个表连接在一起,让两个表的数据保持同步。
CHECK 检查性约束,用于限定列的取值范围。
INDEX 索引,用于快速从数据库中检索或者获取数据。

数据的完整性

每个 RDBMS 都存在以下几种类别的数据完整性:

  • 实体完整性:表中的一行(一条记录)代表一个实体,表中不能有重复的行
  • 域完整性:域也即字段,域完整性用来保证字段的取值是合理的
  • 引用完整性:一个表中的字段可以引用另外一个表中的记录。如果某条记录被另外一个表中的字段引用,那么该记录不能被删除
  • 自定义完整性:除了以上三种基本的完整性约束,不同版本的 RDBMS 在实现时,还可以根据其具体的应用环境,自己制定一些其它的完整性约束

数据库范式

设计关系型数据库时,需要遵守一些特定的规范才能设计出合理的数据库,这些规范就称为“范式”,满足不同程度的规范就是不同的范式。范式的目的在于:

  • 消除冗余数据,比如,不应该将两份相同的数据存储到不同的表中
  • 确保数据之间的关联性是有意义的

以上两点不但能减少数据库占用的存储空间,还能确保数据之间有清晰的逻辑关系。

总结

本文主要介绍了什么是RDBMS,同时介绍了表、字段、列、记录等概念,后续我们将继续介绍具体的SQL语法。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
Python
解决only integer scalar arrays can be converted to a scalar index
解决only integer scalar arrays can be converted to a scalar index
575 0
解决only integer scalar arrays can be converted to a scalar index
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
985 151
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1689 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
633 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
606 14