データベース設計は、コンピュータの中で情報を整理して、
「だれでも効率よく、間違えずに使えるようにする」ための設計作業です。
この記事で分かること(目次)
1. データベース設計の流れ
- 要求分析
- どんなデータが必要か?
- 誰が、どんな操作をするのか?を整理。
- 例:図書館なら「本」「利用者」「貸出履歴」が必要。
- 概念設計(ER図)
- 実体(エンティティ)と関係(リレーションシップ)を図にする。
- 例:「利用者」―「借りる」―「本」 という関係を描く。
- 論理設計
- 表(テーブル)に落とし込む。
- 例:「利用者表」「本表」「貸出表」。
- 正規化
- データの重複や矛盾をなくす整理。
- 例:「利用者の住所」を毎回「貸出表」に書いたら無駄!→「利用者表」にまとめる。
- 物理設計
- 実際にデータベース(RDBMS: Oracle, MySQL, PostgreSQLなど)にどう作るかを決める。
- インデックスやアクセス効率も考える。
2. 信頼性の工夫
- 主キー(Primary Key)
データを一意に識別するためのキー。例:学生番号。 - 参照整合性
存在しない「学生番号」が「成績表」に書かれないように制御。
3. 外部キーとは?
- ある表(テーブル)の列が、別の表の主キーを参照しているもの を外部キーといいます。
- データベースでは、複数の表をつないで正しくデータを扱うために重要な役割を持っています。
🌰 具体例(生徒とクラス)
- 生徒テーブル
| 生徒ID (主キー) | 名前 | クラスID (外部キー) |
|—————–|——–|——————-|
| 1 | 太郎 | A1 |
| 2 | 花子 | A2 |
| 3 | 次郎 | A1 | - クラステーブル
| クラスID (主キー) | クラス名 |
|——————-|————|
| A1 | 1年1組 |
| A2 | 1年2組 |
👉 このとき、生徒テーブルの「クラスID」は、クラステーブルの「クラスID」を参照しています。
これが 外部キー です。
🔹 外部キーを使う意味
- データの整合性を保つ
例:存在しないクラスID(A3など)を生徒テーブルに入れようとするとエラーになる。 - 表をつないで使える(リレーションシップ)
例:生徒テーブルとクラステーブルを結合して「太郎は1年1組」と調べられる。
📝 基本情報技術者試験(過去問例)
【過去問1】
リレーショナルデータベースにおいて、外部キーに関する説明として適切なものはどれか。
- その表の行を一意に識別する。
- 参照先の主キーと対応しており、整合性を保証する。
- 表内の列の値が NULL にならないようにする。
- データ検索の高速化を目的とする。
👉 正解:2
【過去問2】(平成29年春 午前)
データベース設計において、正規化の目的はどれか。
A. データの検索を高速化するため
B. データの重複や矛盾をなくすため
C. データの暗号化を行うため
D. データベースを分散化するため
👉 解答:B
【過去問3】(令和3年秋 午前)
リレーショナルデータベースにおける主キーの説明として正しいものはどれか。
A. 表の行を一意に識別するための列
B. 表と表を結合するための列
C. 更新を高速化するための列
D. 暗号化に利用する列
👉 解答:A
【過去問4】(平成30年秋 午前)
「学生表(学籍番号, 氏名, 所属学科, 学科主任)」のデータを考える。
この表を正規化する理由として適切なのはどれか。
A. 学生ごとに学科主任が重複して記録されるのを避けるため
B. 学生ごとに所属学科を分割するため
C. 学生ごとに学籍番号を繰り返して記録するため
D. 学生ごとに氏名を結合するため
👉 解答:A
🎈 例えてみると
データベースは「おもちゃ箱」に例えるとわかりやすいです。
- おもちゃ箱に「ミニカー」と「ぬいぐるみ」をゴチャゴチャに入れると、探すのが大変。
→ ちゃんと「ミニカーの箱」「ぬいぐるみの箱」に分ける(正規化)。 - おもちゃの箱には「ラベル(名前シール)」を貼る(主キー)。
→ 「これは○○ちゃんのぬいぐるみだよ」と分かる。
こうして整理すると、みんなで使っても混乱しません。
