2.关系型数据库基础
本节主要讨论为什么使用关系型数据库以及关系型数据库的基本概念
2.1 为什么选关系型数据库
关系型数据库是当前最广泛使用的数据库模型之一,特别是在传统的业务系统和数据管理中。关系型数据库有以下几个原因让它成为讨论重点:
1.主流性和普及度
关系型数据库如MySQL、PostgreSQL、Oracle、SQL Server等在行业中应用广泛,尤其是在企业管理、财务、库存、CRM等系统中,几乎都是基于关系型数据库开发的。因此,学习数据库时,理解关系型数据库是最基础和常见的需求。
2. 结构清晰、标准化高
关系型数据库基于表、行、列的结构非常直观,易于理解和管理。它通过**结构化查询语言(SQL)**来操作数据,SQL是一种标准化语言,全球通用,任何一个主流的关系型数据库都支持SQL。因此,它在开发者和企业之间有极高的接受度。
3. 数据一致性与完整性
关系型数据库通过事务(Transaction)和约束(如主键、外键、唯一性约束等)保证数据的一致性和完整性。这在处理金融交易、订单管理等对数据要求非常严谨的场景中至关重要。
4. 复杂查询的支持
关系型数据库擅长处理复杂查询、联表查询和数据聚合操作。许多企业系统需要频繁地进行复杂的 数据分析和操作,关系型数据库能高效处理这些需求。
5. 与历史发展有关
关系型数据库作为数据库领域的经典模型,经过了几十年的发展,理论和实践都非常成熟。它是数据库领域的基石,其他类型的数据库(如NoSQL)也是在关系型数据库的局限性显现后才逐渐发展起来的。
因此,关系型数据库被当作讨论数据库基础时的首要话题。在深入学习后会扩展到NoSQL、图数据库等其他模型。掌握关系型数据库及其背后的理论,对理解其他数据库模型也有很大的帮助。
2.2 关系型数据库概述
2.2.1 什么是关系型数据库
关系型数据库(RDBMS,Relational Database Management System)是一种通过表格来组织和存储数据的数据库系统。在关系型数据库中,数据被表示为二维的表(Table),每个表包含行(Row)和列(Column)。行代表一个记录(Record),列代表一个字段(Field)。这种以表为基础的结构使得数据之间可以通过某种关系进行关联,这种关系通常通过主键和外键来实现。
关系型数据库的主要特点包括:
- 结构化数据:数据以表格的形式存 储,每个表有明确的字段定义和数据类型。
- 关系性:数据表之间通过主键和外键等方式建立关系。
- SQL语言支持:关系型数据库主要通过SQL(结构化查询语言)来操作和管理数据。
常见的关系型数据库包括MySQL、PostgreSQL、Oracle、SQL Server等。
2.2.2 表、行、列的基本概念
表(Table):
表是关系型数据库中最基本的存储结构,用于存储数据。一个表由行和列组成,每个表都应该有一个表名。表中的每一行表示一条记录,每一列表示该记录的一个属性。
如下:一个名为students的表可以有以下字段(列):id(学生编号)、name(姓名)、age(年龄)。
id | name | age |
---|---|---|
1 | Alice | 21 |
2 | David | 22 |
行(Row):
行也称为记录(Record),代表表中的一个实体。比如,在students表中,每一行可以代表一个学生的信息。
列(Column):
列代表表中数据的属性或字段,每个列都有一个名称和数据类型(如整数、字符串等)。所有记录中的同一列具有相同的属性。如在上面的students表中,name列表示学生的姓名,age列表示学生的年龄。
2.3 数据库模型
2.3.1 层次模型、网状模型、关系模型的比较
在关系型数据库出现之前,其他一些数据库模型也被广泛使用,这些模型包括层次模型、网状模型等。下面简要比较几种模型:
层次模型(Hierarchical Model):
数据以树状结构组织,每个节点代表一个数据实体,节点之间有严格的父子关系。每个父节点可以有多个子节点,但每个子节点只能有一个父节点。层次模型的查询速度较快,但结构不灵活,扩展性较差。
- 优点:简单、查询速度快。
- 缺点:子节点只能有一个父节点,数据冗余大,难以灵活扩展。
网状模型(Network Model):
网状模型允许多个父节点指向同一个子节点,支持更加复杂的多对多关系。尽管比层次模型灵活,但操作和维护相对复杂。
- 优点:支持复杂的多对多关系。
- 缺点:结构复杂,维护成本高。
关系模型(Relational Model):
关系模型基于数学中的集合理论,数据被组织成二维表,表与表之间通过外键建立联系。这是目前使用最广泛的数据库模型。
- 优点:灵活、扩展性好、数据结构清晰。
- 缺点:复杂查询在性能上有时不如网状模型和层次模型。
2.3.2 ER(实体-关系)模型
实体-关系模型(ER模型,Entity-Relationship Model)是数据库设计过程中常用的一种图示方法,用于表示现实世界中的实体、实体之间的关系及其属性。ER模型帮助设计人员在创建数据库之前进行逻辑结构的规划。
ER模型主要包含以下几个要素:
- 实体(Entity):表示现实中的对象或概念,如学生、课程等。
- 属性(Attribute):描述实体的特性,如学生的姓名、年龄等。
- 关系(Relationship):表示实体之间的联系,如学生选修课程就是一个“学生-课程”之间的关系。
ER模型通常通过图形的形式表达,实体以矩形表示,属性以椭圆表示,关系以菱形表示。
2.4 数据库设计原则
2.4.1 实体、属性、关系
在数据库设计中,实体、属性和关系是基本的组成部分:
- 实体:现实世界中可以区分的对象或概念,如“用户”、“订单”、“产品”。
- 属性:实体的特性或特征。如“用户”实体的属性可以是“姓名”、“年龄”、“电子邮箱”等。
- 关系:实体之间的相互关联。关系通常反映实体间的业务逻辑,如“用户购买订单”就是用户与订单之间的关系。
2.4.2 数据库范式
数据库范式是数据库设计中的重要概念,范式用于减少数据冗余,提高数据的完整性。常见的范式包括第一范式、第二范式和第三范式。
-
第一范式(1NF):要求数据表的每一个字段都是不可分的原子值,即表中的每一列只能包含单一值,而不能包含列表或集合。
-
第二范式(2NF):在满足第一范式的基础上,要求表中非主键的字段必须依赖于主键的全部字段,而不能依赖于主键的一部分。这是为了解决数据冗余的问题。
-
第三范式(3NF):在满足 第二范式的基础上,要求非主键字段不依赖于其他非主键字段,即消除传递依赖,进一步减少数据冗余。
2.4.3 数据冗余与规范化
数据冗余:指在数据库中同样的数据重复存储在多个地方,导致存储空间浪费和数据一致性问题。数据冗余过多会导致数据库难以维护和更新。
规范化:是指通过应用范式理论,减少数据冗余,并确保数据一致性。在数据库设计中,通过将数据表进行合理拆分,消除重复数据,避免数据冗余。规范化的目标是实现数据的最优存储,使得数据结构更加灵活和高效。