Эффективный опрос отношений между родителями и детьми - PullRequest
1 голос
/ 11 ноября 2009

Предполагается, что у вас есть следующая таблица базы данных:

 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

Это позволяет определять иерархические имена. Каждое имя может иметь одно родительское имя и любое количество дочерних имен.

Я хочу найти запись, соответствующую определенному имени, например, "a: b: c", где двоеточия ограничивают каждое имя. В настоящее время я сделал это, используя соединения:

 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

Мне интересно, есть ли более эффективный способ сделать это, не включающий денормализацию данных или жесткую зависимость от какой-либо конкретной СУБД.

Спасибо

1 Ответ

1 голос
/ 11 ноября 2009

Вы можете прочитать это: http://www.developersdex.com/gurus/articles/112.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...