Схема вопроса для владельца объекта

У меня есть столбец user_id в пользовательской таблице. Далее у меня есть brand_id в таблице брендов. Вариант использования заключается в том, что у каждого есть своя страница: у пользователя есть профиль, а у бренда есть страница бренда. (ПРИМЕЧАНИЕ: таких отношений больше. У компании есть страница компании, у города есть страница города и т. д.). Поэтому, когда пользователи загружают фотографии, мне нужно сослаться на владельца. Владельцем может быть бренд, пользователь, город, организация и т. д.

Для пользователя это просто, photo_id принадлежит user_id, где user_id - это таблица FK для пользователя. Но чтобы добавить brand_id в качестве владельца фотографии, мне нужен отдельный столбец или это можно сделать в самом столбце user_id, если я переименую его как owner_id, который будет ссылаться (идентификатор пользователя или идентификатор бренда)?


person mickeyJ    schedule 11.01.2011    source источник


Ответы (2)


2 столбика, руки вниз. (Конечно, одно из двух всегда должно быть нулевым)

С одним столбцом у вас есть ряд проблем:

  • Нет ссылочных ограничений на уровне БД (= внешний ключ)
  • Риск конфликта идентификаторов между брендом и пользовательской таблицей
  • сбивает с толку
person Axel Fontaine    schedule 11.01.2011

Вы можете создать по одной таблице сопоставления для каждого, например user_photos и brand_photos.

Таким образом, у вас будет полная ссылочная целостность от user_photos до user и от brand_photos до brands. Это также положительно влияет на производительность запросов, которые фильтруют фотографии пользователей/брендов.

person Ronnis    schedule 11.01.2011
comment
Но в родительской таблице фотографий по-прежнему будет столбец owner_id? Или вы предлагаете убить таблицу фотографий и хранить фотографии в нескольких таблицах в зависимости от владельца? Тогда, если я завтра изменю схему фотографий, мне нужно будет обновить все эти таблицы? - person mickeyJ; 12.01.2011