是否可以在不可为空的列上添加可选引用?

时间:2018-12-17 10:40:57

标签: sql database postgresql

我在数据库中有两个表(endorsementwork_data),两个表都引用了项目外部的对象(“作品”),即具有一个ID(pid)的表不是由我定义的(例如,比较书籍的ISBN)。

对于每一份存在的作品,我都可以同时添加endorsementwork_data,或者两者都不添加。

现在我的问题是:我可以并且应该添加一个外键来链接pidendorsement的{​​{1}}列,因为可能有或没有行work_data?我希望能够有效地获取pid所引用的工作中的work_data,反之亦然。

如果需要的话,我正在使用PostgreSQL。

编辑:根据要求,提供了一个示例。刻骨铭心,所以不要介意语法错误-我想知道数据库的设计,以及我要执行的效率要考虑哪些因素。

endorsement

endorsement

(因此,用户| pid | user | | -- | -- | | 10.0000/00 | 1 | | 10.1111/11 | 1 | 认可了两部作品。)

1

work_data

(因此,我们知道了两部作品,| pid | title | | -- | -- | | 10.1111/11 | 'Some article that has an endorsement' | | 10.2222/22 | 'Some other article that does not have an endorsement' | 表中也列出了其中的一部。)

现在,我希望能够选择带有联合数据的认可,例如

endorsement

同样,我希望能够选择带有联合认可的工作数据,例如

SELECT endorsement.*, pid.title FROM endorsement LEFT JOIN work_data ON endorsement.pid=work_data.pid;

| pid | user | title |
| -- | -- | -- |
| 10.0000/00 | 1 | NULL |
| 10.1111/11 | 1 | 'Some article that has an endorsement' |

0 个答案:

没有答案