gpt4 book ai didi

database - 许多 fk 表的一个表列?

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:26 25 4
gpt4 key购买 nike

对于这种情况,最佳解决方案/实践是什么?我有一个表,可以引用多个表(对象)?

这是表 UserCalendar 的示例。这是一个用户保存他的事件的表,而且系统从后面插入这个表。用户执行一些有截止日期的服务,这些服务也被插入到这个表中。问题是没有像 UserEvent 表这样的表。用户应该将他所有的事件保存在这个日历中作为描述。我应该让这个尽可能简单。

我可以用两种方式设计。

1)

UserCalendar
UserCalendarId | UserId | Description | ObjectType | ObjectId

使用这个选项我就不必 FK 这个表了。我只能更改 ObjectType (Notification、Service、Calendar) 并将该表的 id 用作 ObjectId。在事件的情况下,将没有这样的表,这将是空字段。我们称之为伪 FK 列。

2)或者我可以按照理论上的说法使用每个 FK 的多个表。

UserCalendar
UserCalendarId | UserId | Description

UserEvent
UserCalendarId |EventId

UserServices
UserCalendarId|ServiceId

UserNotifications
UserCalendarId |NotificationId
...

这个外部关系表可以是 n 个数字,用于每个系统事件或属于特定类型的任何其他自定义事件

第一个解决方案是快速实现。

最佳答案

我更喜欢第三种解决方案作为您两种设计的组合:

UserCalendar
UserCalendarId | UserId | Description

UserCalendarAttributes
UserCalendarId | ObjectType | ObjectId

通过这种方式,您可以根据需要自由地向日历条目添加任意数量的附加引用(例如事件通知),并且UserCalendar< 之间没有紧密耦合/strong> 表和任何其他表。

如果将 FK 放入您的主 UserCalendar 表中是否有意义,这在一定程度上还取决于您访问额外数据(事件、服务等)的频率。

我建议追求灵 active 而不是性能,尽管您会略微增加架构的复杂性。功能需求发生变化的可能性比您受到性能问题的影响要大。

关于database - 许多 fk 表的一个表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com