Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 2个表的数据库设计,这些表由一个id关联_Mysql_Database - Fatal编程技术网

Mysql 2个表的数据库设计,这些表由一个id关联

Mysql 2个表的数据库设计,这些表由一个id关联,mysql,database,Mysql,Database,我目前正在开发一个工具,它有以下表格和相应的列 Budget Category Transactions budget_id category_id transaction_id category_id category_id 目前,我们正在使用category_id将预算记录映射到交易记录。 但是我们的设计有一个小毛病。如果两个预算项目具有相同的类别id,则事务将映射到两

我目前正在开发一个工具,它有以下表格和相应的列

Budget             Category          Transactions
budget_id          category_id       transaction_id
category_id                          category_id
目前,我们正在使用category_id将预算记录映射到交易记录。
但是我们的设计有一个小毛病。如果两个预算项目具有相同的类别id,则事务将映射到两个预算。如何设计一种将交易项目与预算项目一一对应,但仍保持松散耦合的设计?

问题是……如果在添加交易项目后再添加预算项目,会发生什么情况?我们是否将事务中的budget_id保留为默认值,然后在发生冲突时更新?在budget之后存储事务我们正在构建一个工具,您可以在其中添加/删除预算项并独立输入事务。因此,我们不能强制流将记录添加到这些表中。如果我们添加另一个表,我们能做得更好吗?这是否意味着该事务在一段时间内可能有不同的预算?如果该事务只能绑定到一个预算,@RomanNewaza建议的就是您想要做的,尽管听起来您也希望在事务表中维护category_id。如果在插入事务时没有预算ID(这似乎很奇怪-钱从哪里来?),则需要将其保留为空,并在适当时更新表。如果一个事务可以与多个预算相关,则创建另一个表,该表仅为预算ID和事务ID,以维护多对多关系。根据您稍后的评论,您不会看到1对1关系。
Budget             Category          Transactions
budget_id          category_id       transaction_id
category_id                          budget_id