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