可以说我有书和人。一个人可以写很多本书,一本书可以由很多人写。一个人读过很多书,一本书被很多人读过。
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 个表。但是,感觉团队角色之间的联系比“阅读/撰写”关系更紧密?