Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Третья нормальная форма / 9 сообщений из 9, страница 1 из 1
28.09.2000, 08:12
    #32000302
Vasily
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
Рекурсивная связь в таблице нарушает третью нормальную форму или нет?
...
Рейтинг: 0 / 0
28.09.2000, 15:24
    #32000304
Evgeny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
Наверное, имееются в виду иерархические цепочки?
По идее, поля входящие в рекурсивную ссылку должны выделяться в отдельную сущность. Иначе, определение 3 н.ф. нарушается (зависимость от ключа).
...
Рейтинг: 0 / 0
29.09.2000, 05:58
    #32000305
Ольга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
Как это, интересно, нарушается зависимость от ключа??? Как раз-таки если одним из атрибутов будет рекурсивная ссылка, то значение этого атрибута в случае бинарного дерева будет зависеть только от ключа этой записи. Так что в случае иерархической цепочки с нормализацией все будет нормально. А вот если есть произвольный граф, то уже надо выделять отдельную сущность для всех связок. Так что говорить абстрактно о том, нарушает ли рекурсия третью нормальную форму, нельзя.
...
Рейтинг: 0 / 0
11.10.2000, 12:04
    #32000409
Basele
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
А если дан произвольный граф, который хранится в двух таблицах: в одной хранятся номера узлов, а во второй описаны связи между ними (2 поля, первое хранит номер узла, второе, номер узла предка), как составить запрос, чтобы
он возвращал список всех узлов предков для заданного узла (не только родителей, а вообще всех узлов предков, стоющих по иерархии выше заданного?
(предположительно в графе нет циклов и ссылок узлов самих на себя)
...
Рейтинг: 0 / 0
11.10.2000, 12:48
    #32000412
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
Я долго думал над этой проблеммой и пришел к выводу, что это теоритически невозможно. Но доказать не могу. Руссуждения у меня примерно такие: чтобы вывести дерево, мы должны установить переменное число связей, чего в селекте сделать нельзя.

Но как хочется здесь ошибиться! :)
...
Рейтинг: 0 / 0
11.10.2000, 13:22
    #32000414
Vasily
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
Разве что через while с занесением во временную таблицу...
...
Рейтинг: 0 / 0
11.10.2000, 13:35
    #32000416
Ольга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
На самом деле, такая задачка не решается одним select-ом и для иерархического дерева. Если стоит такая задача, то получается, что нормализация - только помеха. Один из способов - плюнуть на теорию и хранить ссылки в виде 12.34.45.58. Тогда операции "сборки предков" будут производиться достаточно быстро и одним select-ом (например, динамически формируемым на клиенте). И вопросы целостности будут целиком зависеть от клиента.
...
Рейтинг: 0 / 0
30.10.2000, 11:09
    #32000583
Semen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
Подобная ссылка, внутри одной таблицы, называется "свинное ухо" (отображение на графиках похоже) и не противоречит третьему уровню нормализации уж точно. По-моему оно не противоречит ни одному из уровней нормализации (5 их или 6 не помню). В Oracle есть специальное расширение PL/SQL для подобных штук. B MS SQL лучше писать хранимую процедуру.
...
Рейтинг: 0 / 0
31.10.2000, 06:31
    #32000585
Ольга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Третья нормальная форма
На самом деле, если быть точным, то есть одно маленькое противоречие - нарушение ссылочной целостности для корневого узла. Ведь у него нет предка, то есть значение в столбце предка будет NULL, а такого узла не существует.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Третья нормальная форма / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]