Структура базы данных онлайн кинотеатра

509 views
Skip to first unread message

makoviy

unread,
Dec 16, 2011, 6:31:06 PM12/16/11
to RubyOnRails to russian
Добрый вечер, уважаемое сообщество.

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

Задача: в проекте есть сериалы и фильмы, которые пользователи могут
просматривать, писать на них рецензии и комментировать.
Как я определяю для себя понятие фильма - это объект обладающий такими
свойствами как год выпуска, постер .. и видео файл. Сериал же (точнее
конкретный его сезон) обладает всеми теми же свойствами, но видео
файлов у него несколько. Комментарии и рецензии так же как и к фильмам
пишутся к сезону, но никак не к отдельным сериям в сезоне.
Поэтому я создаю две модели: одна movies (в которой буду хранить
фильмы и сезоны сериалов) и вторую video_files (где лежат ссылки на
сами видео файлы) и связываю их связью один ко многим. Вот на этом
месте меня сомнения и одолевают.. не лишняя модель video_files? Может
бить сезоны на серии все таки и оставить одну модель movies в которой
ссылки на видео файлы и хранить?

Вопрос, конечно же, напрямую к RoR не относится, но я только начинаю
использовать в разработке этот замечательный фреймворк; не ждёт ли
меня в будущем, с такой структурой которую я выбрал, много седых волос
моих и заказчика? =)

Denis Bazhan

unread,
Dec 16, 2011, 7:14:02 PM12/16/11
to ror...@googlegroups.com
http://kinobaza.tv/  стоить глянуть, по урлам поймёшь. 

17 декабря 2011 г. 3:31 пользователь makoviy <artem....@gmail.com> написал:

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-un...@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Yury Omelchuk

unread,
Dec 17, 2011, 4:29:25 AM12/17/11
to ror...@googlegroups.com
Артем, мне кажется стоит обратить внимание вот на что: "Поэтому я создаю две модели: одна movies (в которой буду хранить фильмы и сезоны сериалов)

При такой структуре сезоны одного сериала будут разными movie. Как ты их потом объединишь в один сериал? 

Я бы предложил такую схему:

Movie (это либо самостоятельное кино, либо название сериала)
Season (это понятно, сезон сериала) belongs_to :movie
Episode (эпизод сериала) belongs_to :season

Если нужна модель "файл" то что он конкретно из себя представляет? это физический файл (и тогда надо предусмотреть что файлов может бы несколько, если видео разбито на части) или просто некий виртуальный носитель? 

Учитывая что у муви может быть связан с файлом напрямую без сезонов-эпизодов я бы сделал модель Video и полиморфную связь с movie и episode.

makoviy

unread,
Dec 17, 2011, 5:52:55 AM12/17/11
to RubyOnRails to russian
Спасибо, Юра.

Судя по всему именно такая структура на ресурсе http://kinobaza.tv
(только ещё с версиями одного и того же фильма или эпизода ), я же
судил по http://seasonsvar.ru.
Уточню ещё пока у заказчика, что будет уметь его плеер, что ему надо
будет отдавать: один файл, пачку или пачку пачек =)

Кстати, Юра, если бы мне месяца полтора кто сказал, что мой первый
коммерческий проект на RoR будет тесно связан с фильмами - я бы
ответил "Да лаадно". D

George Chesakov

unread,
Dec 17, 2011, 6:25:43 AM12/17/11
to RubyOnRails to russian
Мне кажется, стоит учесть, что фильмы могут
- иметь сиквелы и приквелы (молчание ягнят и красный дракон)
- иметь римейки
- быть объединены в а-ля сериалы (бондиана, фильмы о гарри поттере)
- иметь серии (последний гарри поттер часть 1 и 2)
У сериалов есть тип miniseries без привязки к сезону (бригада)

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

Oleg Muntyan

unread,
Dec 17, 2011, 4:47:57 PM12/17/11
to RubyOnRails to russian

Да не заморачивайтесь вы универсальной структурой базы на начальном
этапе
Видите две модели: movies & files ну и отлично, их и реализовывайте
Если понадобиться объединять фильмы в группу добавите новую модель , а
роутинг упрете на новый контроллер
Главное не пытаться сделать полностью универсальный проект
Это во первых затормозит результат
Во вторых усложнит реализацию, а в результате только 10% возможностей
будет использоваться

Denis Bazhan

unread,
Dec 17, 2011, 5:06:40 PM12/17/11
to ror...@googlegroups.com
100% поддерживаю. Не нужно универсальность на начальном этапе, потом будете оптимизировать, ускорять и всё что угодно. 

18 декабря 2011 г. 1:47 пользователь Oleg Muntyan <omun...@gmail.com> написал:

makoviy

unread,
Dec 17, 2011, 5:53:20 PM12/17/11
to RubyOnRails to russian
Спасибо =)

sysadm

unread,
Dec 18, 2011, 6:09:55 AM12/18/11
to RubyOnRails to russian
По ходу не заморачивался бы линками на kinobaza.tv. Реализация
фильтров там - это нечто :) Еще кто-то подумает, что так и надо -
array в урл совать :)

Yury Omelchuk

unread,
Dec 18, 2011, 3:15:14 PM12/18/11
to ror...@googlegroups.com
Да, забавно :)

Yury Omelchuk

unread,
Dec 18, 2011, 3:30:41 PM12/18/11
to ror...@googlegroups.com
Думаю, что самое главное это не бояться перестраивать структуру базы, когда ты упираешься в требование которое с текущей структурой не сильно согласуется. Если убояться и начать выдумывать какие-то костыли, то очень скоро проект превратится в кашу.

Кстати, на кинобазу и любые другие проекты смотреть не стоит. В твоем проекте есть свои требования, они могут быть как проще, так и сложнее, от этих требований и надо плясать.
Reply all
Reply to author
Forward
0 new messages