powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Третья нормальная форма
9 сообщений из 9, страница 1 из 1
Третья нормальная форма
    #32000302
Vasily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рекурсивная связь в таблице нарушает третью нормальную форму или нет?
...
Рейтинг: 0 / 0
Третья нормальная форма
    #32000304
Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное, имееются в виду иерархические цепочки?
По идее, поля входящие в рекурсивную ссылку должны выделяться в отдельную сущность. Иначе, определение 3 н.ф. нарушается (зависимость от ключа).
...
Рейтинг: 0 / 0
Третья нормальная форма
    #32000305
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как это, интересно, нарушается зависимость от ключа??? Как раз-таки если одним из атрибутов будет рекурсивная ссылка, то значение этого атрибута в случае бинарного дерева будет зависеть только от ключа этой записи. Так что в случае иерархической цепочки с нормализацией все будет нормально. А вот если есть произвольный граф, то уже надо выделять отдельную сущность для всех связок. Так что говорить абстрактно о том, нарушает ли рекурсия третью нормальную форму, нельзя.
...
Рейтинг: 0 / 0
Третья нормальная форма
    #32000409
Basele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если дан произвольный граф, который хранится в двух таблицах: в одной хранятся номера узлов, а во второй описаны связи между ними (2 поля, первое хранит номер узла, второе, номер узла предка), как составить запрос, чтобы
он возвращал список всех узлов предков для заданного узла (не только родителей, а вообще всех узлов предков, стоющих по иерархии выше заданного?
(предположительно в графе нет циклов и ссылок узлов самих на себя)
...
Рейтинг: 0 / 0
Третья нормальная форма
    #32000412
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я долго думал над этой проблеммой и пришел к выводу, что это теоритически невозможно. Но доказать не могу. Руссуждения у меня примерно такие: чтобы вывести дерево, мы должны установить переменное число связей, чего в селекте сделать нельзя.

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


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