我在数据库中有两个表(endorsement
和work_data
),两个表都引用了项目外部的对象(“作品”),即具有一个ID(pid
)的表不是由我定义的(例如,比较书籍的ISBN)。
对于每一份存在的作品,我都可以同时添加endorsement
和work_data
,或者两者都不添加。
现在我的问题是:我可以并且应该添加一个外键来链接pid
和endorsement
的{{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' |