2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

『データベースをなぜつくるのか』を読んで学んだことまとめ

Last updated at Posted at 2025-12-06

はじめに

『データベースをなぜつくるのか』の前半部分を読み、データベース設計の基礎や考え方について学びました。
この記事では、特に勉強になった点をまとめます。

データベースをなぜつくるのか 知っておきたいE-R図とSQLの基礎
Amazonで本書を見る

1章

用語

用語 英語 意味・説明
エンティティ entity データベースで管理する対象となる「もの」や「概念」。例:ユーザー、商品、注文など。
リレーションシップ relationship エンティティ同士の関係性。例:ユーザーが商品を注文する、など。
diagram エンティティやリレーションシップの構造を視覚的に表現したもの。ER図など。

2章

用語

用語 英語 意味・説明
カーディナリティ cardinality 多重度。エンティティ間の関連の数の範囲。
オプショナリティ optionality 任意性。関連が必須か任意かを示す性質。
  • カーディナリティ(多重度): 1 対 1、1 対多、多対多など、エンティティ間の関係の数的な制約。
  • オプショナリティ(任意性): 関連が「必須」か「任意」か(例:必ず関連が存在するか、なくてもよいか)。

カーディナリティ記号(テキストでの便宜的な例)

  • 1(1 つだけ)を表す記号: |
  • 多(複数)を表す記号: (または |||

※「多」を表す ||| は、ER 図の枝分かれ線(三本線や鳥の足)をテキスト上で便宜的に表現したものです。本来の ER 図記号とは異なる。

これらの記号は、ER 図の「カーディナリティ(多重度)」を示すもので、エンティティ(ボックス)同士を繋ぐ線nの最も外側に付くことで、そのエンティティ側の多重度を表す。

オプショナリティ記号(テキストでの便宜的な例)

  • オプショナリティ(任意)を表す記号: o
  • オプショナリティ(必須)を表す記号: |

「オプショナリティ(任意性)」は、カーディナリティ記号の中央寄り(外側のカーディナリティ記号の内側)に付く丸(o:任意)や縦棒(|:必須)で表現されます。これにより、そのエンティティ側の任意性(必須か任意か)を示す。

ER 図例:カーディナリティ(多重度)

1 対 1(One to One)

1 人の PERSON は 1 つの PASSPORT しか持たず、1 つの PASSPORT も 1 人の PERSON にしか紐づかない。

1 対多(One to Many)

1 人の CUSTOMER は複数の ORDER を持てる。

多対多(Many to Many)

1 人の STUDENT は複数の COURSE を受講でき、1 つの COURSE も複数の STUDENT が受講できる。

ER 図例:オプショナリティ(任意性)

  • USER と ADDRESS の関係は「0 以上」なので、ユーザーが住所を持たない場合もある(任意)。
  • USER と PROFILE の関係は「1 以上」なので、必ず 1 つ以上のプロフィールが必要(必須)。

主キー・外部キーまとめ

用語 英語 意味・説明
主キー Primary Key テーブル内で各行を一意に識別するための列。NULL 不可・重複不可。
外部キー Foreign Key 他テーブルの主キーを参照し、テーブル間の関連(リレーション)を表す。
  • 主キー(Primary Key): 各レコードを一意に特定するためのキー。例:ユーザー ID、注文 ID など。
  • 外部キー(Foreign Key): 他のテーブルの主キーを参照し、テーブル同士の関係を作るためのキー。例:注文テーブルの「ユーザー ID」列がユーザーテーブルの主キーを参照する場合など。

3章

データベース設計の手法:トップダウン型とボトムアップ型

手法 特徴・説明
トップダウン型 まず全体の業務やシステムの流れを把握し、エンティティや関係を抽出して設計する。
大枠から細部へと設計を進めるため、全体最適や抜け漏れ防止に強い。
ボトムアップ型 既存のデータや業務の現場から項目を洗い出し、テーブルや属性を積み上げて設計する。
現場の実態に即した設計ができるが、全体の統一性や最適化には注意が必要。
  • トップダウン型:業務フローや要件定義からエンティティ・リレーションシップを抽出し、ER図を作成して設計を進める。
  • ボトムアップ型:現場の帳票や既存データから項目を集め、テーブルや属性を積み上げて全体設計にまとめる。

4章

正規化とその用語まとめ

用語 意味・説明
非正規形 テーブル内に繰り返し(同じ列が複数回現れる)が存在する状態。
第1正規形 繰り返しが排除され、すべての値が原子値(分割できない値)になっている。
第2正規形 第1正規形を満たし、かつ主キーの一部にのみ依存する「部分従属性」が排除されている。
第3正規形 第2正規形を満たし、かつ主キーに直接依存しない「推移従属性」が排除されている。
部分従属性 複合主キーの一部のみに依存する属性。
推移従属性 主キー→他の属性→さらに別の属性、のように間接的に依存する属性。

基本的にはエンティティは第3正規形の形にする。
(パフォーマンス面を考慮した場合は例外あり)

  • 部分従属性: 複合主キーの一部のみに依存する属性。

例:
主キーが「学生ID, 科目ID」の複合主キーの場合、「科目名」は「科目ID」にのみ依存しており、学生IDには依存しません。これが部分従属性です。

学生ID 科目ID 科目名
1 101 数学
1 102 英語
2 101 数学
  • 推移従属性: 主キー→他の属性→さらに別の属性、のように間接的に依存する属性。

例:
主キーが「注文ID」の場合、「顧客名」は「注文ID」→「顧客ID」→「顧客名」と間接的に依存しています。これが推移従属性。

注文ID 顧客ID 顧客名
1 100 田中
2 101 鈴木

5章

インデックス(索引)とは

  • **インデックス(索引)**とは、DBMS のテーブルの列(カラム)に設定できる仕組み。
  • インデックスを設定すると、
    • 「列の値(検索キー)」と「レコード位置」の対応を示すテーブル(索引表)が作られる。
    • これにより、検索時に全件を調べる必要がなくなり、検索の効率が大幅に向上する。

イメージ図

検索キー(列の値) レコード位置
1001 1
1005 2
1010 3

インデックスは本の「索引」と同じイメージで、目的のデータをすばやく見つけるための仕組み。

導出項目(派生項目)について

  • 導出項目とは、他の項目から計算によって得られる項目のこと。
    • 例:金額 = 単価 × 数量
  • 基本設計の段階では、冗長性を避けるため導出項目は原則としてテーブルに持たせず、削除する。
  • 詳細設計の段階では、パフォーマンス(検索や集計の効率)を考慮し、必要に応じて導出項目をテーブルに残す場合もある。
項目名 内容 備考
単価 商品 1 つの価格 入力項目
数量 注文した個数 入力項目
金額 単価 × 数量で算出 導出項目(計算で求められる)

終わりに

データベースについての理解が浅かったですが、今回の学習を通じて多くの気づきがありました。

  • これまで何となく描いていたER図の意味や、カーディナリティ・オプショナリティの記号の意味がしっかり理解できました。
  • インデックスがなぜ検索を高速化できるのか、その仕組みも納得できました。
  • 良い設計を行うためには、やはり基礎知識の積み重ねが大切だと実感しました。

今後は、本書後半部分で実際にSQLiteを使って手を動かしながら、さらに理解を深めていきたいと思います。

参考情報

データベースをなぜつくるのか 知っておきたいE-R図とSQLの基礎
Amazonで本書を見る

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?