gpt4 book ai didi

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

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

我开始学习cakephp 3,这将是我的学习项目。应用的思想是每个用户可以拥有很多产品,用户之间可以进行产品交易。工作流程:

  • 所以一个用户可以访问另一个用户的个人资料,他可以点击按钮进行交易。这将显示两个用户的所有产品,但按用户分别显示。
  • 用户现在可以选择他的一个或多个产品,他还必须选择另一个用户的一个或多个产品才能开始交易
  • 另一位用户将收到通知,告知他有交易要约,他必须做出回应。他现在可以选择接受、拒绝或更改交易
  • 如果接受的交易被“锁定”
  • 如果被拒绝的交易被“锁定”
  • 如果用户点击更改交易,则他必须重新选择他和其他用户的产品并提交。这是我们回到第 3 点的地方

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

如果我总结一切。当交易发生时,我需要知道谁在与谁交易什么(多种产品)以及接受、拒绝或重新选择交易产品。我也在寻找我的专栏的更有意义的名称。由于在某些时候用户的角色发生了变化,请求产品的人现在处于待定状态,反之亦然。

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

最佳答案

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

根据最后的评论,您当前的架构似乎不支持将 1 种产品交易到 10 种产品。为了支持这一点,我建议将表 products_users_trades 替换为 products_trades 包含列:Idproduct_idtrade_idcreated_date

因此,让我们考虑在您的工作流中添加一些我认为可能需要的步骤以及您的架构将如何使用:

1.对于用户展示其产品的交易:

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_idt.user_id1 列来确定哪些产品是您的,哪些不是您的,哪些是您提供的或为您提供的。

2.显示哪些产品可以交易:

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

此处 status_id = 1 表示新的锁定交易。要释放锁定,您需要将状态更改为接受或拒绝。

3.创建交易:

-- 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);

4.检查用户是否可以接受或拒绝交易——检查此交易是否有 user_id1 = 他的用户 ID

5.接受或拒绝交易——改变交易状态。

6.要修改贸易 - 更改贸易修改数据并删除所有 product_trades 并创建新的。如果您需要在交易中显示更改的产品,那么您只需删除更改的产品,created_date 列将作为新产品的标识符。

关于mysql - 数据库模型所需的建议 - 附有部分 EER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41857583/

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