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