Tenho somente o sql que cria as tabelas. Existe alguma forma de analisar se existe relacionamento N:N ?
Obrigado, Marcos
Tenho somente o sql que cria as tabelas. Existe alguma forma de analisar se existe relacionamento N:N ?
Obrigado, Marcos
Olá Marcos, tudo bom?
Existe sim! Você pode procurar por uma tabela que tenha referência para duas outras tabelas sem restrições de unicidade pra nenhuma delas individualmente. Exemplo de modelagem:
+---------------+  +---------------+  +---------------+
| Author        |  | Book          |  | BookAuthors   |
+---------------+  +---------------+  +---------------+
| id        UNQ |  | id        UNQ |  | id        UNQ |
| name          |  | title     UNQ |  | author_id  FK |
+---------------+  +---------------+  | book_id    FK |
                                      +---------------+
# UNQ: chave única, não é permitida outra tupla na mesma tabela com o mesmo valor nesta coluna
#  FK: chave estrangeira, referencia outra tabela
As chaves estrangeiras author_id e book_id não podem ter restrição individual, ou seja: supondo que a tabela já tenha a seguinte entrada
+-----------------------------------+
| BookAuthors                       |
+-----------------------------------+
| id        | author_id | book_id   |
+-----------------------------------+
| 1         | 1001      | 2001      |
+-----------------------------------+
é importante que as duas operações a seguir sejam permitidas
INSERT INTO BookAuthors (author_id, book_id) VALUES (1001, 2222);
# pois o mesmo autor pode ter diversos livros publicados
INSERT INTO BookAuthors (author_id, book_id) VALUES (1111, 2001);
# pois o mesmo livro pode ter diversos autores
Agora, pode existir uma restrição conjunta (não pode haver duas entradas com ambas as chaves iguais), mas ela não é obrigatória. A operação a seguir pode ou não ser permitida.
INSERT INTO BookAuthors (author_id, book_id) VALUES (1001, 2001);
# pois o autor 1001 já é autor do livro 2001
Se encontrar uma tabela que tenha essa característica, provavelmente é um relacionamento N:N.
Muito obrigado Marco Salles, resolveu minha dúvida. Valeu!