这是一个关于数据库建模的问题,我在这个项目中使用了 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 |
+----+-----------+--------------+--------------+--------------+----------+
现在,我认为到目前为止这似乎是一个合理的解决方案,但我的问题是:
有没有更好的方法来做到这一点?
我想不出任何,但我觉得可能有一个我没有看到?
感谢您花时间帮助我解决这个问题。