将电影放映时间存储在数据库中

时间:2013-08-11 20:21:01

标签: mysql database-design database-normalization

该应用程序用于显示哪些电影院正在展示特定的电影及其节目时间

电影表:

info about movie
+----------+----------------------+--------------+
| movie_id | movie_name           | release_date |
+----------+----------------------+--------------+
  M1            Movie A                 2013/4/4
  M2            Movie B                 2013/4/4
  M3            Movie C                 2013/4/4

电影院表:

info about cinema. One cinema can be showing multiple movies at a time

+-----------+---------------+-----------+
| cinema_id | cinema_name   | address   |
+-----------+---------------+-----------+
  C1           Cinema A       #address1
  C2           Cinema B       #address2

Current_movies表:

Table storing which cinema showing which movies.(Many to many relationship).
+-----------+----------+
| cinema_id | movie_id |
+-----------+----------+
  C1           M1
  C1           M2
  C2           M1
  C2           M2
  C2           M3

问题

我无法弄清如何存储节目时间

显示时间表示电影的开始时间。例如:2:40,5:00,8:30等。

我想这样做。

+-----------+----------+---------------+---------------+-----------------+
| cinema_id | movie_id | show_time_one | show_time_two | show_time_three |
+-----------+----------+---------------+---------------+-----------------+

但是觉得这不是正确的方法。

请建议。

另外请建议当前三个表是否有一些优化。

更新

如果您认为这个问题不合适,欢迎您投票。 但是请花一点时间评论这个问题有什么问题,如何改进它以使其回答。

2 个答案:

答案 0 :(得分:4)

您需要一个showtime表:

  cinema_id | movie_id | showtime

这三列中的所有这些列组合在一起构成了该表的主键。 showtime列可以是TIME数据类型

在该表中可能有这样的行:

  cinema_id | movie_id | showtime
  C1          M1         14:30
  C1          M1         17:00
  C1          M1         20:30

您可以使用TIME_FORMAT函数将存储的时间转换为上午/下午等。http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_time-format

这里的设计原则叫做 normalization ,你应该阅读它。

答案 1 :(得分:-1)

像这样:

cinema_id |  movie_id

然后是另一个表“showTime”:

movie_id | show_1 | show2 | show3
像这样,它的再现性和规范化程度较低