Полиморфные списки и реляционная база данных - PullRequest
4 голосов
/ 01 февраля 2011

У меня проблема с моделированием базы данных для хранения некоторых объектов Java (классическая проблема отображения объектов в реляционную базу данных). Пример гораздо лучше, чем длинное описание, вот материал.

Список доступных классов:
- Класс A содержит массив значений типа double
- Класс B содержит массив A
- Класс C содержит массив B и массив A (так может продолжаться ...)

Все объекты реализуют одного и того же родителя (скажем, StorableObject). Комбинаций может быть как можно больше.

Как я могу сохранить все значения тезисов и, кроме того, как я могу создать модель, используя некоторый FK, который удаляет все его дочерние элементы при удалении родительского объекта. Я имею в виду, поскольку дочерние элементы могут храниться в различных таблицах, я не могу поместить простой FK в поле родительского элемента.

Спасибо;)

Ответы [ 2 ]

5 голосов
/ 03 февраля 2011

Вы прочитали слишком много ОО книг, а не одну книгу RDB. Сначала смоделируйте данные как данные. Убедитесь, что все ваши требования к данным (в соответствии с вашим вопросом) выполнены. Затем смоделируйте ваши объекты после сущностей.

Существуют сотни одинаковых вопросов о СО от людей, которые достигли точно такого же препятствия Разные имена таблиц и столбцов, но одинаковые проблемы. Фаулер привел всех вас сюда.

Чтобы внимательно изучить ваши данные и дать полезный ответ, нам нужно увидеть ваш DDL или диаграмму классов или все, что у вас есть.

3 голосов
/ 01 февраля 2011

Только моё мнение, но, кажется, вы чрезмерно обобщены.

Потому что, как описано, это звучит как две таблицы. Таблица «вещей» и перекрестная ссылка, которая связывает «вещь» с ее дочерними элементами. Если это так, то предложение внешнего ключа «ON DELETE CASCADE» поможет.

...