探索关系数据的特征
计算机数据库的主要优势之一是,通过它们可以方便地存储信息,以便快速、轻松地查找信息。 例如,电子商务系统可以使用数据库记录有关组织所销售的产品的信息,以及客户的详细信息及其所下的订单。 关系数据库提供了用于存储数据的模型,以及可用于快速检索数据的查询功能。
在本单元中,你将详细了解关系数据的特征,以及如何在关系数据库中存储此信息并进行查询。
了解关系数据的特征
在关系数据库中,可将来自现实世界的实体集合作为表进行建模。 实体被描述为需要了解或掌握其信息的事物。 在电子商务示例中,可以为客户、产品和订单创建表。 表包含行,每行表示一个实体的单个实例。 在电子商务方案中,客户表中的每行都包含单个客户的数据,产品表中的每行都定义单个产品,订单表中的每行都表示一个客户的订单。
表中的行具有一列或多列,用于定义实体属性,如客户姓名或产品 ID。 同一表中的所有行都具有相同的列。 某些列用于维护表之间的关系。 这便是关系模型名称的来源。 在下图中,Orders 表包含 Customer ID 和 Product ID。 Customer ID 与 Customers 表相关,用于标识下订单的客户,Product ID 与 Products 表相关,用于指示购买的产品。
可以通过创建数据模型来设计关系数据库。 下面的模型显示了上一个示例中的实体结构。 在此图中,标记为 PK 的列是表的主键。 主键指示唯一标识每行的列(或列的组合)。 每个表都应有一个主键。
该图还显示表之间的关系。 连接表的线指示关系的类型。 在此示例中,从客户到订单的关系是一对多(一个客户可以下许多订单,但每个订单仅适用于单个客户)。 同样,订单与产品之间的关系是多对一(对于同一个产品,可能有多个订单)。
标记为 FK 的列是外键列。 它们引用(或链接到)另一个表的主键,用于维护表之间的关系。 外键还有助于识别和防止异常,如 Customers 表中不存在的客户的订单。 在下图中,Orders 表中的 Customer ID 和 Product ID 列链接到下订单的客户和订购的产品:
关系数据库系统的主要特征包括:
-
所有数据都是表格格式。 实体作为表进行建模,实体的每个实例是表中的行,每个属性都定义为列。
-
同一表中的所有行都具有相同的列集。
-
一个表可以包含任意数量的行。
-
主键唯一标识表中的每行。 不能有两行共享相同的主键。
-
外键引用另一个相关表中的行。 对于外键列中的每个值,在另一个表的相应主键列中都应有具有相同值的行。
备注
为大型组织创建关系数据库模型不是一个简单任务。 定义表时可能会执行多次迭代以匹配上述特征。 有时必须将一个实体拆分为多个表。 此过程称为规范化。
大多数关系数据库支持结构化查询语言 (SQL)。 可以使用 SQL 创建表、在表中插入、更新和删除的行以及查询数据。 CREATE TABLE
命令可用于创建表,INSERT
语句可用于将数据存储在表中,UPDATE
语句可用于修改表中的数据,DELETE
语句可用于从表中删除行。 SELECT
语句可从表中检索数据。 下面的示例查询从上面显示的示例数据库中查找每个客户的详细信息。
SELECT CustomerID, CustomerName, CustomerAddress
FROM Customers
可以使用 WHERE 子句筛选数据,而不是检索每行。 下一个查询会获取客户 1 下的所有订单的订单 ID 和产品 ID。
SELECT OrderID, ProductID
FROM Orders
WHERE CustomerID = 'C1'
可以使用联接运算在查询中合并来自多个表的数据。 联接运算跨越表之间的关系,使你可以一次从多个表中检索数据。 下面的查询检索每个客户的姓名,以及他们所下的每个订单的产品名称和数量。 请注意,每列都符合其所属的表:
SELECT Customers.CustomerName, Orders.QuantityOrdered, Products.ProductName
FROM Customers JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
JOIN Products
ON Orders.ProductID = Products.ProductID
可以在 Microsoft 网站上的结构化查询语言 (SQL) 页面上找到有关 SQL 的完整详细信息。
探索关系数据库用例
只要可以轻松地将数据建模为具有固定列集的表的集合,便可以使用关系数据库。 理论上,可以通过这种方式为几乎任何数据集建模,但有些方案比其他方案更适合关系模型。
例如,如果你有音乐、视频或其他媒体文件的集合,则尝试将此数据强制建模为关系模型可能会十分困难。 更好的做法可能是使用非结构化存储,如 Azure Blob 存储中提供的存储。 同样,社交网络站点使用数据库来存储数百万用户的数据,每个用户都可以在一个高度复杂的关系网中与任何数量的其他用户联系起来。 此类型的数据更适合图形数据库结构,而不是关系表的集合。
关系数据库通常在电子商务系统中使用,但使用关系数据库的主要用例之一是联机事务处理 (OLTP)。 OLTP 应用程序专注于面向事务的任务,这些任务每分钟处理非常大量的事务。 关系数据库非常适合于 OLTP 应用程序,因为它们自然地支持插入、更新和删除操作。 关系数据库通常可以进行优化,以使这些操作快速运行。 此外,SQL 的性质使用户可轻松地对数据执行即席查询。
使用关系数据库的 OLTP 应用程序示例包括:
- 银行解决方案
- 在线零售应用程序
- 航班预订系统
- 众多网上购物应用程序。