Também fiz esta pergunta no Stack Overflow (desculpas se isso for uma violação de protocolo).
Estou migrando um banco de dados MS Access para MS SQL Server, onde irei mantê-lo usando SQL Server Management Studio (SSMS).
O banco de dados Access possui um relacionamento que conecta duas instâncias da mesma tabela por meio de uma tabela intermediária, conforme indicado pelo diagrama de relacionamento de acesso a seguir.
Este relacionamento de entidade permite a representação da estrutura da organização.
O Access permite criar o relacionamento acima usando arrastar e soltar e adicionar automaticamente o sufixo _1 para distinguir a instância adicionada.
O SQL é:
SELECT [T-Organisation].[Organisation Unit Id],
[T-Organisation].[Organisation UnitName],
[T-Organisation_1].[Organisation Unit Id],
[T-Organisation_1].[Organisation UnitName]
FROM ([T-Organisation]
INNER JOIN [T-OrganisationSubsidiary] ON
[T-Organisation].[Organisation Unit Id] = [T-OrganisationSubsidiary].[Parent Organisation Unit])
INNER JOIN [T-Organisation] AS [T-Organisation_1] ON
[T-OrganisationSubsidiary].[Subsidiary Organisation Unit] = [T-Organisation_1].[Organisation Unit Id];
A menos que esteja faltando alguma coisa, o SSMS não me permite adicionar (arrastar e soltar) cópias de tabelas ao Diagrama de Relacionamento como o Access faz. Isso significa que preciso criar uma cópia física da tabela T-Organisation e nomeá-la manualmente, por exemplo, T-Organisation_1 ou existe uma solução melhor?
Se por Diagrama de Relacionamento você quer dizer o recurso Diagrama de Banco de Dados no SSMS, então correto, você não pode adicionar a mesma tabela duas vezes. Isso também é verdade em um diagrama lógico de relacionamento entre entidades; não se adiciona a mesma tabela duas vezes a esse diagrama. O Microsoft Access é único nesse aspecto, para ajudar a escrever o SQL para você.
Quero dizer, você poderia fazer isso, mas seria uma coisa boba de se fazer, apenas para fazer o visual funcionar . Isso faria com que você tivesse que manter os mesmos dados em duas tabelas, o que é um design antipadrão/ruim. A maioria das pessoas nem usa o recurso Diagrama de Banco de Dados.
Não use o recurso Diagrama de Banco de Dados e não crie uma cópia da tabela. Crie uma View para armazenar a consulta que relaciona a tabela a si mesma. Esta é essencialmente a consulta que você forneceu no Microsoft Access, onde
T-Organisation
junções internas comT-OrganisationSubsidiary
junções internasT-Organisation
novamente.Para referência futura, isso é chamado de postagem dupla e normalmente não é permitido. Você provavelmente deveria fechar a instância da pergunta no StackOverflow. Perguntas sobre banco de dados geralmente são mais adequadas aqui (DBA.StackExchange), onde mais perguntas orientadas à programação vão no StackOverflow.