数据库简要概述
表格、行、列和键如何协同工作以创建数据库。
如果你要开始使用 Metabase,了解一些关键数据库术语会很有帮助。
表格
从根本上说,数据库 由一个或多个 表格 组成。表格包含一个或多个 列 和一个或多个 行。一行由 单元格 组成,每个单元格都有一个 值,与它所属的列相对应。
以下是一个表格的例子
姓名 | 年龄 |
---|---|
约翰 | 25 |
珍妮 | 31 |
在这里,列是 Name
和 Age
。第一行包含两个单元格,一个包含 John
,一个包含 25
,分别对应姓名和年龄列。
列
列中的所有单元格都包含相同类型的信息。例如,在上面的示例表中,Name
列中的每个单元格都包含姓名,而 Age
列列出了年龄。
每个字段都有一个 类型,描述存储在字段中的数据类型。
列与字段
关于列和字段的一些说明,因为这些术语可以互换使用
-
字段 是用于存储数据的元素(例如,
PRODUCT_ID
字段存储产品的识别代码)。 -
列 是值的列表,通常是单个字段的值的列表(例如,
PRODUCT_ID
列存储来自PRODUCT_ID
字段的值)。但是,列也可以是来自多个字段的值的列表。例如,一个列可能包含来自计算两个不同字段值之差的表达式的值:例如,一个TOTAL_WITH_DISCOUNT
列可能从DISCOUNT
字段中获取值,并从SUBTOTAL
字段中减去,然后列出差异。
在 Metabase(以及其它地方)中,你经常会看到这两个术语被互换使用,因为在大多数情况下,列指的是来自单个字段的值。
键
主键(也称为实体键)是表中唯一标识每行的字段。例如,想象一下一个可以提前预订汽车的预订应用程序。预订的 ID 可能是预订号,且没有两个预订共享相同的预订号,这使得每个预订都可以通过其预订号唯一识别。
示例
预订表
预订 ID | 姓名 | 年龄 |
---|---|---|
11 | 约翰 | 25 |
12 | 珍妮 | 31 |
在上面的表中,Reservation ID
字段是 ID(主键)。
表之间的关系
表可以包含对其他表的引用,这建立了它们之间的 关系。
让我们扩展我们假设的汽车预订应用程序的数据库。我们可以有两个表:一个用于预订(让我们称它为预订),另一个用于客户(我们将称这个为客户)。
为了将预订数据与相应的客户数据连接起来,我们将使用一个外键。外键是在表中的一种特殊类型的字段,它引用了另一个表中具有匹配值的列。几乎总是,外键指向的字段是另一个表中的ID或主键。
在这种情况下,我们将每个记录在预订表中与做出了相应预订的客户记录连接起来。为此,我们在预订表中创建一个Customer
列,其值与在客户表中的ID
列中的值相匹配。
预订
客户 | 日期 | 汽车 |
---|---|---|
11 | 12/20/2015 | 丰田凯美瑞 |
12 | 1/2/2016 | 揽胜 |
客户
ID | 姓名 | 年龄 |
---|---|---|
11 | 约翰 | 25 |
12 | 珍妮 | 31 |
虽然主键和外键之间内置的关系使得数据库用户的工作变得更简单,但大多数数据库将允许你在没有键关系的情况下在两个表之间进行连接。查看我们的关于不同SQL连接类型的指南和如何在Metabase中使用连接。
现在,如果我们想用Metabase分析我们假设的应用程序的数据库,我们可以提出一个问题,比如:2015年12月预订的所有客户的平均年龄是多少?
为此,我们需要打开预订表,添加一个过滤器,只查看2015年12月1日至12月31日期间的预订,并选择平均值…
。要选择特定年龄的平均值,我们将使用外键,并从引用的客户表中选择年龄。
下一部分:数据类型
现在我们已经对数据库有了基本了解,让我们进一步了解数据类型。
下一部分:数据类型和元数据
为什么数据类型很重要以及元数据如何帮助您更好地理解您的数据。