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