Digamos que temos as seguintes tabelas:
user
team
meeting
Tanto a team
quanto a meeting
podem ter múltiplos users
(relação de 1 para muitos).
Qual é a melhor maneira de modelar essa estrutura de banco de dados?
Opção 1:
1 tabela de junção para os relacionamentos team-user
e meeting-user
:
colunas: user_id
, team_id
, meeting_id
linhas de exemplo:
1, 3, null
1, null, 4
Opção 2:
2 tabelas de junção, uma para o relacionamento team-user
e outra para o meeting-user
relacionamento
colunas tabela 1: user_id
, team_id
linha de exemplo:1, 3
colunas tabela 2: user_id
, meeting_id
linhas de exemplo:1, 4
Opção 2
team-user
emeeting-user
como tabelas separadas. Isso lhe dará mais flexibilidade para mais casos de uso, por exemplo, se nem todosusers
os mesmosteam
atenderem a ummeeting
.Na opção 1, você não seria capaz de determinar quem são todos
users
seteam
tal caso acontecesse. Com a opção 2, você poderá ver facilmente quem são todosusers
elesteam
, independentemente de sua participação em ummeeting
.Mesas separadas, finalidades diferentes, mais flexibilidade, melhor design.