mysql中的复杂依赖关系,如何

时间:2012-01-11 08:55:26

标签: php mysql

假设我从一个例子开始。 MySQL数据库,3个表:

items: id; lots of info about this item
container: id; name
items_container: id; item_id; container_id; count

所以这是基本结构,前两个表是项和容器,第三个是基本上存储容器中有多少项的表,一种类型的项可以在许多不同的容器中。

我需要做什么: 交易:添加,删除,在容器之间移动项目

所有这些内容都应与其他有关交易的信息一起存储。在用户向容器添加添加某些项目的事务之后,应该存储该事务,因为用户可以稍后删除该事务并且应该删除项目。删除也是如此 - 如果我们将带有id 3的5个项目的删除事务添加到id为2的容器中,稍后将其删除,则应该返回项目。这很简单,但“移动”事务变得更加复杂,我不知道这样做的正确方法是什么,只需存储项目ID和计数?

愿你们中的一些人已经开发了一些类似于这个的系统,并且可以建议一些更好的解决方案吗?性能很好,但在可靠性方面并不是那么关键。最后一件事是交易可以有多个项目(实际上它通常会有多个不同的项目来管理)。

提前谢谢你,我希望我解释了我想要实现的目标。

1 个答案:

答案 0 :(得分:0)

我的推荐是

  • 使用transaction_id auto_increment,container_id_add,container_id_sub,item_id,count,status = 0以及您想要的任何内容创建一个事务表(用户名,时间戳,...)
  • 通过写入此表格使您的申请提交交易
  • 在此表上创建插入触发器,以实现或失败事务,将结果写入状态
  • 让您的应用程序检查交易结果

为什么会这样?

  • 结构container_id_add,container_id_sub,item_id,count允许添加(container_id_sub =无效,例如-1,0,NULL),删除(container_id_add无效)或移动
  • 如果需要,您可以轻松地将其包装到存储过程中,或者您可以访问表格,无论您的使用模式如何,
  • 交易表是一个完美的更改日志