[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Структура БД
arbuz
Привет всем. Пытаюсь написать в целях саморазвития видеоархив, чтото наподобие Ютуба.

Сейчас занялся разработкой БД. Предполагается:
Видео, комментарии к видео, рейтинг на уровне +/-, картинки к видео (типа постеры группы или обложки альбома и прочая лабуда).

Для хранения я буду использовать следующую файловую структуру:
В корне будет папка 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
Цитата (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
Структура неправильная с точки зрения нормализации и расширяемости.

Таблица video_img
id
video_id
img

Так будет правильней. Хотя в идеале нужна отдельная таблица изображений и связующая таблица между видео и изображением.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
arbuz
Про сбой впринципе логично ) Надо будет обдумать...

Тоесть нужно в каждую таблицу ещё одно поле добавить video_id.
Тоесть вообще первичный ключ не трогать.. он сам по себе?
T1grOK
video_id добавлять в остальные таблицы.
Вы не задумывались как хранить комментарии к видео при вашей структуре? Разве что массив айдишников комментариев хранить в поле id_comment, но это гемор еще тот.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
arbuz
Вот база теперь выглядит так:

Цитата

--
-- Структура таблицы `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
Так в таблице видео и так есть 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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.