小编JKo*_*sin的帖子

一个可以引用多种类型对象的对象应该如何在关系模式中建模?

为这个晦涩的问题道歉,用一个具体的例子可能更有意义:

在我的应用程序中,我可能会创建一个包含一组项目的投资组合。但是,我也可以添加一个嵌套在投资组合(然后可能包含项目)中的“子投资组合”。目前,我通过以下方式绘制了我的架构:

+------------+    +-----------------------+    +------------+
| Portfolios |    | Portfolio_project_map |    | Projects   |
+------------+    +-----------------------+    +------------+
|   port_id  |    |   parent_id           |    |   proj_id  |
+------------+    +-----------------------+    +------------+
|            |    |   child_id            |    |            |
                  +-----------------------+
                  |   child_is_portfolio  |
                  +-----------------------+
Run Code Online (Sandbox Code Playgroud)

这看起来非常难看。在关系数据库中建模这种关系的正确方法是什么?还是真的没有,这样的细节应该在业务逻辑中严格执行?它甚至有可能对指定的外键约束Portfolio_project_map,使得child_id引用要么port_id还是proj_id

另外,这样的问题到底叫什么?我发现在几个地方引用了“一对一”,但我有一种不完全正确的感觉?

mysql database-design referential-integrity

6
推荐指数
1
解决办法
294
查看次数