我一直遇到这个设计问题,到目前为止我对我的解决方案并不满意。问题是这样的:
我有两个或多个实体,例如 People 和 Dogs,它们都与 Notes 表有关系,该表存储消息字段和有关消息的一些元数据,例如作者。
1)第一个选项是不强制执行外键。这样,我可以将诸如 peopleId 或 dogId(无论它是什么)之类的 FK 存储在与 fkId 相同的通用 FK 字段中。然后我将 tableId 存储在另一列中——希望从 RDMS 元数据中获取表 id,但你也可能有一个肮脏的 hack 并明确地制作一个充满你必须手动更新的表的表. 这真的很草率,我只是为了完整性而提到它。
2) 为每个需要它的表克隆 Notes 表,例如 PeopleNotes、DogNotes、CatNotes 等。这会产生一个相当大的规范化问题。
其他人在这种情况下做了什么?