スキーマとは、データベース内の構造やデータの関係性を定義する設計図のようなものです。データベースの設定において、スキーマはデータの整理や管理を簡単にするためのもので、非常に重要なものになります。
スキーマは、論理的なレベルと物理的なレベルの両方で存在します。
論理的なスキーマは、データの構造、属性、関係性、制約などを定義します。
一方、物理的なスキーマは、データの物理的な配置、ストレージ方法、インデックスの作成方法などを定義します。
具体的には、あるオンラインショップのデータベースにおける顧客情報のスキーマを例に考えてみます。論理的なスキーマでは、顧客情報を表すために、以下のようなテーブルや属性を定義することが考えられます。
テーブル名 | customers | 顧客情報 |
属性 | customer_id name phone_number shipping_address billing_address | 顧客ID 名前 メールアドレス 電話番号 配送先住所 請求先住所 |
上記では顧客情報を表すために、顧客ID、名前、メールアドレス、電話番号、配送先住所、請求先住所などの属性を定義しています。
一方、物理的なスキーマでは、これらのテーブルや属性を実際にどのようにストレージするか、インデックスをどのように作成するか、といったことを定義します。具体的には、ディスク上のどのファイルにテーブルを配置するか、インデックスの種類や構成、ストレージの方法などを定義します。
スキーマは、データベースや情報処理システムにおいて、データの構造や属性、関係性、制約などを定義するための設計図や設計仕様書として、データの正確性や整合性を保つために重要な役割を果たします。
スキーマの概念は分かりにくいけどER図を見るとイメージが湧きやすくなりますね。
先程の顧客情報を扱うシステムのER図を例として示すと次のようになります。
+--------------------+ +-----------------------+
| customers | | orders |
+--------------------+ +-----------------------+
| PK customer_id | 1-----------*| PK order_id |
| first_name | | customer_id |
| last_name | | order_date |
| email | | total_price |
| phone_number | +-----------------------+
| shipping_address|
| billing_address |
+--------------------+
以下引用になります。(こういった図の方が分かりやすいですね)
https://www.ntt.com/business/sdpf/knowledge/archive_50.html
若手プログラマー必読!5分で理解できるER図の書き方5ステップ | NTTコミュニケーションズ 法人のお客さま
ER図とは、エンティティ関係図(Entity-Relationship Diagram)の略で、データベースや情報処理システムの設計を行う際に、データの構造や関係性を視覚的に表現するために用いられる図です。
上記の図では、”customers”テーブルと”orders”テーブルの2つのエンティティがあります。”customers”エンティティと”orders”エンティティは、1対多の関係を持っています。すなわち、1人の顧客は複数の注文を行うことができますが、1つの注文には必ず1人の顧客が紐づいています。また、各エンティティには、それぞれの属性が含まれています。
なお、ER図におけるエンティティは固有の属性や特性を持つ実体のことを指します。例えば、顧客や商品、注文などがエンティティとされるものになります。
ちなみに、エンティティ間を線で結ぶことで関係性を表現します。これらの関係性は、主に「一対一(1:1)」「一対多(1:N)」「多対多(N:M)」の3つの関係性があります。
関連URL(外部リンク)