|
|
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Добрый день. Создаю в качестве дипломного проекта портал кинотеатра. Сам проект по себе не сложный, пока я не начинаю задумываться о бронировании билета на сеанс. Вот тут то у меня мысли разбегаются и я даже не знаю с чего начать ^^ Поэтому просьба-вопрос: Как по вашему сделать хранение информации о бронировании (структура БД) , если: У кинотеатра есть N залов. В каждом зале N мест. Есть какой-то фильм. Фильм идет в такое-то время в таком-то зале. На данный фильм в такое-то время бронируется до 5 таких-то мест. Портал пишется-проектируется на Django, БД Postgre, бронирование будет на ajax визуальное. Буду благодарен за любую помощь или совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 08:22 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Таблица залов (ИД зала) Таблица мест в зале (ИД зала, ИД места, Номер ряда, Номер места) Таблица расписание сеансов в зале (ИД зала, ИД сеанса, С даты, По дату, Время начала, Время конца) Таблица бронирования и оплаты (Дата, ИД сеанса, ИД места, Статус места:Свободно, Забронировано. Оплачено) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 09:40 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Забыл, Таблица Брони (ИД брони, ФИО, ID сеанса, Кол-во мест) В таблицу бронирования добавить ИД брони. Схема не полностью нормализована, таблица Брони и таблица Бронирования и оплаты частично пересекаются, но в таком виде удобнее для ввода данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 09:43 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель, авторТаблица расписание сеансов в зале (ИД зала, ИД сеанса, С даты, По дату, Время начала, Время конца) А что, вариант "с утра в этом зале идет "Гробокопатель" два раза, днем в час "Солнечные зайчики в волшебном городе", и только в шесть до двух(а куда, кстати, эти 2 ночи девать?) нашумевшая мелодрама "Он, она и его любовники""? Так что надо бы таблицы Фильм(ид, название, описание, жанр и т.п.) Идетвзале(ид залы, ид фильмы, начало таймстамп, продолжительность интервал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 12:35 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо за полный! и оперативный ответ. Теперь я наконец понимаю к какому виду все нужно привести. Из вашего примера выкинул только количество мест, так как не совсем понимаю как их отслеживать в приложении, ведь пользователь может выбрать и из разных рядов места. Хотя может я чего-то не понимаю. Накидал схему в ервине. Я правильно вас понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 12:45 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new oneПрограммист-Любитель, авторТаблица расписание сеансов в зале (ИД зала, ИД сеанса, С даты, По дату, Время начала, Время конца) А что, вариант "с утра в этом зале идет "Гробокопатель" два раза, днем в час "Солнечные зайчики в волшебном городе", и только в шесть до двух(а куда, кстати, эти 2 ночи девать?) нашумевшая мелодрама "Он, она и его любовники""? Так что надо бы таблицы Фильм(ид, название, описание, жанр и т.п.) Идетвзале(ид залы, ид фильмы, начало таймстамп, продолжительность интервал) Так Программист любитель вроде бы указал это : Таблица расписание сеансов в зале (ИД зала, ИД сеанса, С даты, По дату, Время начала, Время конца) Тут как бы и есть таймстарт и время начала, зачем интервал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 12:50 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
SmallWorkerAuthor the new oneПрограммист-Любитель, пропущено... А что, вариант "с утра в этом зале идет "Гробокопатель" два раза, днем в час "Солнечные зайчики в волшебном городе", и только в шесть до двух(а куда, кстати, эти 2 ночи девать?) нашумевшая мелодрама "Он, она и его любовники""? Так что надо бы таблицы Фильм(ид, название, описание, жанр и т.п.) Идетвзале(ид залы, ид фильмы, начало таймстамп, продолжительность интервал) Так Программист любитель вроде бы указал это : Таблица расписание сеансов в зале (ИД зала, ИД сеанса, С даты, По дату, Время начала, Время конца) Тут как бы и есть таймстарт и время начала, зачем интервал? Затем, что бывают очень ночные сеансы, конец которых перелазит в следующие сутки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 13:23 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new oneИдетвзале(ид залы, ид фильмы, начало таймстамп, продолжительность интервал) "Идет в зале" это, по идее, и есть "сеанс". В сеансе id фильма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 13:40 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
ЫЗатем, что бывают очень ночные сеансы, конец которых перелазит в следующие сутки. Вот только геморроиться с ними ну решительно незачем. Нет ни одной причины. Если кинотеатр, как большинство, работает с кратким ночным перерывом - типа с 12 до 3 - то удобно считать, что это и есть один день, и к нему привязывать рабочие смены и всё остальное. И тогда пусть и начало, и конец сеанса перелезают в следующие сутки, никаких проблем. Если же даже кинотеатр круглосуточный, для идентификации сеанса более чем достаточно "дата-время начала", время завершения - параметр информационный, а дата завершения так и вовсе интересна только пьяным из анекдотов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 14:55 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
SmallWorkerAuthor the new oneПрограммист-Любитель, пропущено... А что, вариант "с утра в этом зале идет "Гробокопатель" два раза, днем в час "Солнечные зайчики в волшебном городе", и только в шесть до двух(а куда, кстати, эти 2 ночи девать?) нашумевшая мелодрама "Он, она и его любовники""? Так что надо бы таблицы Фильм(ид, название, описание, жанр и т.п.) Идетвзале(ид залы, ид фильмы, начало таймстамп, продолжительность интервал) Так Программист любитель вроде бы указал это : Таблица расписание сеансов в зале (ИД зала, ИД сеанса, С даты, По дату, Время начала, Время конца) Тут как бы и есть таймстарт и время начала, зачем интервал? Я имел в виду, что расписание сенансов меняется обычно каждую неделю и С даты По дату - это период, в течение которого данный фильм идет в данном зале. При этом фиксируется только время начала фильма. Если время конца будет меньше времени начала, значит фильм началался поздно ночью и переполз через 24:00. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 18:08 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarerЫЗатем, что бывают очень ночные сеансы, конец которых перелазит в следующие сутки. Вот только геморроиться с ними ну решительно незачем. Нет ни одной причины. Если кинотеатр, как большинство, работает с кратким ночным перерывом - типа с 12 до 3 - то удобно считать, что это и есть один день, и к нему привязывать рабочие смены и всё остальное. И тогда пусть и начало, и конец сеанса перелезают в следующие сутки, никаких проблем. Если же даже кинотеатр круглосуточный, для идентификации сеанса более чем достаточно "дата-время начала", время завершения - параметр информационный, а дата завершения так и вовсе интересна только пьяным из анекдотов. Вот вы сами и объяснили, зачем интервал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 23:26 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer Если же даже кинотеатр круглосуточный, для идентификации сеанса более чем достаточно "дата-время начала", время завершения - параметр информационный, а дата завершения так и вовсе интересна только пьяным из анекдотов. Не согласен Программист-любительЯ имел в виду, что расписание сенансов меняется обычно каждую неделю и С даты По дату - это период, в течение которого данный фильм идет в данном зале. При этом фиксируется только время начала фильма. Если время конца будет меньше времени начала, значит фильм началался поздно ночью и переполз через 24:00. Примерно я так и думал. Есть фильм Котэ. Он идет: С даты: 1.12.2011 По дату: 7.12.2011 Каждый день с 1 числа по 7 он идет: Время начала 12-00, Время конца: 12-00+его длина Если в какой-то день нам нужно уникальное расписание, мы просто делаем дату начала и конца одинаковой. Ага, так и есть "подумал я" =) Хорошо что расписал, так как по моей схеме в бронирование надо будет добавить поле [Дата] чтоб мы знали на какой день из диапазона сеанса он идет. Как-то так получается, немного муторно в реализации запросов, зато удобно в админке делать сеансы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 23:53 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Особо не вникал, начало и длительность не устраивает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 23:57 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, автордля идентификации сеанса более чем достаточно "дата-время начала", время завершения - параметр информационный, а дата завершения так и вовсе интересна только пьяным из анекдотов. Вообще-то было бы неплохо иметь ограничение "в одном зале не может идти одновременно более одного фильма" и "сеанс не может быть назначен ранее чем через полчаса после окончания предыдущего". Ну и идея "дата начала показов-дата окончания показов" мне кажется довольно сомнительной - зачем дублировать данные, если она прекрасно вычисляется из таймстампа начала и интервала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 13:54 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new oneВообще-то было бы неплохо иметь ограничение "в одном зале не может идти одновременно более одного фильма" Если время начала и длительность произвольные, это ограничение плохо реализуется декларативной логикой. Хотя, помнится, я как-то извращался с пользовательским типом уникального индекса для решения этой задачи. Это то, что лучше делать на уровне ХП. Author the new oneи "сеанс не может быть назначен ранее чем через полчаса после окончания предыдущего". А это вообще не стоит специально обдумывать, проще прибавлять полчаса к проверяемому диапазону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 14:04 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, авторЕсли время начала и длительность произвольные, это ограничение плохо реализуется декларативной логикой. Ну почему же - прекрасно в check'е реализуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 14:31 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new onesoftwarer, авторЕсли время начала и длительность произвольные, это ограничение плохо реализуется декларативной логикой. Ну почему же - прекрасно в check'е реализуется. Можно пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 14:32 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, Чего? check'а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 14:51 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new onesoftwarer, Чего? check'а? Да. Вернее, структуры данных вместе с чеком. Думаю, вполне хватит таблички (id, date_from, date_to), но не хочу ограничивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:04 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, Вы что, действительно не в курсе? Постгрес Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Для других серверов по мотивам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:19 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:21 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new oneВы что, действительно не в курсе? Да, я действительно не в курсе. Более того, я искренне надеюсь, что большинство СУБД не дают столь простой возможности порушить целостность данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:26 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, Хм, вот так нашлась какая-то бага в форуме. Но, думаю, и так все ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:27 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, Ну, Вам кроме постгреса осталось уговорить как минимум Oracle, DB2 и Microsoft - и тогда мир предстанет перед Вами немножечко более гармоничным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:36 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new onesoftwarer, Ну, Вам кроме постгреса осталось уговорить как минимум Oracle, DB2 и Microsoft - и тогда мир предстанет перед Вами немножечко более гармоничным. Ну, про оракла Вы мне пожалуйста не пойте, в нём такое ограничение делается другими, нормальными механизмами. Про db2 и ms не скажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:42 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, авторХотя, помнится, я как-то извращался с пользовательским типом уникального индекса для решения этой задачи. Это то, что лучше делать на уровне ХП. И тут же: авторНу, про оракла Вы мне пожалуйста не пойте, в нём такое ограничение делается другими, нормальными механизмами. Давайте Вы сначала определитесь, а дальше мы продолжим, если пожелаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 15:57 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new oneДавайте Вы сначала определитесь, а дальше мы продолжим, если пожелаете. А чего тут продолжать? 1. select-функция в check constraint - это очевидно "левый" механизм, который просто не может нормально работать. Имхо это очевидно любому, кто задумывается, как вообще работает база. Мне, признаться, трудно поверить, что в PG есть такая лажа. 2. Наиболее нормально имхо делать такую проверку на уровне ХП бизнес-логики, а не на уровне декларативной целостности. 3. В Oracle есть пара хакерских путей сделать такое ограничение на декларативном уровне. Но не думаю, что стоит так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 16:04 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, авторА чего тут продолжать? Ну в общем да, сказать больше нечего. авторselect-функция в check constraint - это очевидно "левый" механизм, который просто не может нормально работать. Имхо это очевидно любому, кто задумывается, как вообще работает база. Мне, признаться, трудно поверить, что в PG есть такая лажа. Она и в оракле есть вообще-то - with check option. Впрочем, можете и в это не верить. автор3. В Oracle есть пара хакерских путей сделать такое ограничение на декларативном уровне. Но не думаю, что стоит так делать. Вы бы все-таки определились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 16:25 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
Author the new oneавторselect-функция в check constraint - это очевидно "левый" механизм, Она и в оракле есть вообще-то - with check option. Впрочем, можете и в это не верить. В то, что with check option - это пользовательская функция, я пожалуй что действительно не поверю. Спасибо за любезное разрешение. В то, что это эффективное средство поддержания декларативной целостности на уровне таблиц, я также, пожалуй, не поверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 17:37 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
softwarer, авторя также, пожалуй, не поверю Воля Ваша, я не проповедник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 17:46 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
[quot softwarer 1. select-функция в check constraint - это очевидно "левый" механизм, который просто не может нормально работать. Имхо это очевидно любому, кто задумывается, как вообще работает база. Мне, признаться, трудно поверить, что в PG есть такая лажа. [/quot] этой фигни явно не хватает в мсскл и это меня БЕСИТ!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 18:01 |
|
||
|
Проектирование бронирования
|
|||
|---|---|---|---|
|
#18+
ViPRosэтой фигни явно не хватает в мсскл и это меня БЕСИТ!!!! Знаете, уж на что я лоялен и "это можно сделать", но про эту фигню я бы восемь раз подумал и таки сказал "нормально сделать нельзя". В check constraints можно применять только детерминированные функции (равно как и в function-based indexes итп) если мы хотим, чтобы наша программа не была непредсказуемо неработающей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 19:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541916]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 442ms |

| 0 / 0 |
