我刚开始使用数据库,只是在我的数据库中被许多到许多数据关系所困扰。例如,我有一个以主键作为Activity_Id的活动数组,单个活动可以有多个会话,因为它是一对多的关系,
但是,一个会议也可以有多个地点,一个地点也可以在多个会议中使用,它是一个会议和地点之间的多到多的关系,我怎么能把某个会议的场地和会议的地点分开,以便在一个APi上作为响应发送一个地点?提前感谢
发布于 2018-05-31 15:07:19
让我们说你有:
session_table: id, name
venue_table: id, name现在,为了在这些表之间建立许多到多个关系,您需要创建第三个枢轴表:
session_venue_table: session_table_id, venue_table_id然后,要从一个地点获得会议,您将做:
SELECT s.*
FROM session_table s
WHERE s.id in (
SELECT pivot.session_table_id as id
FROM session_venue_table pivot
WHERE pivot.venue_id = 'selectedVenueId'
)希望能帮上忙。
发布于 2018-05-31 15:22:59
我想你们的桌子应该有这种结构。
活动:
Activity_Id | SomeActivityData
------------+-----------------
1 | blabla
2 | example
3 | some things
4 | nice data地点:
Venue_Id | SomeVenueData
------------+--------------
1 | hello
2 | another example
3 | anything
4 | cool data一个活动有一个或更多的地点和一个地点有一个或更多的活动。
这意味着这种关系可以通过这样的方式来表达:
Activity -> (活动与场地的关系) <- (1,n)场地
您可以构建第三个表,用于引用关系中的ids。
ActivityVenue:
Activity_Id | Venue_Id
------------+---------表ActivityVenue的主键是组合,它既包括外键,也包括表Activity和场地。
假设活动1和3属于场地1,场地2和3属于活动2,活动4和地点4是相关的。
表ActivityVenue将如下所示:
Activity_Id | Venue_Id
------------+---------
1 | 1
3 | 1
2 | 2
2 | 3
4 | 4如果设置适当的约束,就不会有重复的键。
编辑:
I强烈建议您看看Merise方法
https://stackoverflow.com/questions/50627270
复制相似问题