PostgreSQL一对多,数量未知

时间:2015-10-16 02:09:50

标签: sql postgresql schema

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

SELECT
      count(*) as Received
   FROM
      ( select 3 as RqType,
               '2015-10-01' as beginDate, 
               '2015-10-20' as endDate) as PV,
      Request r
   WHERE   
          request_received_date between PV.beginDate and PV.endDate
      AND case when PV.RqType = 100  then 1=1
               when PV.RqType = 99   then r.request_type_id <> 5
               when PV.RqType <= 6   then PV.RqType = r.request_type_id 
          end 

您可以使用以下查询

选择您的回答/答案关联
response_id, answer_id
1, 1
1, 2

修改

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