> ## 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/ko/tutorial/load-sakila.md) — 내려받아 서버에 로드하기
* [MySQL의 정규화](https://villagesql.com/docs/ko/guides/normalization.md) — 스키마가 데이터를 여러 테이블로 나누는 이유
* [MySQL의 외래 키](https://villagesql.com/docs/ko/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.