设计一个影院订票系统的表结构,需要考虑影院、影厅、影片、场次、座位、用户和订单等核心实体。下面是一个合理且可扩展的MySQL表结构设计方案。
1. 影院信息表(cinemas)
存储影院基本信息。
id:主键 name:影院名称 address:地址 phone:联系电话 created_at:创建时间2. 影厅表(halls)
每个影院包含多个影厅。
id:主键 cinema_id:外键,关联影院 name:影厅名称(如“1号厅”) total_seats:总座位数(可选) row_count:行数 col_count:列数3. 影片表(movies)
存储电影基础信息。
id:主键 title:电影名 duration:时长(分钟) genre:类型(如动作、爱情) release_date:上映日期 director:导演 rating:评分4. 场次表(showtimes)
定义某部电影在某个影厅的播放时间。
id:主键 movie_id:外键,关联电影 hall_id:外键,关联影厅 start_time:开始时间(datetime) end_time:结束时间(可计算,也可存储) price:票价5. 座位表(seats)
定义影厅内的每个座位。
id:主键 hall_id:外键,所属影厅 row_num:行号(如A, B, C 或 1, 2, 3) col_num:列号 seat_number:座位编号(如A-5)6. 订单表(orders)
用户下单记录。
id:主键 user_id:用户ID(可关联用户表) showtime_id:场次ID total_price:订单总价 status:状态(如待支付、已支付、已取消) created_at:下单时间 updated_at:更新时间7. 订单详情表(order_items)
每个订单包含多个座位,这里记录具体座位与价格。
id:主键 order_id:外键,关联订单 seat_id:外键,关联座位 price:单价(可能因优惠变动)8. 用户表(users)
简单用户信息。
id:主键 username:用户名 phone:手机号(登录或通知用) created_at:注册时间 关键设计说明: 通过 showtimes 关联 movie、hall,实现排片管理 座位与影厅绑定,避免跨厅混乱 订单拆分为 order 和 order_items,支持一单多座 order_items 中保存 seat_id 和 price,确保历史数据完整 可通过触发器或应用层逻辑控制同一场次同一座位不可重复下单 基本上就这些。这个结构清晰,易于维护,也方便后续加功能,比如优惠券、会员价、选座图展示等。