数据库模型所需的建议 - 附加的部分EER

时间:2017-01-25 17:12:34

标签: mysql database cakephp database-design mysql-workbench

我开始学习cakephp 3,这将是我的学习项目。 应用的想法是每个用户可以拥有许多产品,用户可以在它们之间交换产品。 工作流程:

  • 因此,一个用户可以访问另一个用户的个人资料,他可以点击按钮交易。这将显示两个用户的所有产品,但每个用户单独显示。
  • 用户现在可以选择他的一个或多个产品,他还必须选择一个或多个其他用户产品来开始交易
  • 另一位用户会收到通知他有交易要约,他将不得不回复。他现在可以选择接受,拒绝或更改交易
  • 如果接受的交易被“锁定”
  • 如果被拒绝的交易被“锁定”
  • 如果用户点击更改交易,那么他必须重新选择他和其他用户的产品并提交。这是我们返回第3点的地方

到目前为止,这是我的数据库设计,但我认为这不是最好的解决方案,所以我希望你能给我更好的解决方案,如果你有一个 Db design

如果我总结一切。 当交易发生时,我需要知道谁在交易什么(多种产品)与谁接受,拒绝或重新选择贸易产品。我也在寻找更有意义的我的专栏名称。因为在某些时候用户的角色会发生变化,而正在申请产品的人现在正在等待,反之亦然。

如果您需要任何其他信息,请告诉我,我会提供。提前谢谢

1 个答案:

答案 0 :(得分:3)

我想您还有products表,其中包含Id列,user_id等等。

根据上一条评论,您当前的架构似乎不支持将1个产品交易到10个。为了支持这一点,我建议将表格products_users_trades替换为products_trades列:{ {1}},Idproduct_idtrade_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将是此新产品的标识符。