【发布时间】:2021-01-18 15:40:05
【问题描述】:
我正在开发一个在数据库中有 4 个表的个人议程。如何获取用户对应的联系人以及该用户联系人对应的地址和电话?
关注 diagram ER.
我还不是很有经验,我从来没有开发过真正的系统,我不知道这种关系结构是否正确。如果您有帮助改进或纠正此结构的内容,我将不胜感激。
注意:我正在使用 PostgreSql
【问题讨论】:
标签: database postgresql inner-join relationship
我正在开发一个在数据库中有 4 个表的个人议程。如何获取用户对应的联系人以及该用户联系人对应的地址和电话?
关注 diagram ER.
我还不是很有经验,我从来没有开发过真正的系统,我不知道这种关系结构是否正确。如果您有帮助改进或纠正此结构的内容,我将不胜感激。
注意:我正在使用 PostgreSql
【问题讨论】:
标签: database postgresql inner-join relationship
这样的?
SELECT *
FROM contacts
JOIN user ON contacts.id_user = user.id
JOIN addres ON contacts.id_addres = addres.id
JOIN phones ON contacts.id_phone = phone.id
也许您想要 LEFT JOIN,但这取决于您的数据和要求。当然,您可以将 * 替换为您需要的列名。
【讨论】:
基于我根据@SQLpro 解释所做的diagram,这是我的问题的解决方案:
SELECT * FROM contacts
INNER JOIN user ON contacts.id_user = user.id
INNER JOIN addres ON adresses.id_contact = contacts.id
INNER JOIN phones ON phones.id_contact = contacts.id
此 sql 返回与最终与用户关联的联系人关联的地址和电话。
【讨论】:
由于 PG SQL 引擎没有聚集索引,也没有索引组织表,因此添加“超级键”而不是使用三个 FK 列创建 PRIMARY KEY 并没有更高的效率。所以放弃你的额外 PK 并将三个 FK 列作为 PK。
【讨论】: