MySQL Database design - таблица отношений - PullRequest
0 голосов
/ 10 ноября 2010

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

Но теперь самое сложное (для меня): я хочу, чтобы пользователи могли прикреплять фотографии,видео и ссылки на события и / или статьи.

Что является лучшим для этого?Должен ли я создать другую таблицу, где я свяжу их друг с другом:

[media2articles]
m_id, m_type, media_id, m_article_id

[media2events]
m_id, m_type, media_id, m_events_id

или я должен добавить некоторые поля в мои текущие таблицы, например:

[videos]
v_id, v_file, **v_article_id, v_event_id**

Или есть какой-либо другой способ

Ответы [ 4 ]

1 голос
/ 10 ноября 2010

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

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

Это базовое реляционное моделирование; чтение этого очень поможет вам в разработке базы данных.

0 голосов
/ 10 ноября 2010

Если один элемент мультимедиа может быть связан с разными событиями, и разные события могут совместно использовать один и тот же элемент мультимедиа, то вам потребуется дополнительная таблица для разложения отношения N: M между двумя текущими таблицами.

0 голосов
/ 10 ноября 2010

Я бы создал таблицы "media" для этого и связал бы их. Добавление столбцов в существующую таблицу - ужасный дизайн. Вы не сможете поддерживать отношения 1: n, если не продолжите добавлять столбцы в таблицу.

0 голосов
/ 10 ноября 2010

Обычно вы используете таблицу «link» со ссылками «to_» и «from_» (или любую другую, соответствующую вашей модели данных) Это позволит связать фотографию с несколькими статьями или наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...