powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как избавиться от кольца в БД?
14 сообщений из 14, страница 1 из 1
Как избавиться от кольца в БД?
    #39147068
wikkk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. При проектировании БД встал вопрос как избавиться от образовавшегося "кольца".

Подробное описание:
Допустим, таблица "Объект" (см. картинку) будет содержать разные объекты. Под объектом имеется в виду конкретный вариант из множества: гараж, квартира, дача.
У них имеются разные атрибуты: площадь, этаж, количество комнат - если это квартира; площадь участка, фундамент, туалет - если это дача.

Идея: вынести в таблицы - по причине имеющихся совершенно разных атрибутов у разных типов объекта (например, у гаража не будет атрибута "площадь кухни", "количество комнат", сколько соток, имеется ли баня в наличии, туалет и т.д.

Таким образом добавим к таблице "Объект" FK на "Тип" объекта. Таблица "Тип" связана связью многим-ко-многим с таблицей "Атрибуты". Так мы можем узнать какие атрибуты есть у конкретного объекта (иначе говоря - какие атрибуты разрешены для конкретного типа объекта).
Ну и таблица "Значение атрибута" ссылается как на объекты, так и на атрибуты и содержит значение конкретного атрибута какого-либо объекта (например, "Площадь: 40".

Вопрос - как избавиться от круговой связи (кольца), чтобы при удалении записи не возникало ошибок?
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39147080
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не кольцо, ибо связи не направлены по кругу. Удаление можно начать с таблицы значений атрибутов.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39147551
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftЭто не кольцо, ибо связи не направлены по кругу. Удаление можно начать с таблицы значений атрибутов.

Именно, не кольцо. Поставь стрелочки на связах и увидишь.
Проблема на 100% надумана.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39147671
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wikkkПри проектировании БД встал вопрос как избавиться от образовавшегося "кольца"
Ответ: при проектировании БД такой вопрос вставать не должен. От колец избавляться незачем, даже если это действительно кольца.

wikkkВопрос - как избавиться от круговой связи (кольца), чтобы при удалении записи не возникало ошибок?
Какой записи? Как только ответите на этот вопрос, поймёте, что не можете ответить на вопрос "каких ошибок?"

Любой набор строк, который можно вставить в некоей конкретной СУБД, можно и удалить в той же СУБД. Готов доказать это утверждение как теорему. Единственно, если вставка выполняется с извратами, удаление может потребовать прокрутить сторнирующие извраты в обратном порядке.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148151
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЛюбой набор строк, который можно вставить в некоей конкретной СУБД, можно и удалить в той же СУБД. Готов доказать это утверждение как теорему.

Код: sql
1.
2.
3.
4.
5.
create trigger td_test1 on test1 after delete
as 
begin
    rollback transaction;
end



Прошу приступать к доказательству :-)
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148162
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wikkkДоброго времени суток. При проектировании БД встал вопрос как избавиться от образовавшегося "кольца".

ну можешь выкинуть таблицу связей типа атрибутов. Они связаны уже через "Значение атрибута".
При создании объекта сразу создавай и все записи в значениях с незаполненными значениями.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148180
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakну можешь выкинуть таблицу связей типа атрибутов. Они связаны уже через "Значение атрибута".Нет, совсем выкидывать не стоит. Обычно редактирование атрибутов и редактирование значение атрибутов выполняется раздельно. Иногда даже разными людьми.
Ivan DurakПри создании объекта сразу создавай и все записи в значениях с незаполненными значениями.На практике это зачастую сложно совместить в один момент времени.
Например, у нас товары зачастую загружаются пачками по документам от поставщика (тут бывает нужно быстро, т.к. нужно приход сделать и т.п.), а характеристики менеджер проставляет позже, когда время будет.

И, кстати, не все товары обязаны иметь все характеристики. Некоторые могут иметь только часть из них.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148214
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherПрошу приступать к доказательству :-)
alter table test1 drop [disable] trigger td_test1. Any questions?
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148220
Jean Green
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классическая схема с категориями чем не годится?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
               Сотрудник
               ---------
               ID_pipla
               таб номер
               Фамилия
               Имя 
               дата рожд.
               Паспорт

Водитель      Электрик          Директор 
------------- ----------------- -------------
ID_pipla      ID_pipla          ID_pipla
Классы        допуск до ? вольт размер кресла
N вод. удост  N удост.          з/п в тюрьме
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148277
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jean Green, классический ответ: оператору не требуется вызывать админа (и скорее всего программиста) при появлении новой должности в штатном расписании.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148612
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerCane Cat FisherПрошу приступать к доказательству :-)
alter table test1 drop [disable] trigger td_test1. Any questions?

Insufficient privileges :-)

Впрочем, если вести речь только о реляционной модели, то я не спорю - что вставлено, то может быть удалено, и кольцевые связи - не ошибка, а могут быть даже полезны, например, в древовидных структурах.
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148650
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FishersoftwarerЛюбой набор строк, который можно вставить в некоей конкретной СУБД, можно и удалить в той же СУБД. Готов доказать это утверждение как теорему.

Код: sql
1.
2.
3.
4.
5.
create trigger td_test1 on test1 after delete
as 
begin
    rollback transaction;
end



Прошу приступать к доказательству :-)

"можно вставить " ты не прочитал?
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39148798
wikkk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо)
...
Рейтинг: 0 / 0
Как избавиться от кольца в БД?
    #39149233
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

ну так after delete.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как избавиться от кольца в БД?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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