MySQL Sakila 数据库简介

Sakila 是一个流行的开源数据库示例,用于演示如何在实际应用中使用 MySQL,它由五种主要的数据表组成,涵盖了电影租赁业务的基本需求,以下是对 Sakila 数据库的详细描述,包括数据表结构、字段信息以及表之间的关系。
1. 数据表结构
a. actor(演员表)
| 字段名 | 数据类型 | 说明 |
| actor_id | smallint(5) | 演员ID,主键 |
| first_name | varchar(45) | 名字 |
| last_name | varchar(45) | 姓氏 |
| last_update | timestamp | 最后更新时间 |
b. actor_info(演员信息表)
| 字段名 | 数据类型 | 说明 |
| actor_id | smallint(5) | 演员ID,外键 |
| info | text | 演员详细信息 |
c. address(地址表)
| 字段名 | 数据类型 | 说明 |
| address_id | smallint(5) | 地址ID,主键 |
| address | varchar(50) | 地址 |
| district | varchar(20) | 区域 |
| city_id | smallint(5) | 城市ID,外键 |
| postal_code | varchar(10) | 邮编 |
| phone | varchar(20) | 电话 |
| last_update | timestamp | 最后更新时间 |
d. category(分类表)
| 字段名 | 数据类型 | 说明 |
| category_id | smallint(5) | 分类ID,主键 |
| name | varchar(25) | 分类名称 |
| last_update | timestamp | 最后更新时间 |
e. city(城市表)
| 字段名 | 数据类型 | 说明 |
| city_id | smallint(5) | 城市ID,主键 |
| city | varchar(50) | 城市名称 |
| country_id | smallint(5) | 国家ID,外键 |
| last_update | timestamp | 最后更新时间 |
f. country(国家表)
| 字段名 | 数据类型 | 说明 |
| country_id | smallint(5) | 国家ID,主键 |
| country | varchar(50) | 国家名称 |
| last_update | timestamp | 最后更新时间 |
g. customer(客户表)
| 字段名 | 数据类型 | 说明 |
| customer_id | smallint(5) | 客户ID,主键 |
| first_name | varchar(45) | 名字 |
| last_name | varchar(45) | 姓氏 |
| varchar(50) | 邮箱 | |
| address_id | smallint(5) | 地址ID,外键 |
| active | tinyint(1) | 是否活跃 |
| create_date | date | 创建日期 |
| last_update | timestamp | 最后更新时间 |
h. film(电影表)
| 字段名 | 数据类型 | 说明 |
| film_id | smallint(5) | 电影ID,主键 |
| title | varchar(255) | 电影标题 |
| description | text | 电影描述 |
| release_year | year | 发行年份 |
| language_id | smallint(5) | 语言ID,外键 |
| original_language_id | smallint(5) | 原始语言ID,外键 |
| rental_duration | tinyint(3) | 租赁时长 |
| length | smallint(3) | 片长(分钟) |
| rating | enum('G','PG','PG13','R','NC17','PG','NR') | 评级 |
| special_features | char(1) | 特殊特性(如“Trailers”) |
| last_update | timestamp | 最后更新时间 |
i. film_actor(电影与演员关系表)
| 字段名 | 数据类型 | 说明 |
| actor_id | smallint(5) | 演员ID,外键 |
| film_id | smallint(5) | 电影ID,外键 |
| last_update | timestamp | 最后更新时间 |
j. film_category(电影与分类关系表)
| 字段名 | 数据类型 | 说明 |
| film_id | smallint(5) | 电影ID,外键 |
| category_id | smallint(5) | 分类ID,外键 |
| last_update | timestamp | 最后更新时间 |
k. inventory(库存表)
| 字段名 | 数据类型 | 说明 |
| inventory_id | smallint(5) | 库存ID,主键 |
| film_id | smallint(5) | 电影ID,外键 |
| store_id | smallint(5) | 店铺ID,外键 |
| last_update | timestamp | 最后更新时间 |
l. language(语言表)
| 字段名 | 数据类型 | 说明 |
| language_id | smallint(5) | 语言ID,主键 |
| name | varchar(20) | 语言名称 |
| last_update | timestamp | 最后更新时间 |
m. payment(支付表)
| 字段名 | 数据类型 | 说明 |
| payment_id | smallint(5) | 支付ID,主键 |
| customer_id | smallint(5) | 客户ID,外键 |
| staff_id | smallint(5) | 员工ID,外键 |
| rental_id | smallint(5) | 租赁ID,外键 |
| amount | decimal(10,4) | 金额 |
| payment_date | date | 支付日期 |
| last_update | timestamp | 最后更新时间 |
n. rental(租赁表)
| 字段名 | 数据类型 | 说明 |
| rental_id | smallint(5) | 租赁ID,主键 |
| rental_date | date | 租赁日期 |
| inventory_id | smallint(5) | 库存ID,外键 |
| customer_id | smallint(5) | 客户ID,外键 |
| return_date | date | 返回日期 |
| staff_id | smallint(5) | 员工ID,外键 |
| last_update | timestamp | 最后更新时间 |
o. staff(员工表)
| 字段名 | 数据类型 | 说明 |
| staff_id | smallint(5) | 员工ID,主键 |
| first_name | varchar(45) | 名字 |
| last_name | varchar(45) | 姓氏 |
| address_id | smallint(5) | 地址ID,外键 |
| varchar(50) | 邮箱 | |
| store_id | smallint(5) | 店铺ID,外键 |
| active | tinyint(1) | 是否活跃 |
| username | varchar(16) | 用户名 |
| password | varchar(40) | 密码(加密存储) |
| last_update | timestamp | 最后更新时间 |
p. store(店铺表)
| 字段名 | 数据类型 | 说明 |
| store_id | smallint(5) | 店铺ID,主键 |
| manager_id | smallint(5) | 管理员ID,外键 |
| address_id | smallint(5) | 地址ID,外键 |
| last_update | timestamp | 最后更新时间 |
2. 表之间的关系
actor 和 film_actor 表通过 actor_id 关联。
film 和 film_category 表通过 film_id 关联。
address 和 customer 表通过 address_id 关联。
film 和 inventory 表通过 film_id 关联。