索引 / 001 JA
Database Design for Mere Mortals: 25th Anniversary Edition(普通の人のためのデータベース設計 25周年記念版) cover

コンピュータサイエンス

コンピュータサイエンス

Database Design for Mere Mortals: 25th Anniversary Edition(普通の人のためのデータベース設計 25周年記念版)

Michael J. Hernandez

英語原題: Database Design for Mere Mortals: 25th Anniversary Edition

リレーショナルデータベースの設計を平易な言葉で説明する手引き。利用者への聞き取りや既存システムの分析から始め、テーブル、キー、フィールド、リレーションシップ、ビジネスルールの定義へと進む段階的な方法として構成されている。正規化の考え方を形式的な理論ではなく例を通じて説明し、特定のデータベース製品に依存しない。

前提知識: 不要。プログラミング、SQL、数学の予備知識は前提としない。

難易度レベル
初級
学術レベル
学部
databasesrelational designdata modellingnormalizationdata integrity入門

01 / 読書ガイド

読書ガイド

引用

Hernandez, M. J. (2020). Database Design for Mere Mortals: 25th Anniversary Edition (4th ed.). Addison-Wesley Professional.

章の要約

本書は3部16章に8つの付録と用語集を加えた構成で、全体で約640ページある。扱うのはリレーショナルデータベースの論理設計だけである。著者は論理設計を物理的な実装やアプリケーション開発から切り離し、本文にはSQLもプログラムコードも特定のデータベース製品も登場させない。第I部(第1–3章)はデータベース、設計の目的、用語を紹介し、第II部(第4–13章)は設計プロセスを教え、第III部(第14–16章)は悪い設計と例外を扱う。第1–13章は要約で終わり、ほぼすべての章に復習問題が付く。第4版では第5–13章の末尾に、実例を通して作業を示す「Example」節が加わった。

第1章:The Relational Database(リレーショナルデータベース)

データベースとは何か、リレーショナルデータベースがどのようにデータを保存し取り出すか、その利点、そしてリレーショナルデータベース管理システムの役割を説明する。第4版では古くなった内容を削り、リレーショナルデータベースの現状と将来についての著者の見方を述べる「What's Next?」節を加えた。

第2章:Design Objectives(設計の目的)

設計がデータの一貫性、完全性、正確性を左右すると論じる。良い設計の目的(必須の照会とアドホックな照会への対応、一つの主題だけを扱うテーブル、フィールド・テーブル・リレーションシップの各レベルでの完全性、ビジネスルールへの対応、将来の拡張の余地)とその利点を挙げる。続いて、従来の手法(要求分析、データモデリング、正規化)と本書独自の手法を比べる。本書の手法は要求分析と基本的な実体関連図の描き方を取り入れるが、正規形を順にたどる作業は行わない。

第3章:Terminology(用語)

手法が依拠する語彙を紹介する。値に関する用語(データ、情報、ヌルとヌルが引き起こす問題)、構造に関する用語(テーブル、フィールド、レコード、ビュー、キー、インデックス)、リレーションシップに関する用語(リレーションシップの種類、参加の種類と参加の程度)、完全性に関する用語(フィールド仕様、データ完全性)に分けて説明する。

第4章:Conceptual Overview(概念的な概観)

一歩ずつ教える前に、プロセス全体の見取り図を示す。ミッションステートメントと目標、現行データベースの分析、データ構造、リレーションシップ、ビジネスルール、ビュー、そして最後の完全性の見直しである。

第5章:Starting the Process(プロセスの開始)

インタビューの進め方(参加者向けと聞き手向けのガイドライン。この版でオンライン会議と在宅勤務に合わせて改訂された)と、設計の焦点を定めるミッションステートメントとミッション目標の書き方を扱う。

第6章:Analyzing the Current Database(現行データベースの分析)

紙ベースのデータベースとレガシーデータベース、現在のデータの収集方法と提示方法、利用者と経営陣へのインタビュー技法(現在の、追加の、将来の、そして全体の情報要件)を検討し、予備フィールドリストと計算フィールドリストを作成して見直す。

第7章:Establishing Table Structures(テーブル構造の確立)

主題を予備的なテーブルリストへ、さらに最終的なテーブルリストへとまとめ、名前の付け方、テーブルの種類、説明文を整える。フィールドをテーブルに割り当て、「理想的なフィールド」に照らして複合フィールドと多値フィールドを解消し、「理想的なテーブル」に照らしてテーブルを洗練する。サブセットテーブルや冗長データの扱いもここで論じる。

第8章:Keys(キー)

候補キー、主キー、代替キー、非キーのフィールドを説明し、主キーの選び方とキーがもたらすテーブルレベルの完全性を述べ、最後に初期のテーブル構造を見直す。

第9章:Field Specifications(フィールド仕様)

著者によれば多くの開発者が軽視しがちなフィールド仕様を、フィールドレベルの完全性の源として扱う。仕様には一般的要素、物理的要素、論理的要素があり、固有・汎用・複製の仕様を使い分けることで、すべてのフィールドを文書化する手間が減ることを示す。

第10章:Table Relationships(テーブルのリレーションシップ)

最も長い章である。1対1、1対多、多対多、自己参照のリレーションシップを取り上げ、それぞれの見つけ方と確立の仕方、外部キーの洗練、リレーションシップの特性(削除ルール、参加の種類、参加の程度)の設定を扱う。

第11章:Business Rules(ビジネスルール)

ビジネスルールとは何か、どのような種類があるかを説明し、フィールド固有のルールとリレーションシップ固有のルールに分類する。利用者や経営陣とともにルールを定め、仕様シートに記録する方法を示し、データを通じてルールを強制する手段として検証テーブルを導入する。

第12章:Views(ビュー)

データビュー、集計ビュー、検証ビューを説明し、利用者が必要とするビューを見極め、定義し、文書化する方法を述べる。

第13章:Reviewing Data Integrity(データ完全性の見直し)

テーブル・フィールド・リレーションシップの各レベルの完全性、ビジネスルール、ビューをもう一度点検し、設計の最終文書をまとめる。

第14–16章:Bad Design—What Not to Do(悪い設計:してはいけないこと);Bending or Breaking the Rules(ルールを曲げる、あるいは破る);In Closing(結びに)

第14章は、フラットファイル型やスプレッドシート型の設計、特定製品の機能に引きずられた設計を戒める。第15章は、手法から外れることが正当化されうるまれな場合として分析用データベースと処理性能を挙げ、逸脱はすべて文書化するよう求める。第16章は短い結びである。

付録

復習問題の解答、設計プロセス全体の図、設計ガイドラインの一覧、空欄の文書化フォーム(フィールド仕様、ビジネスルール仕様、ビュー仕様)、図の記号、設計例、正規化を手法にどう組み込んだかの解説(「On Normalization」)、推薦図書を収める。

主要概念

第1–3章:基礎

  • 論理設計:実装に先立って、テーブル、フィールド、キー、リレーションシップ、完全性を決めること。本書が扱う唯一の段階である。
  • 参加の種類と程度:あるレコードがリレーションシップに必ず参加しなければならないか、また関連するレコードをいくつまで持てるか。

第4–13章:設計プロセス

  • ミッションステートメントとミッション目標:データベースの目的と、それが支えるべき作業を短く述べたもので、設計全体の指針となる。
  • 複合フィールドと多値フィールド:複数のデータ項目や複数の値を抱えたフィールドで、手法はこれを別々のフィールドやテーブルに分解して解消する。
  • 主キー、候補キー、代替キー:レコードを一意に識別するフィールドで、テーブルレベルの完全性の基礎となる。
  • フィールド仕様:フィールドの一般的・物理的・論理的な性質を文書化したもので、フィールドレベルの完全性を確保する。
  • 削除ルール:リレーションシップの一方のレコードが削除されたとき、関連するレコードがどうなるかを定めるもの。
  • ビジネスルールと検証テーブル:組織の業務のあり方から生じる制約で、許される値を並べたテーブルによって強制されることもある。
  • 完全性のレベル:テーブル、フィールド、リレーションシップの完全性とビジネスルール。プロセスの最後にまとめて点検される。

第14–15章:その他の問題

  • フラットファイル設計とスプレッドシート設計:本書が冗長で不整合なデータの原因とみなす、よくある構成。
  • 文書化されたルールの逸脱:分析や性能などの理由がある場合に限って手法から外れ、その理由を記録すること。

批判的分析

長所

  • インタビューから文書化まで一貫した手法。 第II部はミッションステートメントから最後の完全性の見直しまで、一つのプロセスを順にたどり、繰り返し使うフォームは付録にまとめられている。著者が本書を順番どおりに読むよう勧めるのはこのためである。
  • 前提知識が不要で、製品に依存しない。 序論はデータベース設計の予備知識が不要だと明言し、本文はSQL、プログラミング言語、特定のデータベースシステムの機能を避けているので、後でどのシステムを使っても手法をそのまま適用できる。
  • 要求の収集に厚い。 第5章と第6章は80ページ以上を使って、インタビュー、ミッション目標、既存の紙ベースやレガシーシステムの分析を扱う。多くのデータベース教科書が手短に済ませる段階である。
  • 独習向けの作り。 付録Aに解答がある復習問題、プロセス図、設計ガイドラインの一覧、第5–13章末に新たに加わった実例が、一人で読む読者を支える。

短所

  • 正規化は本文の外に置かれている。 手法は正規形を教える代わりに、正規化の効果を各手順に組み込んでいる。正規形が登場するのは第2章の短い紹介と付録だけである。関数従属性や正規形を扱う授業の受講者は、その部分について別の教科書が必要になる。
  • 論理設計に限られる。 序論は物理的な実装とアプリケーション開発を対象外としているため、SQL、問い合わせ処理、トランザクション、記憶構造は扱われない。
  • 意図的に単純化された例。 著者は、技法を示すために一部の例をあえて単純化し、不完全にし、時には誤ったものにしていると断っている。本書自身が勧めるとおり、例そのものではなく技法に注目して読むべきである。

コースにおける位置づけ

データベースのコースの中で、本書は最も取りつきやすい入口であり、設計だけに専念した唯一の本である。Coronel と Morris の Database Systems: Design, Implementation, and Management はSQLや組織におけるデータ管理まで扱う幅広い入門教科書である。本書はその前に、あるいはそのデータモデリングの章と並行して読むと、設計プロセスをよりゆっくり実践的にたどることができる。Silberschatz、Korth、Sudarshan の Database System Concepts と Elmasri と Navathe の Fundamentals of Database Systems は、正規形、問い合わせ処理、トランザクションを形式的に教える、より本格的なコンピュータサイエンスの教科書である。本書はそうした授業の設計部分について直観と練習を与えるが、それらの代わりにはならない。

Ramakrishnan と Gehrke の Database Management Systems と Gray と Reuter の Transaction Processing は、データベースシステムが内部でどう動くかを扱う。本書が意図的に扱わない領域であり、リレーショナル設計とSQLに慣れてから読むとよい。

本書の使い方

序論が想定する読者は、データベースの仕事に初めて取り組む人、データベースソフトを使ってきて今度は自分でデータベースを作る必要がある人、そして手法なしにデータベースを作ってきたプログラマーである。数学、プログラミング、SQLの知識は前提としない。

  • 中核: 目的と語彙を学ぶ第2–3章、プロセスの全体図を示す第4章、そして設計の中身の大半を担う第7–10章(テーブル、キー、フィールド仕様、リレーションシップ)。
  • 要求の作業: 第5–6章は、組織のために実際のシステムを設計する読者にとって最も重要である。理論寄りの授業の受講者は流し読みでよい。
  • 完全性とルール: 第11–13章が手法を完成させる。授業が制約を重視する場合は第11章を丁寧に読むこと。
  • 任意: リレーショナルデータベースが何かをすでに知っている読者にとっての第1章。第14–16章は短く、すぐ読める。

クラブ、店舗、履修登録システムなど小さな題材を自分で選び、すべての手順をたどりながら付録Dのフォームを埋めてみるとよい。各章の復習問題は付録Aを見る前に自分で解くこと。その後、付録Gを授業の教科書の正規化の章と並べて読み、手法の手順が正規形とどう対応するかを確かめる。最後に、完成した設計をいずれかのリレーショナルシステムに実装し、本書が扱わないSQLを身につけるとよい。