10-データベース

データベース(Part.6)| リレーションと整合性制約 | 現役エンジニア&プログラミングスクール講師

目標

「リレーション」について概要を理解する
データベースに関する重要用語をチェックして理解できる
整合性制約の概要について理解する

リレーション

リレーショナルデータモデルとリレーション

リレーショナルデータモデル

データモデルには次のような種類がありました。

  1. ネットワークデータモデル
  2. 階層データモデル
  3. リレーショナルデータモデル
  4. オブジェクト指向データモデル

このうちリレーショナルデータモデルを採用するとRDBMSを利用するデータベースシステムの使用するということになります。

リレーショナルデータモデルの特徴

リレーショナルデータモデルには次のような特徴があります。

  • データをリレーション(≒タプルの集合≒テーブル)の集まりで表現する
  • シンプルでデータの独立性が高い
  • 複雑なデータ構造や可変長なデータにはには不向き

リレーショナルデータモデルでは「属性」「タプル」「リレーション」という言葉を使いSQLでは「カラム(列)」「ロウ(行)」「テーブル(表)」という表現を利用します。

リレーションとは

リレーションはタプルの集合のことを言います。リレーショナルデータモデルは、このリレーションの集まりで表現されます。リレーション≒テーブルとして捉えることができます。

下の図では商品テーブルは商品ID、商品、金額の属性を持っていて、{0001、アイス、100},{0002、アメ、60},{}…のタプル(各赤線の部分)の集合で形成されています。

データベースのお話をする時は、「テーブル」を「リレーション」、
「フィールド」を「属性」、「レコード」を「タプル」
としてお話しします。

「リレーション」と「リレーションシップ」については「リレーション」が「テーブル」とすると「リレーションシップ」は「リレーション間の関連」となります。

それぞれのリレーションはリレーションシップを持っていて関連しあっています。このような関係があるおかげで、ひとつの表だけでは得ることのできない沢山の情報を導くことができます。

例えば、下の関係から見えてくるのは、「売上IDが0001」では「大空翼くん」が「アイス」を「1つ」購入した。ということが確認できます。

RDBは、このような繋がりを利用してユーザーに情報を提示することができます。

リレーションに関する重要用語の確認

リレーションに関する重要用語の確認

タプル…データべースのレコード(行)のこと。

属性…リレーションのデータ項目のこと。

値…各セルに入力されたデータのこと。

データベースでは1つのセルに1つの値しか入りません。エクセルのようにセルの結合などはありません。またセルを結合したようなモデルではデータベースとして扱えません。

リレーション…タプルの集合でテーブルの形式で表現したもの。

リレーションの記述は次のようになります。
例:

{
{0001,アイス,100},
{0002,アメ,60},
{0003,ガム,60},
{0004,グミ,60},
{0005,チョコ,70},
{0006,ソーダ,70},
{0007,ラムネ,80},
{0008,コーラ,90}
}

リレーション名…表やテーブルの名前。

リレーションスキーマ…「リレーションの名前」や「属性の名前」「ドメイン(属性の型とその範囲と同意)」などを記述したもので、途中からの変更は基本的には行いません。

リレーションスキーマの記述は次のようになります。
リレーション名(属性名1,属性名2,属性名3)
例:商品テーブル(商品ID,商品,金額)

リレーションの濃度…リレーションのタプルの数。

リレーションの次数…リレーションスキーマの属性の数。

インスタンス…格納された実際のデータ。

ドメイン(定義域)…属性の取る値の型やその範囲のこと。
(領域の集合「例:テストの点:整数で0~100」)

ドメインの記述は次のようになります。
D(属性名)={1つ目のデータ,2つ目のデータ,3つ目のデータ,…}

例:
D(商品ID)={0001,0002,…}
D(商品)={アイス,アメ,ガム,グミ,チョコ,ソーダ,ラムネ,コーラ,…}
D(金額)={100,60,60,60,70,70,80,90}

この3つのドメインを縦方向に組み合わせると

{
{0001,アイス,100},
{0002,アメ,60},
{0003,ガム,60},
{0004,グミ,60},
{0005,チョコ,70},
{0006,ソーダ,70},
{0007,ラムネ,80},
{0008,コーラ,90}
}

となります。このことからリレーションは「ドメインの直積集合の部分集合」といわれます。

整合性制約

整合性制約の概要と主な整合性制約

整合性制約とは

データが実世界での関係をデータベース上でも正しく保てるようにする制約です。

主な整合性制約

主な整合性制約には次のようなものがあります。

UNIQUE制約…任意のカラムの中で重複を許さない制約のこと。

NOT NULL制約…「NULL」は「値が入っていないですよ!」という値(フラグのようなもの)で、空とも、0とも違います。NOT NULL制約は、この「NULL」という値の入力を許可しないという制約です。

キー制約(主キー制約)…主キーはリレーションでタプルを一意に識別できる値であるために重複を許さず(UNIQUE制約)、さらにNULLの入力も許さない(NOT NULL制約)制約です。また空値も許されません。

ドメイン制約…属性の値は、全てその属性のドメイン(属性の型とそのルール)に所属するという制約があります。この制約の範囲は属性の型(文字列や整数など)によって決まります。
(例:「数値の範囲」や「特定の文字列の集合」など)

参照整合性制約…属性が他のテーブルを参照する場合に、参照先に必ずタプルが存在しなければいけない制約

今回は以上になります。次回はリレーショナル代数演算についてです。

「データベース」おすすめ書籍6選【初心者用3冊&実践用3冊】| 現役エンジニア&プログラミングスクール講師「データベース」初心者の方がデータベースを基本からしっかりと理解するためのお勧めの書籍について取り上げています。また中級者の方が更に進んだ学習ができる実践的な書籍についてお勧めできる3冊を取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
10-データベース

データベース(Part.10)| MariaDBのインストール(Windows版)| 現役エンジニア&プログラミングスクール講師

2023年4月11日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.1)| データベースの概要 | 現役エンジニア&プログラミングスクール講師

2023年3月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

「データベース」おすすめ書籍6選【初心者用3冊&実践用3冊】| 現役エンジニア&プログラミングスクール講師

2024年5月15日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース| まとめ | 現役エンジニア&プログラミングスクール講師

2023年4月3日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.7)| リレーショナル代数 | 現役エンジニア&プログラミングスクール講師

2023年4月6日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.11)| MariaDB SQLと表の種類&SQLコマンド例 | 現役エンジニア&プログラミングスクール講師

2023年4月13日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site