2013-11-16 4 views
0

Я собираю базу данных, которая будет содержать информацию о различных медиа-материалах разных типов медиа. Каждый элемент медиа может затем быть добавлен к коллекции средств массовой информации, которые затем могут быть использованы для создания медиа ползунки, галерея и т.д.Media Gallery MySql Database Design

Вот пример дб

media_types 
----------- 
id code title 
1  images Images 
2  videos Videos 
3  files Files 

gallery_items 
------------- 
id gallery_id mediaTypeId mediaId 
1  1    1    2 
2  1    3    1 
3  1    2    3 

images 
------ 
id title  filename 
1 X-Wing  xwing.png 
2 Tie Fighter tie.png 
3 A-Wing  awing.jpg 

videos 
------ 
id title  filename 
1 Hoth   iceplanet.wmv 
2 Bespin  bespin.ogg 
3 Tatooine  desert.mpeg 

files 
----- 
id title      filename 
1 Death Star Plans   bothanx.pdf 
2 Millenium Falcon Schematics yt1300.pdf 
3 Rebel Alliance    manifesto.doc 

Я хотел бы иметь возможность выбрать все элементы в частности галерея с одним заявлением MySql, но в настоящее время, я могу работать только как выполнить это в два этапа:

1) Выбрать все элементы из таблицы gallery_items с определенным галерея ID

2) Выберите детали товара от t он соответствует таблице типов СМИ, анализируя mediaTypeId

В примере, который я приводил, таблицы типов мультимедиа очень просты, разделяя одни и те же столбцы, но на самом деле они будут иметь разные количества столбцов и разных столбцов. Базовая инструкция объединения на mediaId не будет работать, так как каждая таблица типов носителей может использовать один и тот же идентификатор.

Я думал об использовании уникального mediaId для всех типов носителей, но это обеспечило бы абсолютную взаимосвязь между таблицей gallery_items и таблицами типов носителей, которые я бы хотел избежать (не все элементы в таблицах типов носителей будут в конечном итоге в медиа-коллекции). Возможно, решение было бы создать другую таблицу media_items, которая создала уникальный идентификатор для каждого из них, который затем будет использоваться в каждой таблице типов носителей? Я, однако, устал от ненужного распространения таблиц.

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

ответ

0

IIWM: У меня была бы одна таблица «типов медиа», как у вас есть. Затем другая таблица носителей с уникальным идентификатором, типом медиафайла, именем файла и т. Д. Последняя имеет таблицу с информацией о галерее - уникальный идентификатор, идентификатор носителя и любую другую информацию о галерее.

Чтобы сделать его более полезным, у вас может быть таблица «изменений», которая отслеживает дату и время назначения заданий в/из галереи для каждой части носителя, дату ее получения, продажи и т. Д. Это будет отслеживать «продолжительность жизни», каждой части в вашей коллекции.