利用mysql制作一个影片影片管理系统
时间: 2024-05-28 19:03:36 浏览: 97
好的,下面是一个简单的影片管理系统的 MySQL 数据库设计:
### 数据库设计
#### 影片表
| 列名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 影片ID,自增 |
| title | varchar | 影片标题 |
| director | varchar | 导演 |
| actor | varchar | 演员 |
| description | text | 影片简介 |
| release_date | date | 上映日期 |
| duration | int | 持续时间(分钟) |
| rating | decimal | 评分 |
| poster_url | varchar | 海报图片URL |
#### 影片类型表
| 列名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 类型ID,自增 |
| name | varchar | 类型名称 |
#### 影片-类型关联表
| 列名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 关联ID,自增 |
| film_id | int | 影片ID |
| type_id | int | 类型ID |
### 数据库操作
#### 创建数据库
首先需要创建一个名为 `film_management_system` 的数据库:
```
CREATE DATABASE film_management_system;
```
#### 创建表
接着,我们可以使用以下 SQL 语句来创建上述三个表:
```
USE film_management_system;
CREATE TABLE films (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
director VARCHAR(255),
actor VARCHAR(255),
description TEXT,
release_date DATE,
duration INT,
rating DECIMAL(2,1),
poster_url VARCHAR(255)
);
CREATE TABLE film_types (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);
CREATE TABLE film_type_relations (
id INT PRIMARY KEY AUTO_INCREMENT,
film_id INT NOT NULL,
type_id INT NOT NULL,
FOREIGN KEY (film_id) REFERENCES films(id),
FOREIGN KEY (type_id) REFERENCES film_types(id)
);
```
#### 插入数据
接下来,我们可以向表中插入一些示例数据:
```
INSERT INTO films (title, director, actor, description, release_date, duration, rating, poster_url) VALUES
('肖申克的救赎', '弗兰克·德拉邦特', '蒂姆·罗宾斯,摩根·弗里曼', '本片根据斯蒂芬·金的同名小说改编', '1994-09-10', 142, 9.7, 'http://example.com/shawshank_redemption.jpg'),
('白日梦想家', '史蒂文·斯皮尔伯格', '莱昂纳多·迪卡普里奥,汤姆·汉克斯', '根据弗兰克·阿巴涅尔的小说《生命中不能承受之轻》改编', '2002-12-25', 141, 9.5, 'http://example.com/catch_me_if_you_can.jpg');
INSERT INTO film_types (name) VALUES
('剧情'),
('犯罪');
INSERT INTO film_type_relations (film_id, type_id) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 2);
```
#### 查询数据
最后,我们可以使用 SELECT 语句来查询数据:
```
SELECT f.title, f.director, f.actor, f.description, f.release_date, f.duration, f.rating, f.poster_url, GROUP_CONCAT(t.name) as types
FROM films f
LEFT JOIN film_type_relations r ON f.id = r.film_id
LEFT JOIN film_types t ON r.type_id = t.id
GROUP BY f.id;
```
这将返回所有影片的标题、导演、演员、简介、上映日期、持续时间、评分、海报图片URL以及所属类型名称(多个类型名称用逗号分隔)。
阅读全文