データモデルとクエリ言語
データモデルは、データがどのように構造化され、関連付けられ、制約されるかを指定する概念的フレームワークであり、クエリ言語は、それらのモデル内のデータを取得および操作するために使用される形式的な表記法です。
Definition
データモデルは、データ、データ関係、データセマンティクス、および整合性制約を記述するための概念ツールの集合であり、クエリ言語は、そのようなモデルで表現されたデータベースから情報を要求し、変更するための表記法です。
Scope
この分野では、リレーショナルモデル、エンティティ関係図、半構造化モデル、ドキュメントモデルなど、データを記述するために使用される抽象化と、主にリレーショナル代数とSQLを使用して、それらに対するクエリと更新を表現するために使用される宣言型および代数言語を扱います。モデルがスキーマ、インスタンス、キー、および整合性制約をどのように定義するか、またクエリ言語の表現力が基盤となるモデルとどのように関連するかを扱います。物理的なストレージ、インデックス作成、クエリの実行(クエリ処理と最適化でカバー)およびスキーマを洗練する設計規律(データベース設計と正規化でカバー)は除外されます。
Sub-topics
Core questions
- データモデルは、エンティティ、関係、および制約をどのように表現しますか?
- リレーショナルモデルとリレーショナル代数およびSQLの関係は何ですか?
- 概念的なエンティティ関係設計は、論理的なリレーショナルスキーマにどのようにマッピングされますか?
- 半構造化モデルとドキュメントモデルは、厳密なスキーマを柔軟性とどのように交換しますか?
- クエリ言語の表現力と限界を決定するものは何ですか?
Key concepts
- リレーション、タプル、および属性
- スキーマとインスタンス
- キーと整合性制約
- リレーショナル代数
- SQL
- エンティティ関係図
- 半構造化データ
- ドキュメントモデルとJSONモデル
- データ独立性
Key theories
- リレーショナルモデル
- コッドのリレーショナルモデルは、すべてのデータをリレーション(名前付き属性に対するタプルの集合)として表現し、データの論理ビューを物理ストレージから分離し、集合論と述語論理に基づいた数学的基盤を提供します。
- リレーショナル完全性
- クエリ言語は、リレーショナル代数で表現可能なすべてのクエリを表現できる場合、リレーショナル完全であるとされます。コッドによって導入されたこの基準は、SQLなどの実用的な言語の表現力のベースラインを設定します。
- エンティティ関係モデル
- チェンのエンティティ関係モデルは、エンティティ、その属性、およびそれらの間の関係の観点から世界を記述し、リレーショナルスキーマに体系的に変換できる高レベルの概念設計表記法を提供します。
Clinical relevance
データモデルとクエリ言語は、実質的にすべての情報システムの基盤です。リレーショナルモデルとSQLは、エンタープライズデータベース、金融システム、およびウェブバックエンドを支え、エンティティ関係モデリングは要件分析を構造化し、ドキュメントモデルと半構造化モデルは、ウェブ、ログ、および構成データの柔軟なストレージをサポートします。
History
初期のデータベースは、物理ストレージに結びついたナビゲーションを持つ階層型およびネットワーク型(CODASYL)モデルを使用していました。コッドの1970年のリレーショナルモデルは、データ独立性と宣言型代数を導入しました。これにより、1970年代にSystem RとIngresが開発され、ISO標準となったSQLが生まれました。チェンの1976年のエンティティ関係モデルは、概念設計層を追加し、1990年代後半にはウェブとXMLの登場とともに半構造化モデルとドキュメントモデルが出現しました。
Key figures
- Edgar F. Codd
- Peter Chen
- Jeffrey D. Ullman
- Jennifer Widom
Related topics
Seminal works
- codd1970
- chen1976
- silberschatz2019
Frequently asked questions
- リレーショナル代数とSQLの違いは何ですか?
- リレーショナル代数は、リレーションに対する演算子(選択、射影、結合、和集合など)のプロシージャルな数学言語であり、クエリの推論と最適化に使用されます。SQLは、実際のシステムで使用される実用的な宣言型言語であり、リレーショナル代数とリレーショナル計算に基づいていますが、グループ化、集計、NULL処理、マルチセット(バッグ)セマンティクスなどの機能が追加されています。
- テーブルを設計する前にデータを概念的にモデル化する理由は何ですか?
- エンティティ関係図などの概念モデルは、実装とは独立して、ユーザーが理解できる用語(モノとそれらの間の関係)で要件を捉えます。検証済みの概念設計をリレーショナルテーブルに変換することで、直接テーブルを作成する場合と比較して、冗長性と設計エラーが減少します。