电影票销售管理系统mysql
时间: 2024-12-25 09:21:57 浏览: 7
### 电影票销售管理系统 MySQL 数据库设计与实现
#### 设计目标
为了满足电影票销售管理系统的功能需求,数据库设计需支持多种操作,包括但不限于电影信息存储、影厅安排、座位预订以及订单处理等功能。
#### 表结构设计
##### Table_Movie (电影表)
用于保存每部电影的相关信息。字段可能包括:
| 字段名 | 类型 | 描述 |
|------------|-------------|--------------|
| movie_id | INT PRIMARY KEY | 唯一标识符 |
| title | VARCHAR(255)| 影片名称 |
| duration | TIME | 片长 |
| release_date | DATE | 上映日期 |
此表负责维护所有上映影片的基础资料[^4]。
##### Table_Hall (影厅表)
描述各放映厅的具体情况,如容量大小等参数。主要属性有:
| 字段名 | 类型 | 描述 |
|--|-------------|-----------------|
| hall_id | INT PRIMARY KEY | 唯一编号 |
| name | VARCHAR(100)| 名称 |
| capacity | INT | 座位总数 |
| layout | TEXT | 排列布局图示说明|
该表记录了不同影厅的空间配置详情。
##### Table_Showtime (场次时间表)
关联`Table_Movie` 和 `Table_Hall` ,定义具体某天某个时间段内播放哪部电影于哪个影厅之中。其核心要素如下所示:
| 字段名 | 类型 | 描述 |
|--|------------------|-------------------|
| showtime_id| INT PRIMARY KEY | 场次唯一ID |
| movie_id | INT FOREIGN KEY REFERENCE Table_Movie(movie_id) | 对应的电影 ID |
| hall_id | INT FOREIGN KEY REFERENCES Table_Hall(hall_id) | 所属影厅 ID |
| start_time | DATETIME | 开始时刻 |
| end_time | DATETIME | 结束时刻 |
通过这张表可以清晰了解每天各个时段内的排片计划[^3]。
##### Table_Seat (座位表)
针对每一个具体的影厅创建对应的座位分布模型。基本组成单元为:
| 字段名 | 类型 | 描述 |
|------------|-------------|--------------------|
| seat_id | INT PRIMARY KEY | 座位唯一识别码 |
| row_num | CHAR(2) | 排号 |
| col_num | TINYINT | 列数 |
| status | ENUM('available', 'booked') | 当前状态可用与否 |
这里的状态用来标记当前座位是否已经被预定过。
##### Table_OrderDetail (订单明细表)
当顾客完成一次购买行为之后,在本表中新增一条或多条记录来反映此次交易的内容。涉及的关键项如下所列:
| 字段名 | 类型 | 描述 |
|--|------------------------|
| order_detail_id | INT PRIMARY KEY AUTO_INCREMENT | 订单细节自增主键 |
| user_id | INT | 用户账号关联外键 |
| showtime_id| INT FOREIGN KEY REFERENCES Table_Showtime(showtime_id) | 关联到特定的一场演出 |
| total_price| DECIMAL(8,2) | 总价 |
| purchase_time | TIMESTAMP DEFAULT CURRENT_TIMESTAMP | 购买发生的时间戳 |
每当用户成功下单后即在此处留下痕迹。
##### Table_OrderSeat (已售座位表)
一旦某些位置被选定并支付,则会在该表里登记这些已被占用的位置信息。主要内容包含:
| 字段名 | 类型 | 描述 |
|------------|
| id | INT PRIMARY KEY AUTO_INCREMENT | 自动增长的主键 |
| order_detail_id | INT FOREIGN KEY REFERENCES Table_OrderDetail(order_detail_id) | 外键链接至订单明细表中的项目 |
| seat_id | INT FOREIGN KEY REFERENCES Table_Seat(seat_id) | 实际卖出的那个座位的信息 |
每次成功的购票都会触发向这两张表写入数据的操作。
---
```sql
CREATE TABLE IF NOT EXISTS Table_Movie (
movie_id INT PRIMARY KEY,
title VARCHAR(255),
duration TIME,
release_date DATE
);
CREATE TABLE IF NOT EXISTS Table_Hall (
hall_id INT PRIMARY KEY,
name VARCHAR(100),
capacity INT,
layout TEXT
);
CREATE TABLE IF NOT EXISTS Table_Showtime (
showtime_id INT PRIMARY KEY,
movie_id INT,
hall_id INT,
start_time DATETIME,
end_time DATETIME,
FOREIGN KEY (movie_id) REFERENCES Table_Movie(movie_id),
FOREIGN KEY (hall_id) REFERENCES Table_Hall(hall_id)
);
CREATE TABLE IF NOT EXISTS Table_Seat (
seat_id INT PRIMARY KEY,
row_num CHAR(2),
col_num TINYINT,
status ENUM('available','booked')
);
CREATE TABLE IF NOT EXISTS Table_OrderDetail(
order_detail_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
showtime_id INT,
total_price DECIMAL(8,2),
purchase_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (showtime_id) REFERENCES Table_Showtime(showtime_id)
);
CREATE TABLE IF NOT EXISTS Table_OrderSeat(
id INT PRIMARY KEY AUTO_INCREMENT,
order_detail_id INT,
seat_id INT,
FOREIGN KEY (order_detail_id) REFERENCES Table_OrderDetail(order_detail_id),
FOREIGN KEY (seat_id) REFERENCES Table_Seat(seat_id)
);
```
阅读全文