影院 (Cinema) 1 --* 影廳 (Hall)
影廳 1 --* 座位
電影 1 --* 排片
排片 *-- 1 影廳
排片 *-- 1 電影
訂單 *-- 1 用戶
訂單 *-- 1 排片
訂單 *--* 座位 (通過訂單項 OrderItem)
| 表 | 核心欄位 |
|---|---|
| cinema | id, name, address |
| hall | id, cinema_id, name, rows, cols, seat_map (JSON) |
| film | id, title, duration, poster_url |
| schedule | id, film_id, hall_id, start_time, end_time, price |
| seat | id, hall_id, row, col, status (AVAILABLE/LOCKED/SOLD) |
| orders | id, user_id, schedule_id, total_price, status, create_time |
| order_item | id, order_id, seat_id, price |
SELECT ... FOR UPDATE 鎖定座位行 → 返回鎖定結果(Redis 分佈式鎖 + 資料庫樂觀鎖雙重保險)。version 樂觀鎖。此為中型專案經典架構,可作為畢業設計或面試專案深度講解素材。