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

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

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

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

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

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

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

Любой набор строк, который можно вставить в некоей конкретной СУБД, можно и удалить в той же СУБД. Готов доказать это утверждение как теорему. Единственно, если вставка выполняется с извратами, удаление может потребовать прокрутить сторнирующие извраты в обратном порядке.
...
Рейтинг: 0 / 0
15.01.2016, 12:40
    #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
15.01.2016, 12:51
    #39148162
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избавиться от кольца в БД?
wikkkДоброго времени суток. При проектировании БД встал вопрос как избавиться от образовавшегося "кольца".

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

И, кстати, не все товары обязаны иметь все характеристики. Некоторые могут иметь только часть из них.
...
Рейтинг: 0 / 0
15.01.2016, 13:38
    #39148214
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избавиться от кольца в БД?
Cane Cat FisherПрошу приступать к доказательству :-)
alter table test1 drop [disable] trigger td_test1. Any questions?
...
Рейтинг: 0 / 0
15.01.2016, 13:43
    #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
15.01.2016, 14:45
    #39148277
Mr.Fontaine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избавиться от кольца в БД?
Jean Green, классический ответ: оператору не требуется вызывать админа (и скорее всего программиста) при появлении новой должности в штатном расписании.
...
Рейтинг: 0 / 0
16.01.2016, 00:30
    #39148612
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избавиться от кольца в БД?
softwarerCane Cat FisherПрошу приступать к доказательству :-)
alter table test1 drop [disable] trigger td_test1. Any questions?

Insufficient privileges :-)

Впрочем, если вести речь только о реляционной модели, то я не спорю - что вставлено, то может быть удалено, и кольцевые связи - не ошибка, а могут быть даже полезны, например, в древовидных структурах.
...
Рейтинг: 0 / 0
16.01.2016, 08:08
    #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
16.01.2016, 16:45
    #39148798
wikkk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избавиться от кольца в БД?
спасибо)
...
Рейтинг: 0 / 0
18.01.2016, 00:03
    #39149233
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избавиться от кольца в БД?
MasterZiv,

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


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