データベース基本概念

リレーション りれーしょん

テーブル行(タプル)列(属性)関係モデルSQL正規化
リレーションって何?テーブルと同じこと?

簡単に言うとこんな感じ!

ほぼ同じだよ!「リレーション」はデータベース理論の正式な呼び方で、Excelの表みたいに行と列でデータを整理したもののことなんだ。日常でよく聞く「テーブル」はそれを実装したときの呼び名で、意味はほぼ一緒ってこと!


リレーションとは

リレーション(Relation) とは、データベースの理論的基盤である関係モデル(リレーショナルモデル) における、データの基本単位です。わかりやすく言うと、行と列で構成された「表(ひょう)」のことで、ExcelやGoogleスプレッドシートの1枚のシートをイメージすると近いです。

リレーションは、同じ構造を持つデータの集合を表します。たとえば「社員リレーション」であれば、すべての行が「社員ID・氏名・部署・入社日」という同じ列構成を持ちます。この規則正しい構造こそが、コンピュータによる高速な検索・集計を可能にしている理由です。

日常的には「テーブル」と呼ばれることがほとんどですが、厳密には「リレーション」は数学的な定義に基づく理論用語、「テーブル」はSQLなどの実装上の呼び名という違いがあります。IT関係者と話すときや、試験・仕様書を読むときに「リレーション=テーブル」と覚えておけば困りません。


リレーションの構造

リレーションは以下の3つの要素で構成されています。

理論用語実務上の呼び名意味
リレーション(Relation)テーブル(Table)表全体。データのまとまり
タプル(Tuple)行(Row) / レコード1件分のデータ
属性(Attribute)列(Column) / フィールドデータの項目名(例:氏名、価格)
【社員リレーションのイメージ】

┌──────────┬────────────┬──────────┬────────────┐
│ 社員ID   │ 氏名       │ 部署     │ 入社日     │  ← 属性(列)
├──────────┼────────────┼──────────┼────────────┤
│ 001      │ 山田 太郎  │ 営業部   │ 2020-04-01 │  ← タプル(行)
│ 002      │ 鈴木 花子  │ 開発部   │ 2021-10-01 │  ← タプル(行)
│ 003      │ 佐藤 次郎  │ 総務部   │ 2019-07-15 │  ← タプル(行)
└──────────┴────────────┴──────────┴────────────┘

リレーションの3つのルール

リレーションには、ただの表と区別するための数学的な制約があります。

  1. 重複行なし — 同じ内容のタプルは存在しない(必ず一意に識別できる)
  2. 順序なし — 行の並び順に意味はない(何番目に格納されているかは関係ない)
  3. 原子値 — 各セルには1つの値しか入らない(複数の値を1マスに詰め込まない)

「次数」と「濃度」で規模を表す

用語意味
次数(Degree)属性(列)の数社員テーブルが4列なら次数=4
濃度(Cardinality)タプル(行)の数社員が100人なら濃度=100

歴史と背景

  • 1970年 — IBM研究員の エドガー・F・コッド(Edgar F. Codd) が論文「A Relational Model of Data for Large Shared Data Banks」を発表。リレーションという概念を数学的集合論に基づいて定義した
  • 1970年代後半 — IBMの研究プロジェクト「System R」でリレーショナルモデルの実装が始まる
  • 1979年 — Oracleが世界初の商用リレーショナルデータベースを発売
  • 1986年 — SQL(Structured Query Language)がANSI標準として制定され、リレーションを操作する共通言語が確立
  • 1990年代〜現在 — MySQL・PostgreSQL・SQL Serverなどが普及し、「テーブル」という実装上の呼び名が広く浸透。現在もWebサービスや業務システムのデータ管理の中心はリレーションモデル

コッドがこのモデルを提案した背景には、当時のデータベースが「物理的な保存場所」に依存していて、データ構造を変えるたびにプログラムを書き直す必要があったという課題がありました。リレーションモデルは「論理的な表」としてデータを抽象化することで、この問題を解決しました。


関係モデルとSQLの対応関係

実際のシステム開発では、理論上の「リレーション」をSQLで操作します。以下に理論と実装の対応を示します。

関係モデル(理論) リレーション(Relation) データの集合=表全体 タプル(Tuple) 1件分のデータ=行 属性(Attribute) 項目名=列 ドメイン(Domain) 取り得る値の範囲=データ型 SQL(実装) テーブル(TABLE) CREATE TABLE で定義 行(Row)/レコード INSERT で追加 列(Column) SELECT で指定 データ型(INT / VARCHAR…) 列定義で指定

リレーション演算(関係代数)

リレーションはそのまま扱うだけでなく、複数のリレーションを組み合わせる演算ができます。これがSQLのSELECTJOINWHEREの理論的な根拠です。

演算名SQLでの対応説明
選択(Selection)WHERE条件に合う行だけを取り出す
射影(Projection)SELECT 列名必要な列だけを取り出す
結合(Join)JOIN共通項目で2つのテーブルをつなげる
和(Union)UNION2つのテーブルの行を合わせる
差(Difference)EXCEPT一方にしかない行を取り出す
直積(Product)CROSS JOINすべての行の組み合わせを作る

関連する規格・RFC

規格番号内容
ISO/IEC 9075(SQL標準)SQLの国際標準規格。リレーションをテーブルとして操作する言語仕様を定義
RFC 9295RDBとJSONの連携に関するIETF文書(関係モデルの応用領域)

関連用語

  • 主キー — リレーション内の各タプルを一意に識別するための属性(列)
  • 外部キー — 別のリレーションのタプルを参照するための属性
  • 正規化 — リレーションの冗長性を排除してデータの整合性を高める手法
  • SQL — リレーションを操作するための標準的なデータベース言語
  • リレーショナルデータベース — リレーションモデルに基づいてデータを管理するデータベースシステム
  • スキーマ — リレーションの構造(列名・データ型など)を定義した設計図
  • インデックス — リレーションの検索を高速化するための補助データ構造
  • JOIN(結合) — 複数のリレーションを共通項目でつなげてデータを取得する操作