gpt4 book ai didi

mysql - 在一行中存储对多个表的引用的最佳方式?

转载 作者:搜寻专家 更新时间:2023-10-30 20:49:38 26 4
gpt4 key购买 nike

这是一个关于数据库建模的问题,我在这个项目中使用 mySQL。

我有三个名为服务[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 |
+----+-----------+--------------+--------------+--------------+----------+

现在,我认为到目前为止这似乎是一个合理的解决方案,但我的问题是:

有更好的方法吗?

我想不出任何一个,但我觉得可能有一个我没有看到?

感谢您花时间帮我解决这个问题。

最佳答案

我的建议:

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 |
+----+----------+--------------+--------------+--------------+----------+----------+----------+

你可以看到像这样我没有重复。

关于mysql - 在一行中存储对多个表的引用的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46365286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com