【发布时间】:2022-01-05 13:50:33
【问题描述】:
当用户可以是客户或交易者时,我正在创建应用程序(我不能为他们每个人创建单独的表格)。每个交易者都可以拥有许多产品,并创建只能为选定用户显示的特殊产品(Special_product 表)。每个用户都可以下订单 (Order_table) 特定产品。问题是我的数据库模型中有两个相似的连接表。我不知道这是否是一个好的解决方案,这就是为什么要问你 - 它应该看起来像这样或者也许有更好的解决方案?
【问题讨论】:
当用户可以是客户或交易者时,我正在创建应用程序(我不能为他们每个人创建单独的表格)。每个交易者都可以拥有许多产品,并创建只能为选定用户显示的特殊产品(Special_product 表)。每个用户都可以下订单 (Order_table) 特定产品。问题是我的数据库模型中有两个相似的连接表。我不知道这是否是一个好的解决方案,这就是为什么要问你 - 它应该看起来像这样或者也许有更好的解决方案?
【问题讨论】:
我认为你的模型很好。
要为给定用户获取可用产品,我会这样做
SELECT
p.product_id,
p.product_name,
vendor.user_name vendor_name
FROM
(
SELECT product_id FROM product
UNION
SELECT product_id FROM special_product WHERE user_id = ?
) selection
INNER JOIN product p ON p.product_id = selection.pproduct_id
INNER JOIN [user] vendor ON vendor.user_id = p.user_id
user 是 SQL 中的保留字,我建议选择不同的表名。
【讨论】: