Какой тип данных MySQL использовать для планирования? (Часть 2)

Часть 1: Какой тип данных MySQL использовать для планирования?

В части 1 моего вопроса я спросил, какой тип данных MySQL использовать, скажем, для планирования фильмов в кинотеатре. При планировании фильма вам необходимо знать дату (например, 1 января 2011 г.) и время (например, 9:00). Пожалуйста, не обсуждайте здесь часть 1 моего вопроса.

Вот моя часть 2: что, если бы я хотел сохранить ежедневные часы работы кинотеатров? Например:

  • Понедельник, 9:00 - 21:00
  • Вторник, 9:00 - 17:00
  • и т.п.

Каков хороший способ представить это в базе данных? Имейте в виду, что в этом случае дата не имеет значения (например, мне не нужно знать, какого числа конкретный понедельник). Я говорю только о днях недели и времени суток.

Вот как я, вероятно, сделал бы это:

TABLE: schedule
- schedule_id
- day (ENUM: 0, 1, 2, 3, 4, 5, 6)
- start_time (INT)
- end_time (INT)

start_time и end_time означают количество минут, прошедших с полуночи. Итак, 0 — полночь, 1 — 00:01, 2 — 00:02 и так далее.

Правильно ли я подхожу к этому? Предложения?


person StackOverflowNewbie    schedule 30.10.2011    source источник


Ответы (1)


Как я уже сказал в моем ответе на ваш первый вопрос, на мой взгляд, человек должен использовать тот тип данных, который лучше подходит и описывает реальность. В этом случае я хотел бы использовать тип Time для поля start_time и end_time.

Вместо поля day я хотел бы использовать числа от 1 до 7.

person Aurelio De Rosa    schedule 30.10.2011
comment
Привет, Аурелио, я просто стараюсь не вдаваться в типы данных, которые я не совсем понимаю. Итак, в моем предложенном дизайне таблицы вы предлагаете мне просто заменить 2 INT на Time? ENUM для day в порядке? - person StackOverflowNewbie; 31.10.2011
comment
@StackOverflowNewbie Я обновляю свой ответ. В любом случае, да... Я хотел бы изменить INT на TIME, так как этот тип данных лучше описывает ваши потребности. - person Aurelio De Rosa; 31.10.2011
comment
Почему вы предпочитаете 1-7 вместо 0-6? - person StackOverflowNewbie; 31.10.2011
comment
Во-первых, потому что мы люди, а не компьютеры, поэтому мы обычно начинаем с 1, а не с 0. Вторая и более важная причина заключается в том, что вы можете иметь тот же самый индекс, который будет возвращен из таких функций: dev.mysql.com/doc/refman/5.5/en/< /а> - person Aurelio De Rosa; 31.10.2011
comment
Мне нравится твоя вторая причина. Спасибо! - person StackOverflowNewbie; 31.10.2011