Как избавиться от кольца в БД?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Как избавиться от кольца в БД?

Сообщение ndemidov » 12.01.2016 (Вт) 17:15

Доброго времени суток. Проектируем с ребятами БД и вопрос как избавиться от образовавшегося кольца?

Подробное описание: допустим, таблица "Объект" будет содержать разные объекты: гаражи, квартиры, дачи. Соответсвенно у них имеются совершенно разные свойства (у гаража не будет площади кухни, у квартиры соток и т.д.). Таким образом добавим к таблице "Объект" FK на "Тип" объекта. Таблица "Тип" связана связью многим-ко-многим с таблице "Атрибуты". Так мы можем узнать какие атрибуты есть у конкретного объекта (иначе говоря - какие разрешены атрибуты разрешены для конкретного типа объекта).
Ну и таблица "Значения атрибута" ссылается как на объекты, так и на артибуты и содержит значение конкретного атрибута какого-либо объекта.
Вложения
GL-1pNNhY6Q.jpg
GL-1pNNhY6Q.jpg (74.67 Кб) Просмотров: 1768
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как избавиться от кольца в БД?

Сообщение alibek » 12.01.2016 (Вт) 18:07

Описание какое-то запутанное, ничего не понял.
В чем вопрос? Как сделать EAV? Или как построить 4НФ?
Lasciate ogni speranza, voi ch'entrate.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Как избавиться от кольца в БД?

Сообщение Debugger » 12.01.2016 (Вт) 18:24

Объект - частный случай типа?

P.S. Атрибут 004 - "Хрен"? : )

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как избавиться от кольца в БД?

Сообщение ndemidov » 13.01.2016 (Ср) 10:47

Debugger писал(а):Объект - частный случай типа?

P.S. Атрибут 004 - "Хрен"? : )



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

Вопрос - как избавиться от круговой связи (кольца), чтобы при удалении удалялись не было ошибок.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как избавиться от кольца в БД?

Сообщение iGrok » 16.01.2016 (Сб) 23:54

А где там "круговая" связь-то?

type: id - pk, name
attr: id - pk, name, val_type
type_attr: type_id - fk (type), attr_id - fk (attr)

obj: id - pk, type_id - fk (type);
obj_attr: obj_id - fk (obj), attr_id - fk (attr), attr_val

При удалении объекта цепляются его атрибуты из obj_attr.
При удалении атрибута цепляются связи из type_attr и значения из obj_attr.
При удалении типа цепляются связи из type_attr и соответствующие объекты.

Всё, вроде. В чём проблема?
label:
cli
jmp label


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 13

    TopList