Структура базы данных для списка предметов (очень разные) - PullRequest
2 голосов
/ 01 января 2012

Я пришел к следующей проблеме: у меня есть список пользователей, которые могут создавать списки. У меня есть таблицы, которые содержат такие объекты, как: - фильмы - с разными свойствами - картинки - с разными свойствами - профили людей - с разными свойствами - тип X- с различными свойствами (список дел).

Пользователь может создать список (в который другие пользователи могут добавлять элементы) со всеми перечисленными выше типами.(например, список фильмов и актеров, а также галереи изображений).

Как сохранить этот список эффективно и без особых проблем:)

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 01 января 2012

Решение, которое вы ищете (и которое Mkaz начал описывать) - это шаблон базы данных под названием «Несвязанные подтипы».

Недавно я столкнулся с той же проблемой, вот что я нашел:

Объектно-ориентированные структуры в реляционных базах данных

Полиморфизм в таблицах базы данных SQL?

0 голосов
/ 01 января 2012

Если я правильно понимаю ваш вопрос, вам следует создать отдельную таблицу Сущность , которая будет базовым типом для всех ваших фильмов, картинок и т. Д. И отдельную таблицу ListsItems , котораябудет содержать следующие столбцы: (list_id, entity_id) и таблица UsersLists из (user_id, list_id).

UsersLists будет содержатьотображение пользователей в списки (каждый пользователь может иметь много списков), ListsItems будет содержать списки для сопоставления объектов (каждый список может иметь много объектов), а Entity будет содержать тип объекта (movie,изображение, что угодно) и конкретный идентификатор объекта, который будет указывать на его собственную таблицу ( Фильм , Изображение и т. д.).

Aufziehvogel спросил васо количестве типов, потому что это важно для разрешения поля типа сущности в проекте.Если у вас есть конечное заранее определенное количество типов, вы можете сделать столбец entity_type перечислением, но если пользователь должен иметь возможность создавать свои собственные типы, это более сложная проблема, и таблица SpecifiedEntity должна заменить определенныетаблицы ( Фильмы , Изображения и т. д.).

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

...