LINUX.ORG.RU

Отображение наследования в реляционную модель.


0

0

Классическая задача: есть абстрактный класс Shape, есть конкретные подклассы Circle(Radius), Rectangle(Width, Height), есть конкретный класс ShapeCollection.

Предположим, мы используем ОО-язык (не важно, какой).

Какие есть варианты размещения этой схемы в реляционной БД? При чём нужно в самой программе работать обычным образом, т.е. составляем граф объектов, потом его сохраняем в БД и потом можем его восстановить.

В голове крутятся схемы, но они все какие то кривоватые. То ли мне нужна ODMBS, а в RDBMS без костылей принципиально не обойтись, то ли я чего то очевидного не вижу.

anonymous

на реляционную это накладывается без проблем... класс - есть таблица, свойства и методы - поля со значениями.

наследование - дочерний класс (таблица) имеет внешний ключ на родителя (также таблица).

содержимое этих таблиц - это объекты классов.

вполне себе реляционная модель... или я что-то упустил?

Deleted
()
Ответ на: комментарий от Deleted

>вполне себе реляционная модель... или я что-то упустил?

Таблиц многовато. И при расширении функционала еще одним классом будет возня с таблицами.

wfrr ★★☆
()

сущности: класс, метод, свойство. между классом и остальными - связь многие-ко-многим. класс связан сам с собой многие-к-одному или многие-ко-многим в зависимости от возможности множественного наследования

generatorglukoff ★★
()

В постгресе вообще таблицы позволяют логику наследования реализовать напрямую: http://www.postgresql.org/docs/8.3/interactive/ddl-inherit.html

Т.е. создаешь таблицу фигур, от неё наследуешь таблицы квадратов и кругов. Если потом нужно пройтись по всем _фигурам_ - селектишь из таблицы фигур.

anonymous
()
Ответ на: комментарий от anonymous

в 8.1 с этим наследованием есть как минимум одна смешная бага/фича, что primary key в этой наследованой таблице не уникален. т.е. можно создать в родительской таблице запись с тем же PK что и у одной из дочерних записей. + с выборкой были приколы, не помню точно какие...

asone
()

Всем спасибо.

anonymous
()
Ответ на: комментарий от wfrr

> И при расширении функционала еще одним классом будет возня с таблицами.

Будет добавление одно таблицы. Это далеко не возня, на самом деле.

no-dashi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.