|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.06.2013, 12:31 | #1 |
Регистрация: 24.06.2012
Сообщений: 9
|
Организация дерева в MSSQL
Нужно хранить большие объемы данных (миллионы записей). Логично, что структуру в виде например Б-дерева нужно организовать не на c#, а внутри БД. Поля в записях БД будут например такие: код объекта (как ключ), название объекта (как данные), указатель на родителя, указатель на _что-то_еще? Если я использую Б-дерево, то потомков можно быть приличное число.
Методы поиск/изменение/удаление узлов организовать как хранимые процедуры. А из формы просто их вызывать. Правильно ли я понимаю суть вообще? |
29.06.2013, 13:04 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
29.06.2013, 13:56 | #3 | |
Регистрация: 24.06.2012
Сообщений: 9
|
Цитата:
Задача в принципе является классической, должны же быть хоть какие-то примеры. А я нахожу лишь примеры на с# для организации дерева в оперативной памяти, и общие представления о том, как это делается в sql. |
|
29.06.2013, 14:18 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
в sql нет понятия дерева, вы просто должны обеспечить связи между записями.
а именно, хранить ид родителя, тогда все предки родителя найдутся через select * from table where parentid=<id> и так далее. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.06.2013, 14:32 | #5 |
Регистрация: 24.06.2012
Сообщений: 9
|
Ага, значит указатели на потомка не храним. Нубский вопрос: существую ли указатели в SQL в приниципе? Или использовать родительский ключ?
|
29.06.2013, 14:36 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ключ по сути и есть указатель.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.06.2013, 14:39 | #7 |
Регистрация: 24.06.2012
Сообщений: 9
|
|
29.06.2013, 17:56 | #8 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
А вот чтиво: http://club.shelek.ru/viewart.php?id=306 http://citforum.ru/database/articles/tsql_mssql/#ERHA
I'm learning to live...
|
||
30.06.2013, 12:48 | #9 | |
Регистрация: 24.06.2012
Сообщений: 9
|
Цитата:
Вот еще момент. Имеет ли смысл вообще хранение данных в таком виде: ключом является "код объекта", (см. рисунок 1) Ведь например для поиска по названию автомобиля придется перебирать всю структуру и теряется сама суть дерева. Может стоит вычислять например хэш от названия и его применять в качестве ключа? В примерах встречаю организацию дерева как действительной иерархии (шкаф->полка шкафа-> книга) Но никто не хранит однотипные данные иерархически как в рисунке 2. Я опять не верно понимаю суть? |
|
30.06.2013, 14:08 | #10 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Цитата:
I'm learning to live...
|
|||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
MSSQL | Xe-Xe | SQL, базы данных | 4 | 31.10.2011 15:39 |
Флажок + MsSql | FanRammstein | Microsoft Office Access | 3 | 20.07.2011 16:27 |
MSSQL- сложно!!!! | 8oOoRPM | Фриланс | 1 | 21.05.2011 20:36 |
C# + MSSQL | dampirik | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 3 | 17.12.2009 01:40 |
mssql + с# | dampirik | SQL, базы данных | 1 | 14.12.2009 19:03 |