【发布时间】:2016-01-13 12:40:42
【问题描述】:
想象一个场景,我们有公司、银行账户和客户。公司和客户都可以拥有多个银行账户,但一个银行账户可以只属于一个客户或一家公司。我想知道设计这样一个不涉及复杂查询或业务逻辑的数据库的最佳方法,尤其是在我们需要从数据库中删除银行账户的时候。
我见过的一个解决方案是将银行账户的 ID 作为 JSON 字符串数组引用到公司或客户上,如下所示:
In customer or company
======================
id name bank_account
1 Bob [2,3,4,5]
这不是一个糟糕的解决方案,但我想知道是否有更好的方法来做到这一点。
注意: 我正在使用Symfony 2.7.5 构建应用程序,因此使用Doctrine ORM 库。
【问题讨论】:
-
如果是 mySQL,请使用具有正确设置外键依赖项的
InnoDB表 - 将cascade用于update和delete- 这将允许您删除记录和任何依赖记录由于依赖关系,其他表也会被删除 -
@RamRaider 我认为如果我们只有一个实体与银行账户存在一对多关系,这将是适用的,但我不知道如何在这里应用。
-
如果两个实体有共同的祖先,就可以应用,见下面我的回答
标签: php sql symfony database-design doctrine-orm