我尝试创建一个规范化的数据库,但无法以表格格式显示数据。
在下面的示例中,数据库用于按日期跟踪数字(在各种任意命名的类别中)。例如,用户可以跟踪每天有多少水果和蔬菜被送到他的杂货店。用户定义水果和蔬菜类别的名称,以及存在多少类别。以下是与此示例对应的表格:
一张tracker
表:
id | name
----+---------------------
1 | Grocery deliveries
2 | Sports cars
一张entries
表:
id | datetime | tracker_id
----+---------------------+------------
1 | 2013-10-01 00:00:00 | 1
2 | 2013-10-02 00:00:00 | 1
3 | 2013-10-03 00:00:00 | 1
一张values
表:
id | number | entry_id | category_id
----+--------+----------+-------------
1 | 10.0 | 1 | 1
3 | 20.0 | 1 | 2
5 | 21.0 | 1 | 3
7 | 18.0 | 2 | 2
8 | 4.0 | 3 | 1
9 | 9.0 | 3 | 2
还有一张category
桌子:
id | name | tracker_id
----+-----------------+------------
1 | Tomatoes | 1
2 | Carrots | 1
3 | Brussel sprouts | 1
4 | Ferraris | 2
我想为跟踪器 1 打印一个表格,每一行对应一个日期(没有重复的日期)。这些列将是:日期、第 1 类(西红柿)、第 2 类(胡萝卜)、第 3 类(球芽甘蓝)。如果在给定日期没有给定类别的值,它将为空或显示为 null。所以,理想情况下,它看起来像这样:
datetime | Tomatoes | Carrots | Brussel sprouts
---------------------+----------+---------+-----------------
2013-10-01 00:00:00 | 10.0 | 20.0 | 21.0
2013-10-02 00:00:00 | Null | 18.0 | Null
2013-10-03 00:00:00 | 4.0 | Null | 9.0
我不确定如何执行此操作,或者是否有更好的方法来存储这些数据。有什么建议么?
entries
当和values
由单个表表示(条目是行,值是列)时,显示数据很容易。但在这种情况下,最大类别数受到我表中列数的限制。我更喜欢标准化方法如何允许每个“跟踪器”表示任意数量的类别。