这是关于数据库建模的问题,我正在将mySQL用于此项目。
我有三个名为service [1-3]的表(示例名称),每个表包含一个服务的信息(想想修复服务,重建服务,微调服务等等)。这三个表包含不同的信息,并且不在一个表中组合在一起。
我希望能够跟踪哪些客户执行了哪些服务,以及是否已为该服务收费。
因此,假设我已经有一个名为 customer 的数据库实体。
现在,我认为我可能想创建一个名为tbl_rendered_services的第四个表,其中外键指向该服务的相关实例,以及相关客户。
那张桌子看起来像这样:
tbl_rendered_services
+----+-----------+--------------+--------------+--------------+----------+
| id | customer | service1_ref | service2_ref | service3_ref | billed |
+----+-----------+--------------+--------------+--------------+----------+
| 1 | 1 | 00001 | NULL | NULL | 0 |
+----+-----------+--------------+--------------+--------------+----------+
| 2 | 1 | NULL | 10002 | NULL | 0 |
+----+-----------+--------------+--------------+--------------+----------+
| 3 | 2 | NULL | NULL | 20003 | 1 |
+----+-----------+--------------+--------------+--------------+----------+
| 4 | 2 | NULL | 10003 | NULL | 0 |
+----+-----------+--------------+--------------+--------------+----------+
使用此表,我可以通过查询为给定客户生成帐单
SELECT * FROM tbl_rendered_services WHERE customer = 2 AND billed = 0;
返回:
+----+-----------+--------------+--------------+--------------+----------+
| id | customer | service1_ref | service2_ref | service3_ref | billed |
+----+-----------+--------------+--------------+--------------+----------+
| 4 | 2 | NULL | 10003 | NULL | 0 |
+----+-----------+--------------+--------------+--------------+----------+
现在,我认为这似乎是一个合理的解决方案,但我的问题是:
有没有更好的方法呢?
我想不出任何一个,但我觉得可能有一个我没有想到的?
感谢您抽出宝贵时间帮助我。
答案 0 :(得分:0)
我的建议:
tbl_rendered_services
+----+----------+--------------+--------------+--------------+----------+----------+----------+
| id | customer | service1_ref | service2_ref | service3_ref | billed_1 | billed_2 | billed_3 |
+----+----------+--------------+--------------+--------------+----------+----------+----------+
| 1 | 1 | 00001 | 10002 | NULL | 0 | 0 | 0 |
+----+----------+--------------+--------------+--------------+----------+----------+----------+
| 2 | 2 | NULL | 10003 | 20003 | 0 | 0 | 1 |
+----+----------+--------------+--------------+--------------+----------+----------+----------+
你可以看到像这样我没有重复。