sql - 数量未知的 PostgreSQL 一对多

标签 sql postgresql schema

我有两个表:responseanswer。单个响应可以包含多个答案。所以 response 应该有一个 FK 到答案表。但是,一个回复的答案数量没有限制。

是否可以指定这两个表之间的一对多关系,而不必硬编码特定数量的列?

最佳答案

Is it possible to specify a one-to-many relationship between these two tables without having to hardcode a specific number of columns?

您可以创建一个由两个外键组成的连接表,其中每一行代表响应和答案之间的关联,即如果 ID 为 1 的响应与答案 1 和 2 相关联,您的表将包含这两行

response_id, answer_id
1, 1
1, 2

您可以使用以下查询选择您的响应/答案关联

select * 
from response r
join response_answer ra on ra.response_id = r.id
join answer a on a.id = ra.answer_id

编辑

上面的答案假设你实际上想要一个多对多而不是一对多的关系(即每个答案可以属于许多响应而不是一个)否则更简单的解决方案是将响应 fk 添加到答案表。

关于sql - 数量未知的 PostgreSQL 一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161452/

相关文章:

php - 更新查询不在 while 循环中执行

sql - 获取上一行值

python - Postgresql ON CONFLICT 在 sqlalchemy 中

html - 为什么 Google 建议在 Body 中使用 META TAGS?

java - 获取 xs :choice maxOccurs and minOccurs attributes with XSOM

mysql - 哪个表模式更好?

sql - 在大表上使用 AVG() 和 group by 优化查询?

sql - 具有相同名称列的连接表上的 Rails ".pluck"返回一个值,然后返回 nil

SQL 日期逻辑 - 查找之前的*非标准*季度

postgresql - 安装新 Windows 后未创建 postgresql 用户