Несколько владельцев для фотоальбомов - вопрос схемы - PullRequest
1 голос
/ 14 января 2011

Как мне создать отношения для фотоальбомов, принадлежащих пользователю, событию, группе, сети, странице (я хочу поддержать x число возможных владельцев)?Если возможно, даже поддержите несколько владельцев позже.

Один из способов - это иметь столбцы в таблице альбомов, для которых один из них имеет FK ID, а остальные будут нулевыми.Но проблема в том, что когда я добавляю больше типов владельцев, мне нужно постоянно изменять таблицу, чтобы добавлять больше столбцов

Другой способ - иметь отдельные таблицы фотографий для каждого из этих типов владельцев.

Ни один изэти методы хорошо масштабируются.Любые другие способы владеть фотоальбомами для разных типов владельцев из одной таблицы, которая будет масштабироваться (то есть иметь меньше объединений и легко запрашивать, поскольку производительность чтения - это мое требование № 1?

Платформа - MySQL / PHP.

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Подумайте о своей проблеме в концептуальной модели данных вместо чисто физической.Если вы делаете ОО-работу, это тоже хорошо.CDM

Полукруг является оператором наследования.Таким образом, событие, пользователь, сеть, страница все наследуются от владельца.

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

alt text

ЭтоТаким образом, вы получаете одну таблицу из всего, что может иметь фотографию и все общие атрибуты.Тогда каждая дочерняя таблица будет наследовать PI от родительского и иметь специфичные для него атрибуты.ФК таблицы фотографий перейдет к таблице владельцев.

Ваша будущая цель для многих владельцев фотографии меняется с идентификатора владельца в виде FK на таблице фотографий на таблицу сопоставления между многими: до: многими между владельцем и фотографией.Действительно легко, если вы используете эти конструкции.

2 голосов
/ 14 января 2011

Создание таблицы с тремя столбцами, FK альбома, FK владельца и типом владельца, причем тип владельца является перечислимым типом для пользователя, даже группы, и т. Д.

...