変更要約: DP-900 第2章を AZ-900 基準まで深掘り(テーブル/型/キー/インデックス/ビュー/正規化+SQL4分類表・コード例、Azureリレーショナルサービス+IaaS/PaaS責任範囲表・選定シナリオ・FAQ)。図2枚ja化
2.1リレーショナルデータの概念
テーブル・行・列・データ型・主キー・外部キー・インデックス・ビューといったリレーショナルデータの基本概念と、正規化、SQL の4分類(DDL/DML/DQL/DCL)を理解します。
リレーショナルデータベース は、データを テーブル(表) に格納し、テーブル同士を キー で関連づけて管理します。1970 年代に提唱されたモデルで、各テーブルが明確なスキーマ(列の定義)を持つため、整合性のある業務データの管理に最も広く使われてきました。前章で学んだ「構造化データ」を扱う代表的な仕組みで、問い合わせには共通言語の SQL を使います。
2.1.1基本概念:テーブル・行・列
テーブル は、行(レコード) と 列(属性/フィールド) からなる表です。各列には データ型(整数・文字列・日付・真偽値など)が定められ、その列に入る値の種類を制約します。1行が1件のデータ(例:1人の顧客、1件の注文)を表し、列がその項目(氏名・住所・金額など)を表します。型を決めておくことで、誤ったデータの混入を防ぎ、検索や集計を正確に行えます。
2.1.2キー・インデックス・ビュー
- 主キー(primary key):各行を一意に識別する列(または列の組)。重複・空値(NULL)は不可。例:顧客ID。
- 外部キー(foreign key):別テーブルの主キーを参照し、テーブル間を関連づける。これにより参照整合性(存在しない相手を参照しない)が保たれる。
- インデックス(index):特定の列の検索を高速化する仕組み。本の索引のような役割で、読み取りは速くなるが書き込み時の更新コストが増える。
- ビュー(view):1つ以上のテーブルから導かれる仮想の表。よく使う問い合わせを名前付きで再利用でき、必要な列だけ見せる用途にも使う。
2.1.3正規化
正規化 は、重複を減らし整合性を保つようにテーブルを分割・設計する手法です。たとえば「注文」テーブルに顧客の住所を毎回書くと、住所変更時に全行を直す必要があり、直し漏れで矛盾(更新時異常)が起きます。顧客情報を別テーブルに分け、外部キーで参照すれば、住所は1か所だけ直せば済みます。正規化はデータの正しさを支える OLTP 向けの基本設計で、逆に分析(OLAP)では集計しやすさを優先してあえて非正規化することもあります。
2.1.4SQL の基本
SQL(Structured Query Language)は、リレーショナルデータベースを操作する共通言語です。命令はおおまかに4つに分類されます。
| 分類 | 役割 | 代表的な命令 |
|---|---|---|
| DDL(定義) | 構造を定義・変更 | CREATE / ALTER / DROP |
| DML(操作) | データを変更 | INSERT / UPDATE / DELETE |
| DQL(問い合わせ) | データを取得 | SELECT |
| DCL(権限) | アクセス権を管理 | GRANT / REVOKE |
SELECT customer_id, name
FROM customers
WHERE city = 'Tokyo'
ORDER BY name;シナリオ:受注管理。 customers(顧客)と orders(注文)の2テーブルを用意し、orders に customer_id を外部キーとして持たせて顧客を参照。顧客情報の重複を避ける(正規化)。「東京の顧客の一覧」は SELECT(DQL)で取得、新規注文は INSERT(DML)、テーブル定義の変更は ALTER(DDL)。customer_id 列にインデックスを張れば結合・検索が速くなります。
混同に注意:
①主キー(自テーブルの行を一意に識別)と外部キー(他テーブルの主キーを参照して関連づけ)を取り違えない。
②SELECT=DQL(取得)/INSERT・UPDATE・DELETE=DML(変更)/CREATE・ALTER・DROP=DDL(定義)。
③インデックスは読み取りを速くするが、書き込みのたびに更新コストがかかる(無制限に張ればよいわけではない)。
Q. 主キーと一意制約(UNIQUE)の違いは? どちらも重複を許しませんが、主キーは1テーブルに1つで NULL 不可、UNIQUE は複数設定でき NULL を許す場合があります。Q. ビューは実データを持つ? いいえ、ビューは問い合わせの定義(仮想の表)で、参照時に元テーブルから計算されます。Q. なぜ型を決める? 不正な値の混入を防ぎ、検索・集計・並び替えを正しく速く行うためです。
主キー=一意に識別/外部キー=テーブル間の関連/インデックス=検索高速化/ビュー=仮想の表、そして SELECT=DQL/INSERT等=DML/CREATE等=DDL/GRANT等=DCL の対応が頻出です。正規化=重複削減で更新時異常を防ぐ。
2.1.5この節のまとめ
- リレーショナル=テーブル(行・列・型)+キーでデータを関連づける構造化データの仕組み
- 主キー(一意識別)/外部キー(関連・参照整合性)/インデックス(高速化)/ビュー(仮想表)/正規化(重複削減)
- SQL:DDL(定義)/DML(変更)/DQL=SELECT(取得)/DCL(権限)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. リレーショナルデータベースで各行を一意に識別する列はどれですか?
Q2. データを問い合わせて取得する SQL ステートメントはどれですか?
Q3. テーブル同士を関連づけるために、別テーブルの主キーを参照する列はどれですか?
Q4. 特定の列での検索を高速化するために使うものはどれですか?
Q5. テーブル定義(構造)を作成・変更・削除する SQL の分類はどれですか?
Q6. 正規化を行う主な目的はどれですか?

