Связи объектов
От: Chardex Россия  
Дата: 20.07.04 05:32
Оценка:
Доброе утро
Посоветуйте пожалуйста как лучше хранить связи между объектами, при том что у каждого объекта может быть сколько угодно родительских объектов и сколько угодно дочерних объектов. Пока я только придумал создать отдельную таблицу с двумя калонками (что — нить типа p_ip и c_id ) где хранить в первом столбце id объекта, а во втором id дочернего объекта, т.е. для объекта с двумя дочерними объектами получется две строки. Все дочерние объекты вытягивать по первой колонке, а родителей всех — по второй. Мне кажется, что мое решение не совсем правильное, помогите пожалуйста разобраться
Re: Связи объектов
От: Softwarer http://softwarer.ru
Дата: 20.07.04 06:23
Оценка:
Здравствуйте, Chardex, Вы писали:

C> Мне кажется, что мое решение не совсем правильное, помогите пожалуйста разобраться


Вполне правильное решение, называется — связь многие ко многим. Как правило, навешивается ограничение уникальности на комбинацию полей (чтобы между двумя узлами не было двух связей); в принципе также можно на триггере проверять отсутствие циклов. Кроме того, в таблицу можно добавить еще поля — это будут атрибуты связи.

Можно нагородить и другие решения, но именно это — вариант "по умолчанию".
Re[2]: Связи объектов
От: Chardex Россия  
Дата: 20.07.04 06:28
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, Chardex, Вы писали:


C>> Мне кажется, что мое решение не совсем правильное, помогите пожалуйста разобраться


S>Вполне правильное решение, называется — связь многие ко многим. Как правило, навешивается ограничение уникальности на комбинацию полей (чтобы между двумя узлами не было двух связей); в принципе также можно на триггере проверять отсутствие циклов. Кроме того, в таблицу можно добавить еще поля — это будут атрибуты связи.

А для чего нужны эти атрибуты связи?

S>Можно нагородить и другие решения, но именно это — вариант "по умолчанию".

А каков наилучший, или даеже еще лучше, наибыстрый? // просто будет очень много объектов...
Re[3]: Связи объектов
От: Softwarer http://softwarer.ru
Дата: 20.07.04 06:46
Оценка:
Здравствуйте, Chardex, Вы писали:

C>А для чего нужны эти атрибуты связи?


Хм. Они просто объективно могут понадобиться — для самых разных задач. К примеру, если мы рассматриваем сущность "боксеры", атрибутами связи будут дата боя и результат.

S>>Можно нагородить и другие решения, но именно это — вариант "по умолчанию".

C>А каков наилучший, или даеже еще лучше, наибыстрый? // просто будет очень много объектов...

Поиск наибыстрейшего решения невозможно осуществлять в отрыве от конкретной задачи и конкретного сервера. К примеру, для задачи "быстро найти всех потомков данной записи, у кого нет собственных потомков" этой структуры скорее всего не хватит.
Re[4]: Связи объектов
От: Chardex Россия  
Дата: 20.07.04 06:54
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Поиск наибыстрейшего решения невозможно осуществлять в отрыве от конкретной задачи и конкретного сервера. К примеру, для задачи "быстро найти всех потомков данной записи, у кого нет собственных потомков" этой структуры скорее всего не хватит.

Сервер MS SQL 2000 ( скорее всего вскором — Yukon ). А задача простая, найти все дочерние, или родительские объекты. Интересует максимально быстрое решение именно для этой задачи.
Заранее спасибо
Re[5]: Связи объектов
От: Softwarer http://softwarer.ru
Дата: 20.07.04 07:19
Оценка:
Здравствуйте, Chardex, Вы писали:

C>Сервер MS SQL 2000 ( скорее всего вскором — Yukon ). А задача простая, найти все дочерние, или родительские объекты. Интересует максимально быстрое решение именно для этой задачи.


Хм. Полагаю, с этим запросом такая структура справится без проблем. Надо только посмотреть оптимальный вариант индексов — то ли индексы по каждому из этих полей, то ли два кластерных индекса для комбинации полей в том/другом порядке.. Это уже надо спрашивать у спецов по MS SQL или смотреть на реальном объеме данных.
Re[6]: Связи объектов
От: Chardex Россия  
Дата: 20.07.04 07:24
Оценка:
S>Хм. Полагаю, с этим запросом такая структура справится без проблем. Надо только посмотреть оптимальный вариант индексов — то ли индексы по каждому из этих полей, то ли два кластерных индекса для комбинации полей в том/другом порядке.. Это уже надо спрашивать у спецов по MS SQL или смотреть на реальном объеме данных.
Спецы MS SQL, подскажите пожалуйста
Re[7]: Связи объектов
От: Satrapp Россия  
Дата: 20.07.04 07:40
Оценка:
Здравствуйте, Chardex, Вы писали:

S>>Хм. Полагаю, с этим запросом такая структура справится без проблем. Надо только посмотреть оптимальный вариант индексов — то ли индексы по каждому из этих полей, то ли два кластерных индекса для комбинации полей в том/другом порядке.. Это уже надо спрашивать у спецов по MS SQL или смотреть на реальном объеме данных.

C>Спецы MS SQL, подскажите пожалуйста

RTFM BOL: SHOWPLAN

кратенько про индексы можно почитать, например, здесь
... << Rsdn@Home 1.1.4 beta 1 >> В winamp'е зажигает Anya
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.