重复外键或使用一对一关联的两个表

问题描述 投票:0回答:1

我有两张桌子

sessions
schedules
,我想添加一张新桌子
destinations

destinations
表可以与两个表相关,但只有 ONE 目的地可以与
session
schedule
相关:

  • N 个目的地 -> 一个会话
  • N 个目的地 -> 一个时间表

解决方案1:

创建一个包含两个外键(id_session 和 id_schedule)的目标表,并为每个目标仅填充一个外键。

解决方案2

我创建

destinations
schedule_destinations
sessions_destinations
,具有以下关系:

  • 1 个目的地 -> 1 个 Schedule_destinations (id_destination [UNIQUE], id_schedule) -> N 个时间表
  • 1 个目的地 -> 1 个 Schedule_destinations (id_destination [UNIQUE], id_session) -> N 个会话

谢谢!

sql database-design foreign-keys relational-database one-to-one
1个回答
0
投票

为了使您的结构与您的业务规则一致(一种关系与会话或时间表相关),我将创建 2 个表:

  • schedule_destinations
    ,带有外键
    schedule
  • session_destination
    ,带有外键
    sessions

并且不要创建第三个表

destinations

在解决方案中,您将拥有不同组的不同目的地。因此,您不会同时在一个目的地进行会议和安排。

Selects
如果您需要在同一结果中使用两种类型的目的地,我会从两个表中进行操作。

© www.soinside.com 2019 - 2024. All rights reserved.