Consultando relações pai-filho de forma eficiente
-
19-09-2019 - |
Pergunta
Supondo que você tenha o banco de dados tabela seguinte:
create table Names (
Id INT IDENTITY NOT NULL,
Name NVARCHAR(100) not null,
ParentNameId INT null,
primary key (Id)
)
create index IX_Name on Names (Name)
alter table Names
add constraint FK_NameNames
foreign key (ParentNameId)
references Names
Isto permite a definição de nomes hierárquicos. Cada nome pode ter um nome do pai, e qualquer número de nomes de crianças.
Eu gostaria de encontrar o registro que corresponde a um nome qualificado como "a: b: c", onde dois pontos delimitar cada nome. Eu tenho atualmente feito usando junta-se:
select
Id
from
Names names0
inner join Names names1 on names0.ParentNameId = names1.Id
inner join Names names2 on names1.ParentNameId = names2.Id
where
names0.Name = 'a' and
names1.Name = 'b' and
names2.Name = 'c' and
names0.ParentNameId is null
O que eu estou querendo saber é se existe uma maneira mais eficiente de fazer isso que não envolve desnormalização dos dados ou tomar uma dependência duro em qualquer DBMS particulares.
Graças
Solução
Você pode gostar de ler isto: http://www.developersdex.com/ gurus / artigos / 112.asp
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow