powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность в древовидных структурах
34 сообщений из 34, показаны все 2 страниц
Ссылочная целостность в древовидных структурах
    #34121983
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как обеспечить сабж, если оперативная таблица (структура дерева) ссылается на разные справочники? Я ж не могу внешний ключ построить одновременно по нескольким таблицам.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34124054
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZ
....оперативная таблица (структура дерева) ссылается на разные справочники?

Ты думаешь, кто-нибудь представляет твою структуру?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34124201
Ivan A Kostko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZ Я ж не могу внешний ключ построить одновременно по нескольким таблицам.

А что мешает использовать комбинированные ключи(т.е. из нескольких столбцов, один из которых в частности овечает за таблицу к которой цепляется данная запись) ???
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34124545
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А древовидные структуры не пробовали применять ) (ржунимагу)
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34126782
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan A Kostko parovoZZ Я ж не могу внешний ключ построить одновременно по нескольким таблицам.

А что мешает использовать комбинированные ключи(т.е. из нескольких столбцов, один из которых в частности овечает за таблицу к которой цепляется данная запись) ???

А можно здесь поподробнее?
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34126966
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имеется ввиду следующее

Код: plaintext
1.
2.
3.
ID integer,
parent_ID integer,
link_ID integer, /* ссылка на запись в таблице, которая */
table integer, /* определяется этим полем*/

В принципе, можно в оперативной таблице создать для каждого справочника своё поле.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34128515
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, тебе ссылку на КАЖДУЮ табличку хранить? Те, на которые ссылки нет -
будут Null содержать.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34129335
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mv
Может, тебе ссылку на КАЖДУЮ табличку хранить? Те, на которые ссылки нет -
будут Null содержать.
-1
5000 сообщений и такое написать...
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34129410
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиолетовым - твои справочники
желтым - дерево
зеленым - базовый системный объект от которого наследуются сущности(в данном случае твои справочники). Наследование реализуется в виде связи 1-к-1 (почитай, поищи по форуму - неоднократно обсуждалось).
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34130491
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Деревья отдельно, каталог 'всего' отдельно.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34131658
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёрт, поиск не работает. Сервак что ли перегружен?

Я дурак или как. Мне не понятно, как в зелёной таблице указать, что запись ссылается на какую-то из фиолетовых таблиц, пусть даже и один-к-одному? Грубо говоря есть объект. У него есть адрес, телефон и т.д. Это одна таблица. Есть системы на этих объектах - телевидение, освещение и т.д. Это другая. Ну и т.д. Как отделить мух от котлет в одном поле?
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34131721
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZЯ дурак или как. Мне не понятно, как в зелёной таблице указать, что запись ссылается на какую-то из фиолетовых таблиц, пусть даже и один-к-одному? Грубо говоря есть объект. У него есть адрес, телефон и т.д. Это одна таблица. Есть системы на этих объектах - телевидение, освещение и т.д. Это другая. Ну и т.д. Как отделить мух от котлет в одном поле?
Зеленая таблица ни на что не ссылается. (Направления внешних ключей видны по направлениям стрелок :) ).
Ссылки объектов друг на друга (отношения ID-ParentID) определены в желтой таблице.
В этой таблице как ID, так и ParentID ссылаются на зеленую таблицу.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34131729
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34132109
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хорошо. Я нашёл из зелёной таблицы ID и Name. Но как мне теперь определить, к какой сущности относится эта запись? Это объект, система (см. выше) или что-то другое?
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34132507
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZНу хорошо. Я нашёл из зелёной таблицы ID и Name. Но как мне теперь определить, к какой сущности относится эта запись? Это объект, система (см. выше) или что-то другое? Вопрос который вы задали на самом деле ключевой в подобного рода схемах. Немного переусердствовав можно получить таблицу-мусорник, где есть все, но понять что обозначает каждая строка невозможно.

Дзен состоит в том, что такой вопрос и задавать не нужно :)

Вам была нужна ссылочная целостность - схема Романа ее обеспечивает. Если ваша СУБД не поддерживает FK на view, предложеный вариант это лучшее, что вы можете сделать.
Альтернатива - триггера или какие-то иные внешние проверки.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34132930
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZНо как мне теперь определить, к какой сущности относится эта запись?
Обычно в "системный объект" вводят поле ObjectType, но оно используется исключительно как метаинформация для среднего звена(клиента) и в реализации ссылочной целостности роли не играет.
Например, сценарий может быть таким:
1.На клиенте в дереве кликаем на какой то узел дерева
2.Получаем ObjectType узла.
3.По ObjectType понимаем какую форму нужно открыть для редактирования и какую хп вызвать для получения данных.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34133122
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник parovoZZНо как мне теперь определить, к какой сущности относится эта запись?
Обычно в "системный объект" вводят поле ObjectType, но оно используется исключительно как метаинформация для среднего звена(клиента) и в реализации ссылочной целостности роли не играет.
Например, сценарий может быть таким:
1.На клиенте в дереве кликаем на какой то узел дерева
2.Получаем ObjectType узла.
3.По ObjectType понимаем какую форму нужно открыть для редактирования и какую хп вызвать для получения данных.ещё пол-шага и EAV у системного объекта?
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34134342
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ещё пол-шага и EAV у системного объекта?
Что такое EAV?
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34134363
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>>EAV
нашел.
Нет, здесь как раз таки без схемы "универсального каталога".
EAV подойдет когда на стадии проектирования нельзя определить все сущности и их атрибуты.
Так же подойдет в качестве реализации так называемых расширенных атрибутов.
Но если на стадии проектирования все сущности и их атрибуты известны, EAV не нужен.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34134370
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все сущности и все аттрибуты не могут быть сразу известны в приципе, если проектируется система с предметной областью более 1 журнала.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34134869
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, а чем плоха схема "на каждый справочник своё поле в оперативной таблице"? В неиспользуемых ссылках будет 0 или 1.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34135009
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КВсе сущности и все аттрибуты не могут быть сразу известны в приципе, если проектируется система с предметной областью более 1 журнала.
Конкретизирую: известны при проектировании на стадии очередного цикла разработки.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34135016
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZНу, а чем плоха схема "на каждый справочник своё поле в оперативной таблице"? В неиспользуемых ссылках будет 0 или 1.
Не понимаю (если только речь не идет о "модели Тенцера", она же EAV, она же универсальный каталог), нарисуй.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34135022
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник mv
Может, тебе ссылку на КАЖДУЮ табличку хранить? Те, на которые ссылки нет -
будут Null содержать.
-1
5000 сообщений и такое написать...
:) новый критерий оценки бумагомарания придуман - количество сообщений. Браво!
Иногда такое прочитаешь...
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34135583
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник Валентин КВсе сущности и все аттрибуты не могут быть сразу известны в приципе, если проектируется система с предметной областью более 1 журнала.
Конкретизирую: известны при проектировании на стадии очередного цикла разработки.
дык, хоть горшком обзови.
На стадии очередного цикла у листа дерева - записано:

Сущность :
Паровоз

Атрибуты :
- Длинна
- Ширина

Спроектировали систему. Заказчик хочет жлбавить атрибут - Цена.
Вот тебе и EAV нужен, чтобы не перепроетировать опять сначала (или DDL не делать)
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34136352
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник parovoZZНу, а чем плоха схема "на каждый справочник своё поле в оперативной таблице"? В неиспользуемых ссылках будет 0 или 1.
Не понимаю (если только речь не идет о "модели Тенцера", она же EAV, она же универсальный каталог), нарисуй.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Create table test1; /*справочники*/
{}

Create table test2;
{}

Create table System

ID integer,
link_ID_test1 integer, /*ссылка на таблицу test1, FK*/
link_ID_test2 integer; /* ссылка на таблицу test2, FK*/
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34137106
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ничем не плоха, кроме того что нет наследования в РСУБД (а зачем ОНО вообще в РСУБД?)
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34148868
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123кроме того что нет наследования в РСУБД (а зачем ОНО вообще в РСУБД?)
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
наследование при проектировании РСУБД есть, правда не в таком виде как мы его привыкли воспринимать в языках программирования. ...И оно реально необходимо.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34148880
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZ
Ну, а чем плоха схема "на каждый справочник своё поле в оперативной таблице
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Create table test1; /*справочники*/
{}

Create table test2;
{}

Create table System

ID integer,
link_ID_test1 integer, /*ссылка на таблицу test1, FK*/
link_ID_test2 integer; /* ссылка на таблицу test2, FK*/

плоха своей избыточностью.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34154949
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123дык, хоть горшком обзови.
На стадии очередного цикла у листа дерева - записано:

Сущность :
Паровоз

Атрибуты :
- Длинна
- Ширина

Спроектировали систему. Заказчик хочет жлбавить атрибут - Цена.
Вот тебе и EAV нужен, чтобы не перепроетировать опять сначала (или DDL не делать)
Смотря какая система.
Предположим каталог товаров, тогда для приведенного примера, я бы сказал допущена ошибка проектирования. Не выделена базовая сущность товар с атрибутами наименование, цена...
а вот длина, ширина - возможно и пойдут в расширенные атрибуты (в EAV).
В последствии, в новых циклах разработки, очень часто EAV-атрибуты и сущности качуют в "нормальную" реляционную схему с наследованием на 1-к-1, если в этом есть разумное зерно и эти атрибуты поддаются обобщению.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34155214
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман ДынникВ последствии, в новых циклах разработки, очень часто EAV-атрибуты и сущности качуют в "нормальную" реляционную схему с наследованием на 1-к-1
Здесь есть одно НО - программы для совместной работы с EAV и "нормальной" реляционной схемой сложнее, чем просто чистый EAV.
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34155576
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parovoZZА как обеспечить сабж, если оперативная таблица (структура дерева) ссылается на разные справочники? Я ж не могу внешний ключ построить одновременно по нескольким таблицам.
А дерево + категоризация не подойдет?
Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Категории
--
Код категории (ПК)
Категория

Дерево
--
Код элемента (ПК)
Код предка элемента (ВК)
Код категории (ВК)

Категория1
--
Код элемента (ПК, ВК)
Код из первого справочника (ВК)

Категория2
--
Код элемента (ПК, ВК)
Код из второго справочника (ВК)

Категория3
--
Код элемента (ПК, ВК)
Код из первого справочника (ВК)
Код из третьего справочника (ВК)
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34155766
Hey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как раз пару дней назад озадачился похожим вопросом. Есть одна главная таблица, содержащая список ID и один общий для всех параметр.

Код: plaintext
Create table mainTable (ID int, note varchar( 100 ))

Далее, есть три таблицы, содержащие ID и некоторые другие специфичные параметры

Код: plaintext
1.
2.
Create table subTable1 (ID int, height float, width float)
Create table subTable2 (ID int, price float)
Create table subTable3 (ID int, name varchar( 100 ), isAvailable bit)

ID в этих таблицах должны входить в главную таблицу. Теперь требуется, что-бы по указанному ID запрос возвращал данные как из главной таблицы, так и из соответствующей подчиненной. Т.е. например для ID = 6 вернулась таблица

Код: plaintext
ID | note | height | width

а для ID = 458 запрос вернул

Код: plaintext
ID | note | name | isAvailable

Я пока думаю, что ссылочную целостность можно проверять триггерами, а сам запрос завернуть в ХП, которая ищет ID в подчиненных таблицах, и делает соответствующий запрос к той таблице, где нашелся искомый ID. Т.е.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if exists(select * from subTable1 where ID = @ID)
 begin  
  select * from mainTable a join subTable1 b on a.ID = b.ID
 end
else exists(select * from subTable2 where ID = @ID)
 begin  
  select * from mainTable a join subTable2 b on a.ID = b.ID
 end
else if exists(select * from subTable3 where ID = @ID)
 begin  
  select * from mainTable a join subTable3 b on a.ID = b.ID
 end
else raiserror('Запись отсутствует',  18 ,  1 )

Насколько это близко/далеко от того, как это делается по науке ?
...
Рейтинг: 0 / 0
Ссылочная целостность в древовидных структурах
    #34156679
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модЗдесь есть одно НО - программы для совместной работы с EAV и "нормальной" реляционной схемой сложнее, чем просто чистый EAV.
Я бы не сказал что они намного сложнее, а для поддержки даже проще, просто EAV идет в них как механизм расширения.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность в древовидных структурах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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