Как избавиться от кольца в БД (базе данных)?
http://cs631229.vk.me/v631229690/b202/up24jrdrT_E.jpg
Подробное описание:
Допустим, таблица "Объект" (см. картинку) будет содержать разные объекты. Под объектом имеется в виду конкретный вариант из множества: гараж, квартира, дача.
У них имеются разные атрибуты: площадь, этаж, количество комнат - если это квартира; площадь участка, фундамент, туалет - если это дача.
Идея: вынести в таблицы - по причине имеющихся совершенно разных атрибутов у разных типов объекта (например, у гаража не будет атрибута "площадь кухни", "количество комнат", сколько соток, имеется ли баня в наличии, туалет и т.д.
Таким образом добавим к таблице "Объект" FK на "Тип" объекта. Таблица "Тип" связана связью многим-ко-многим с таблицей "Атрибуты". Так мы можем узнать какие атрибуты есть у конкретного объекта (иначе говоря - какие атрибуты разрешены для конкретного типа объекта).
Ну и таблица "Значение атрибута" ссылается как на объекты, так и на атрибуты и содержит значение конкретного атрибута какого-либо объекта (например, "Площадь: 40".
Вопрос - как избавиться от круговой связи (кольца), чтобы при удалении записи не возникало ошибок?
Нету здесь никакого кольца. Посмотрите внимательнее на типы связей. У вас одна связь один-ко-многим (тип-объект) и две связи многие-ко-многим (тип-атрибут, объект-атрибут).
Цитата: grgdvo
Нету здесь никакого кольца. Посмотрите внимательнее на типы связей. У вас одна связь один-ко-многим (тип-объект) и две связи многие-ко-многим (тип-атрибут, объект-атрибут).
Тогда к чему будет относиться значение атрибута? Например: Площадь = 20, чья площадь?
значение - с конкретным объектом.