我开始学习cakephp 3,这将是我的学习项目。 应用的想法是每个用户可以拥有许多产品,用户可以在它们之间交换产品。 工作流程:
到目前为止,这是我的数据库设计,但我认为这不是最好的解决方案,所以我希望你能给我更好的解决方案,如果你有一个
如果我总结一切。 当交易发生时,我需要知道谁在交易什么(多种产品)与谁接受,拒绝或重新选择贸易产品。我也在寻找更有意义的我的专栏名称。因为在某些时候用户的角色会发生变化,而正在申请产品的人现在正在等待,反之亦然。
如果您需要任何其他信息,请告诉我,我会提供。提前谢谢
答案 0 :(得分:3)
我想您还有products
表,其中包含Id
列,user_id
等等。
根据上一条评论,您当前的架构似乎不支持将1个产品交易到10个。为了支持这一点,我建议将表格products_users_trades
替换为products_trades
列:{ {1}},Id
,product_id
,trade_id
。
因此,让我们考虑一下您的工作流程,添加一些我认为可以采用的步骤以及如何使用您的架构:
1.用户用其产品展示贸易:
created_date
您可以在此处使用select t.id, p.name, t.user_id, t.user_id1 from trades as t
inner join product_trades as pt
on t.user_id = pt.trade_id or t.user_id1 = pt.trade_id
inner join products as p on p.id = pt.product_id
where t.user_id = 1 or t.user_id1 = 1
,t.user_id
列来确定您或您为自己提供的产品。
2.要显示可供贸易的产品:
t.user_id1
此处status_id = 1表示新的锁定交易。要解除锁定,您需要将状态更改为已接受或已拒绝。
3.创建交易:
select * from products as p
where p.user_id = 1 and p.id not in
(select pt.product_id from trades as t
inner join product_trades as pt on t.id = pt.trade_id
where t.status_id = 1 and (t.user_id = 1 or t.user_id1 = 1))
4.检查用户是否可以接受或拒绝交易 - 检查此交易是否有user_id1 =他的用户ID
5.接受或拒绝贸易 - 改变贸易状况。
6.修改交易 - 更改交易修改数据并删除所有-- create a trade
insert into trades (status_id, user_id, user_id1) values (1, 1, 2);
-- insert all products in trade
insert into product_trades (product_id, trade_id) values (1, 1);
insert into product_trades (product_id, trade_id) values (1, 2);
并创建新数据。如果您需要在交易中显示已更改的产品,则需要仅删除已更改的产品,而列product_trades
将是此新产品的标识符。