Я создаю веб-приложение laravel, где хочу, чтобы пользователи создавали альбомы и добавляли материалы в альбомы. Эти вещи, которые они могут записать в альбом, будут в основном изображениями, а также текстами, видеороликами YouTube, звуковыми дорожками и т. Д. (Далее). Каждый фрагмент контента будет элементом в альбоме.Разработка программного обеспечения: как хранить различные типы контента в базе данных
My 'solution': У меня есть таблица альбомов и таблица содержания. Строки таблицы содержимого - это все части содержимого, которые я хочу сохранить. Я думал о создании таблицы content_meta с внешним ключом в таблице содержимого (которая, в свою очередь, имеет внешний ключ к таблице альбома). в таблице содержимого содержится информация о типе содержимого, которое хранится (изображение, видео, текст, видео на YouTube), а в таблице content_meta содержится вся информация для каждого фрагмента контента.
Например изображение имеет строку содержимого таблицы:
id | album_id | user_id | content_type
------------------------------
1231 | 311 | 973 | image
и что изображение имеет следующие content_meta строки таблицы
id | content_id | meta_option | meta_value
-------------------------------------------
1231 | 1231 | thumb_url | http://example.com/img/1231/thumb.jpg
1231 | 1231 | full_url | http://example.com/img/1231/thumb.jpg
1231 | 1231 | description | what an image this is!
Мой вопрос заключается в Как хранить эти элементы контента в базе данных «правильный путь»?. Решение, которое я придумал, является ли оно масштабируемым (для многих альбомов и многих пользователей)? Будет ли легко добавлять больше типов контента в будущем?
Я никоим образом не специалист по архитектуре/дизайну веб-приложений, поскольку я являюсь самообразованным «разработчиком». Я действительно хочу научиться правильно поступать!
Во многих примерах реальной жизни я столкнулся с другим решением, где увидел, что изображения хранятся в медиа-таблице. Но тогда, как я могу хранить видео на YouTube? Я бы создал другую таблицу для всех типов контента, которые я хочу хранить (таблицы для изображений, видео, видео Youtube, песни Soundcloud и т. Д.)?
Или мне нужно создать таблицу (для изображений и видео) и таблицу содержимого (для сохранения текстов и фрагментов html, например, видео на YouTube?)?
В моем приложении вы публикуете только один тип контента для элемента альбома. Не нравится на Facebook, где вы разместите изображение с текстом!
Вы бы действительно помогли мне, дав мне совет о том, как решить эту дилемму!
Советуем вам не использовать модель EAV (значение атрибута сущности), она считается анти-шаблоном –