Os dados
Digamos que eu tenha uma grade representando todas as pessoas em uma sala e as conversas que elas têm quando falam entre si.
John | Susana | Brian | Rachel | |
---|---|---|---|---|
John | Resseguro | Trabalhar | Esportes | Filmes |
Susana | Trabalhar | Resmungando | Viagem | Música |
Brian | Esportes | Viagem | Nada | Comida |
Rachel | Filmes | Música | Comida | Auto-depreciativo |
O banco de dados
Inicialmente considerei apenas fazer tabelas regulares de People
eConversations
A Conversations
mesa seria uma chave etopic
participant1
participant2
O dilema
A ordem dos participantes é totalmente irrelevante. Uma simples pergunta “Sobre o que Rachel e Brian conversam” torna-se uma consulta complicada de executar.
Portanto, uma de duas coisas deve ser feita:
- Dados redundantes são adicionados ao banco de dados: (Rachel e Brian) ou (Brian e Rachel)
- Uma consulta ridiculamente complicada é necessária para consultar os dados não redundantes porque você não sabe se Rachel é participante1 ou participante2.
Seguir com 1 acima cria um modelo de banco de dados O (n ^ 2) insustentável, enquanto 2 parece um pesadelo de DBA tentando consultar dados significativos.
A questão
Como faço para modelar uma estrutura de dados como esta? O SQL é a ferramenta certa para o trabalho ou devo pesquisar algo totalmente diferente?