如何处理“可选”循环引用

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

我遇到了关于循环引用的问题。我没有找到一个好的设计解决方案。

我们有一个传统的调度系统。

用户

  • 用户身份

TimeSlot(可用性)

  • timeSlotID
  • START_HOUR
  • finish_hour
  • FK_userID

约会

  • timeSlotID_FK
  • 细节
  • START_HOUR
  • finish_hour

这样我们就有了一个连锁用户 - (1,n) - >可用性 - (1,n) - >约会

现在我想做的是在非常时间段安排约会。 (当用户不应该可以并且想要预约时,用户就会出现。

这样我需要快捷方式可用性。

用户 - >约会

但是如果我添加一个新字段UserFK,我觉得我会创建一个循环引用。

database-design
1个回答
0
投票

以下是我对数据库设计的观察,基于您的问题。

  • 从时间段解除FK_UserID的关联。使它们成为独立的实体您可以灵活地将用户与约会相关联。如果你想保持一般用户的可用性,你可以有一个单独的表User_Timeslot。它可用于检查可用性,如果用户预约,则不应影响。
  • 现在,appointment将成为一个桥接表,它映射用户,时间段和相应的约会。你还可以有一个标志IsUserAdhocAppointment,它将告诉用户是否出现在他的时间段之外(基于User_Timeslot表)。这个用户的约会是在start_hour到end_hour,属于这个时间段。
© www.soinside.com 2019 - 2024. All rights reserved.