对于这种情况,最好的解决方案/做法是什么?
我有一个表,可以引用多个表(对象)?
以下是 UserCalendar 表的示例。这是一个用户保存事件的表,但系统也从后面插入到该表中。用户执行一些有截止日期的服务,这些服务也被插入到该表中。问题是没有 UserEvent 表这样的表。用户应将其所有事件保存在此日历中作为描述。我应该让这件事尽可能简单。
我可以用两种方式设计。
1)
用户日历
用户日历 ID |用户 ID |描述 |对象类型 |对象ID
使用这个选项我就不必 FK 这个表了。我只能更改 ObjectType(通知、服务、日历)并使用该表的 id 作为 ObjectId。如果是事件,则不会有这样的表,并且该字段将为空字段。
我们称此为伪 FK 列。
2)
或者我可以按照理论上的说法为每个 FK 使用多个表。
用户日历
用户日历 ID |用户 ID |描述
用户事件
用户日历 ID |事件 ID
用户服务
用户日历 ID|服务 ID
用户通知
UserCalendarId |NotificationId
...
对于每个系统事件或属于特定类型的任何其他自定义事件,该外部关系表可以是 n 个数字
第一个解决方案是快速实施。
我更喜欢第三种解决方案作为两种设计的混合:
用户日历
用户日历 ID |用户 ID |描述
用户日历属性
用户日历 ID |对象类型 |对象ID
这样,您就可以根据需要向日历条目添加任意数量的附加引用(例如事件and通知)并且您之间没有紧密耦合用户日历表和任何其他表。
它还取决于您访问附加数据(事件、服务等)的频率(如果将 FK 放在您的主目录中有意义)用户日历 table.
我建议去灵活性多于表现,尽管你会稍微增加复杂你的架构。功能需求发生变化的可能性比您遇到性能问题的可能性更大。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)