Привет всем. Пытаюсь написать в целях саморазвития видеоархив, чтото наподобие Ютуба.
Сейчас занялся разработкой БД. Предполагается:
Видео, комментарии к видео, рейтинг на уровне +/-, картинки к видео (типа постеры группы или обложки альбома и прочая лабуда).
Для хранения я буду использовать следующую файловую структуру:
В корне будет папка video.
video/№id/hQjfak.flv - это будет видео.
video/№id/img/jhwsnv.jpg - 1 картинка.
video/№id/img/kjayvc.jpg - 2 картинка.
и т.д. картинок.
Конечно можно все видео держать в куче и также с картинками, но я боюсь что в случае какого нибудь сбоя всё это перемешается и будет винегрет, который придётся разгребать вручную.
ну и сама структура такой БД.
Цитата |
-- -- Структура таблицы `video` --
id - первичный ключ. id_cat - ячейка для связи с таблицей категорий. id_folder - номер папки с видео. id_comment - ячейка для связи с таблицей комментариев. id_img - ячейка для связи с таблицей картинок. id_rating - связь с таблицей рейтинга. title - заголовок. authot - автор песни. name - название песни. discription - описание.
-- -- Структура таблицы `video_cat` --
id - первичный ключ. name - имя категории. discription - описание категории.
-- -- Структура таблицы `video_comment` --
id - первичный ключ. userid - id юзера отправившего комент. text - текст комментария. date - дата комvентария.
-- -- Структура таблицы `video_rating` --
id - первичный ключ. userid - id юзера изменивший репутацию. value - значение изменения репутации (+1 или -1).
-- -- Структура таблицы `video_img` --
id - первичный ключ. img1 - первая картинка. img2 - вторая картинка. img3 - третья картинка. ... img10 - десятая картинка. |
Кто что думает по этому поводу?
T1grOK
24.10.2012 - 10:40
Цитата (arbuz @ 24.10.2012 - 06:25) |
Конечно можно все видео держать в куче и также с картинками, но я боюсь что в случае какого нибудь сбоя всё это перемешается и будет винегрет, который придётся разгребать вручную. |
Знаете, если серъезный сбой, то хоть в одной таблице, хоть в разных будет винегрет или и того хуже не будет даже винегрета))
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK
24.10.2012 - 10:43
Структура неправильная с точки зрения нормализации и расширяемости.
Таблица video_img
id
video_id
img
Так будет правильней. Хотя в идеале нужна отдельная таблица изображений и связующая таблица между видео и изображением.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Про сбой впринципе логично ) Надо будет обдумать...
Тоесть нужно в каждую таблицу ещё одно поле добавить video_id.
Тоесть вообще первичный ключ не трогать.. он сам по себе?
T1grOK
24.10.2012 - 11:05
video_id добавлять в остальные таблицы.
Вы не задумывались как хранить комментарии к видео при вашей структуре? Разве что массив айдишников комментариев хранить в поле id_comment, но это гемор еще тот.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Вот база теперь выглядит так:
Цитата |
-- -- Структура таблицы `video` --
id - первичный ключ. id_video - id видео. id_cat - ячейка для связи с таблицей категорий. id_folder - номер папки с видео. id_comment - ячейка для связи с таблицей комментариев. id_img - ячейка для связи с таблицей картинок. id_rating - связь с таблицей рейтинга. title - заголовок. authot - автор песни. name - название песни. discription - описание.
-- -- Структура таблицы `video_cat` --
id - первичный ключ. id_video - ячейка для связи с видео. name - имя категории. discription - описание категории.
-- -- Структура таблицы `video_comment` --
id - первичный ключ. id_video - ячейка для связи с видео. userid - id юзера отправившего комент. text - текст комментария. date - дата комvентария.
-- -- Структура таблицы `video_rating` --
id - первичный ключ. id_video - ячейка для связи с видео. userid - id юзера изменивший репутацию. value - значение изменения репутации (+1 или -1).
-- -- Структура таблицы `video_img` --
id - первичный ключ. id_video - ячейка для связи с видео. img1 - первая картинка. img2 - вторая картинка. img3 - третья картинка. ... img10 - десятая картинка. |
Цитата |
Вы не задумывались как хранить комментарии к видео при вашей структуре? Разве что массив айдишников комментариев хранить в поле id_comment, но это гемор еще тот. |
Когда юзер постит комент, то в базу заносится:
id - первичный ключ.
id_video - ячейка для связи с видео.
userid - id юзера отправившего комент.
text - текст комментария.
date - дата комvентария.
А когда нужно это вывести, то я делаю выборку по id_video и сортирую по дате поста. И заодно вытаскивая id юзера, делаю запрос по базе юзеров и уже вытаскиваю его профиль с аваторкой, именим и пр.
T1grOK
24.10.2012 - 11:44
Так в таблице видео и так есть id, зачем задваивать id_video? А также:
id_comment - ячейка для связи с таблицей комментариев.
id_img - ячейка для связи с таблицей картинок.
id_rating - связь с таблицей рейтинга.
Здесь вовсе не нужны.
Опять же таблица video_img:
id - первичный ключ.
id_video - ячейка для связи с видео.
img - картинка.
То есть для одного видео будет несколько записей в таблице video_img
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.