假设我有“书籍”和“人物”。一个人可以创作很多书,一本书可以由很多人创作。一个人读过很多书,一本书被很多人阅读过。
如果您使用单独的表格,那么至少需要4个表格。但是,团队角色似乎比“阅读/撰写”关系更相互关联?
Person Book
------ -----
personId bookId
我可以使用两个关系表:
has_read has_authored
-------- ------------
personId, bookId personId, bookId
选项一:
person_book_relation
--------------------
personId, bookId, relationType ("read", "authored")
另一个例子可能是Actor和Event之间的某种订阅者/发布者关系。
有没有选择哪个的指导方针?
如果有更多类型的关系,这会改变你的解决方案吗?
一个团队有很多人扮演不同的角色。一个人可以在很多个团队中。 (这只是举个例子)
Team_Person_relation
--------------------
TeamId, PersonId, Role ('Defender', 'Attacker', 'Goalkeeper', 'Midfielder'... etc)
如果您使用单独的表格,那么至少需要4个表格。但是,团队角色似乎比“阅读/撰写”关系更相互关联?
Person(人)
,Book(书)
,Action(动作)
,PersonBookAction(人-书-动作)
。 - Kermit