> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sakila サンプルデータベース

> このチュートリアルのすべてのレッスンは、16 のテーブルと 16,044 件のレンタルを持つ DVD レンタルのスキーマである Sakila に問い合わせます。その中身と出どころを説明します。

> [card] [VillageSQL is a drop-in replacement for MySQL with extensions.](https://villagesql.com/docs/en/8.4/stable/install-server.md)
>
> All examples on this page work on VillageSQL. Install Now →

このチュートリアルのすべてのレッスンは同じデータベースに問い合わせるため、
一度ロードすれば、その後はそれについて考えずに済みます。そのデータベースが
Sakila で、2 店舗の DVD レンタルチェーンをモデル化しています。店舗が扱う映画、
それを借りる顧客、顧客に応対するスタッフ、そしてその結果として生じる支払い
です。

Sakila がチュートリアルに向いているのは、その規模のためです。1,000 本の映画と
16,044 件のレンタルは、クエリが見る価値のあるものを返すのに十分であり、
テーブルの数は全体の形を頭に入れておけるほど少ないのです。

## 中身

Sakila には 16 のデータテーブルがあります。以下は、ロードした直後のコピーでの
行数です。

| テーブル | 行数 | 内容 |
| - | - | - |
| `actor` | 200 | 俳優ごとに 1 行 |
| `address` | 603 | 顧客、スタッフ、および店舗が共有する住所 |
| `category` | 16 | 映画のジャンル |
| `city` | 600 | 都市。それぞれが国に属する |
| `country` | 109 | 国 |
| `customer` | 599 | いずれかの店舗の顧客ごとに 1 行 |
| `film` | 1000 | 映画のカタログ。レンタル料金と上映時間を含む |
| `film_actor` | 5462 | どの俳優がどの映画に出演しているか |
| `film_category` | 1000 | 各映画がどのカテゴリに属するか |
| `film_text` | 1000 | 全文検索用の映画のタイトルと説明 |
| `inventory` | 4581 | 店舗が保有する映画の物理的なコピー |
| `language` | 6 | 映画の言語 |
| `payment` | 16044 | 受け取った支払いごとに 1 行 |
| `rental` | 16044 | レンタルごとに 1 行。貸出日と返却日を含む |
| `staff` | 2 | 2 人のスタッフ |
| `store` | 2 | 2 つの店舗 |

次のレッスンで Sakila をロードしたら、これらの行数はどれも自分で確認できます。
`COUNT(*)` はテーブルが持つ行数を報告します。

```sql theme={null}
SELECT COUNT(*) FROM actor;
```

```text theme={null}
+----------+
| COUNT(*) |
+----------+
|      200 |
+----------+
1 row in set (0.00 sec)
```

Sakila には 7 つのビューもあります。ビューは、保存された行ではなく保存された
クエリです。`actor_info`、`customer_list`、`film_list`、
`nicer_but_slower_film_list`、`sales_by_film_category`、`sales_by_store`、
および `staff_list` です。どのレッスンもこれらを使いませんが、他の人が同じ
結合をどう書いたかを読みたければ、そこにあります。

## レッスンが頼るテーブル

16 すべてが必要なわけではありません。少数のテーブルがほとんどの例を担います。

* `film` は主力です。テキスト、数値、日付、および外部キーを持つため、
  ほとんどの概念はこのテーブルだけで示せます。
* `language` は 6 行しかないため、これに対するクエリは目で確認できる完全な
  結果を表示します。
* `customer`、`address`、および `city` は外部キーで連鎖しているため、結合の
  レッスンにとって自然な組み合わせです。

## 出どころ

Oracle が Sakila をサンプルデータベースとして公開しています。そのスキーマ
ファイルとデータファイルは New BSD ライセンスの対象で、通知がファイルと一緒に
配布される限り商用利用を許可しています。その通知は、これらのドキュメントを
保持するリポジトリの
[`NOTICE` ファイル](https://github.com/villagesql/villagesql-docs/blob/main/NOTICE)
に全文が再掲されています。

次のレッスンでは、Oracle から Sakila をダウンロードし、サーバーにロードします。

## 関連項目

* [Sakila をロードする](https://villagesql.com/docs/ja/tutorial/load-sakila.md) — ダウンロードしてサーバーにロードする
* [MySQL の正規化](https://villagesql.com/docs/ja/guides/normalization.md) — スキーマがデータを複数のテーブルに分ける理由
* [MySQL の外部キー](https://villagesql.com/docs/ja/guides/foreign-keys.md) — 結合のレッスンがたどる関係

MySQL is a registered trademark of Oracle and/or its affiliates. Other names
may be trademarks of their respective owners. VillageSQL is not affiliated with
or endorsed by Oracle Corporation.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.