powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность в древовидных структурах
9 сообщений из 34, страница 2 из 2
Ссылочная целостность в древовидных структурах
    #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
9 сообщений из 34, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность в древовидных структурах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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