![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранение дерева данных в базе [D7]
Shade_ © (2004-05-16 02:33:00)1 Каким образом хранится дерево данных в базе данных?
2 Какой тип таблиц для этого используется?
3 Какой движок БД нужен?
4 За структурой дерева смотрит БД или ручками?
muk07 (2004-05-17 08:38:00) [21]to Ihor Osov'yak :
Представьте себе классификацию товаров. На верхних уровнях - категории, листья - конкретные товары. Я должен знать категория это или товар. Тот факт, что узел - лист еще не означает что это товар. Возможно еще не завершен ввод ветви дерева.
Ihor Osov'yak (2004-05-17 02:57:00) [22]2 [4] Petr V. Abramov © (17.05.04 02:39)
Ну почему же? Выборка на тему - "если ли детки" будет выполнятся быстро - поле все же индексированное. Если все же вопрос в быстродействии - я бы все же дал предпочтение непротиворечивой структуре и отсутствием соотв. геморою по сравнению с сомнительным выиграшем в быстродействии. В крайнем слцчае просто бы сделал вычисляемое поле, или работал бы через View, там, где такое поля якобы бы нужно.
Если же нужно некий флаг, говорящий "деток быть не должно" - имя поля следовало дать бы по другому, чтобы вопросов не возникало, например - disableChild.. Или что-то в этом роде. В английском я не очень, возможно есть более красивые варианты наименований..
Petr V. Abramov (2004-05-17 02:39:00) [23]Ihor Osov'yak © (17.05.04 02:04) [3]
IMHO, не всегда :)
Ihor Osov'yak (2004-05-17 02:04:00) [24]2 muk07
Имхо, bit IsLeaf - лишнее.
muk07 (2004-05-16 07:53:00) [25]1)Пример - классификация.
в нотации Transact SQL:
create table Tree(
Self_ID identity(1,1) primary key, -- собственнный ключ
Parent_ID int null foreign key references Tree(Self_ID), -- ссылка на родительскую запись. null - потому что корень не имеет родителя
bit IsLeaf, -- запись является листом - дальше дерево не ветвится
Info <любой тип> -- прочие данные
)
2)типе таблиц вопрос непонятен - обычная таблица
3)Что такое движок? СУБД - любая
4)Тоже непонятно - что значит "смотреть за структурой"
3) В приведенном примере СУ
muk07 (2004-05-16 07:53:00) [26]1)Пример - классификация.
в нотации Transact SQL:
create table Tree(
Self_ID identity(1,1) primary key, -- собственнный ключ
Parent_ID int null foreign key references Tree(Self_ID), -- ссылка на родительскую запись. null - потому что корень не имеет родителя
bit IsLeaf, -- запись является листом - дальше дерево не ветвится
Info <любой тип> -- прочие данные
)
2)типе таблиц вопрос непонятен - обычная таблица
3)Что такое движок? СУБД - любая
4)Тоже непонятно - что значит "смотреть за структурой"
3) В приведенном примере СУ