1. はじめに
先日、転職面接でデータベーススキーマ設計について質問されましたが、うまく答えられませんでした。この経験を踏まえ、自分の理解を整理するためにまとめたのが本記事です。
この記事は、以下の方に向けています。
- データベース設計の基本を整理したい初心者
- 転職面接でスキーマ設計の質問に答えたいエンジニア
2. データベーススキーマ設計とは
データベーススキーマ設計とは、データベースにどの情報を格納するか、その構造を計画する作業です。
設計で決める主な要素
-
テーブル構造:どの情報をどのテーブルに格納するか
-
データ型:文字列、数値、日付など列ごとのデータ型
-
キーの定義
- 主キー(Primary Key):各行を一意に識別
- 外部キー(Foreign Key):他テーブルとの関連
-
リレーション設計:1対1、1対多、多対多など
-
制約・インデックス:整合性の保持と検索高速化
面接でのポイント:単にテーブルを作るだけでなく、「なぜその設計にしたのか、整合性や効率性をどう保つか」を説明できることが重要です。
3. 具体例:書籍管理システム
テーブル構造
Authorsテーブル(著者情報)
| 列名 | 型 | 制約 |
|---|---|---|
| id | INT | 主キー |
| name | VARCHAR | NOT NULL |
Booksテーブル(書籍情報)
| 列名 | 型 | 制約 |
|---|---|---|
| id | INT | 主キー |
| title | VARCHAR | NOT NULL |
| author_id | INT | 外部キー → Authors.id |
リレーションの解説
- 「1人の著者が複数の書籍を書く」 → 1対多の関係
- 外部キーを使うことで、書籍データの整合性を保持できる
面接向けの説明例:
「Books.author_id は Authors.id を参照しており、1人の著者が複数の書籍を持つ関係を表現しています。これによりデータの重複や不整合を防げます。」
4. 正規化と非正規化
正規化(Normalization)
- データの重複を減らし、整合性を保つ
- 第1正規形〜第3正規形までが一般的
非正規化
- パフォーマンスや運用を考慮して、一部データを重複させる場合もある
- 例:集計済みテーブルを別に持つことで検索を高速化
面接向けポイント:
「正規化により整合性を保つが、分析用に非正規化を選ぶ場合もあります」と説明できると良い。
5. RDB vs NoSQL
| 観点 | RDB | NoSQL |
|---|---|---|
| 代表例 | MySQL, PostgreSQL, Oracle | MongoDB, Cassandra |
| 特徴 | 正規化・リレーション設計が中心 | 柔軟なスキーマ、アクセスパターン重視 |
| 適用 | 一般的な業務システム | 大規模データ、リアルタイム処理 |
初心者はまずRDBで基本を理解し、NoSQLは応用として知識を持っておくと良いです。
6. 面接で使える説明のコツ
- 設計意図をセットで説明する
- 主キー・外部キー・リレーション・制約の意味を簡潔に述べる
- 正規化やインデックスの選択理由を説明できると高評価
7. 面接での回答例
基本の質問:「データベーススキーマ設計について教えてください」
「データベーススキーマ設計とは、データをどのように整理・格納し、テーブル間の関係性をどう保つかを計画する作業です。主に、テーブル構造、データ型、主キー・外部キーの定義、リレーション設計、制約やインデックスの設定を行います。例えば書籍管理システムでは、AuthorsテーブルとBooksテーブルを作り、Books.author_idをAuthors.idの外部キーとして1対多の関係を表現することで、データの整合性を保つことができます。」
応用質問:「正規化や非正規化はどう考えますか?」
「正規化はデータの重複を減らし、整合性を保つための設計手法です。非正規化は検索や分析のパフォーマンスを向上させるため、一部データを意図的に重複させる手法です。実務では基本は正規化を行い、パフォーマンスが重要な箇所では非正規化も検討します。」
応用質問:「RDBとNoSQLの使い分けは?」
「RDBは、正規化やリレーション設計を前提に、業務データの整合性を重視する場合に適しています。特に会計データや予約システムなど、ACID特性が必須の領域ではRDBを選びます。
一方、NoSQLはスキーマが柔軟で、ドキュメント指向やキー・バリュー型などを活用し、アクセスパターンやスケーラビリティに最適化できます。SNSのフィードやセッション管理などが代表例です。」
8. まとめ
- データベーススキーマ設計は、データの整理・関連付けを計画する作業
- 主キー・外部キー・リレーション・制約の理解が重要
- 正規化・非正規化の使い分けやRDB/NoSQLの違いも押さえる
- 面接では「設計意図」と「整合性の保持」をセットで説明できると良い
9. 図解:書籍管理システムのリレーション
Authors
+----+------+
| id | name |
+----+------+
|
| 1対多
v
Books
+----+-------+-----------+
| id | title | author_id |
+----+-------+-----------+