リレーショナルデータベース(RDB [ 1 ])は、 1970 年にEF Coddによって提案されたリレーショナルデータモデル に基づくデータベースです。 [ 2 ]
リレーショナルデータベース管理システム(RDBMS)は、行と列を使用して構造化された形式でデータを格納するデータベース管理システムの一種です。
多くのリレーショナルデータベースシステムには、データベースのクエリと更新にSQL (構造化クエリ言語)を使用するオプションが備わっています。 [ 3 ]
リレーショナルデータベースの概念は、 1970 年にIBMのEF Coddによって定義されました。Codd は、研究論文「大規模共有データバンクのためのリレーショナルデータモデル」でリレーショナルという用語を導入しました。 [ 2 ]この論文と後の論文で、彼はリレーショナルの意味を定義しました。リレーショナルデータベースシステムを構成するもののよく知られた定義の 1 つは、Codd の 12 のルールで構成されています。
しかし、リレーショナルモデルの商用実装でコッドのルールすべてに準拠しているものはないため[ 4 ]、この用語は徐々に、少なくとも以下の条件を満たす、より広範なデータベースシステムを指すようになった。
1974 年、IBM はRDBMS のプロトタイプを開発する研究プロジェクトであるSystem Rの開発を開始しました。 [ 5 ] [ 6 ] RDBMS として販売された最初のシステムはMultics Relational Data Store (1976 年 6 月) でした。[ 7 ] [ 8 ] Oracle は、現在のOracle Corporation である Relational Software によって 1979 年にリリースされました。[ 9 ] IngresとIBM BS12がそれに続きました。RDBMS の他の例としては、IBM Db2、SAP Sybase ASE、およびInformix があります。1984 年に、Macintosh用の最初の RDBMSが Silver Surfer というコードネームで開発され始め、1987 年に4th Dimensionとしてリリースされ、現在では 4D として知られています。[ 10 ]
関係モデルを比較的忠実に実装した最初のシステムは、以下のものから生まれた。
RDBMSの最も一般的な定義は、厳密には関係理論に基づいているかどうかに関わらず、データを行と列の集合として表現する製品である。この定義によれば、RDBMS製品は通常、コッドの12のルールの一部は実装しているが、全てを実装しているわけではない。
もう一つの考え方では、データベースがコッドのルール(またはクリストファー・J・デイト、ヒュー・ダーウェンらが表明したリレーショナルモデルに関する現在の理解)をすべて実装していない場合、それはリレーショナルではないと主張している。多くの理論家やコッドの原則を厳格に支持する人々が共有するこの見解では、ほとんどのDBMSはリレーショナルではないとみなされる。明確にするために、彼らはしばしば一部のRDBMSを真のリレーショナルデータベース管理システム(TRDBMS)と呼び、他のRDBMSを擬似リレーショナルデータベース管理システム(PRDBMS)と呼ぶ。[ 15 ]
2009年現在、ほとんどの商用リレーショナルDBMSはクエリ言語としてSQLを採用している。[ 16 ]
代替クエリ言語が提案され、実装されてきた。特に、1996 年以前に実装されたIngres QUELが挙げられる。
関係モデルでは、データを列と行からなる1 つ以上のテーブル(または「関係」)に整理し、各行を一意のキーで識別します。行はレコードまたはタプルとも呼ばれます。[ 17 ]列は属性とも呼ばれます。一般的に、各テーブル/関係は 1 つの「エンティティ タイプ (顧客や製品など)」を表します。行はそのタイプのエンティティのインスタンス(「Lee」や「chair」など) を表し、列はそのインスタンスに割り当てられた値 (住所や価格など) を表します。
例えば、クラス表の各行はクラスに対応し、クラスは複数の生徒に対応するため、クラス表と生徒表の関係は「1対多」である[ 18 ]。
テーブルの各行には、それぞれ固有のキーがあります。テーブル内の行は、リンクされた行の固有キーの列を追加することで、他のテーブルの行とリンクできます(このような列は外部キーと呼ばれます)。コッドは、任意の複雑さのデータ関係を単純な概念セットで表現できることを示しました。[ 2 ]
この処理の一部には、テーブル内の行を常に 1 つだけ選択または変更できることが含まれます。そのため、ほとんどの物理的な実装では、テーブル内の各行に一意の主キー(PK) が割り当てられています。新しい行がテーブルに書き込まれると、主キーの新しい一意の値が生成されます。これは、システムがテーブルにアクセスするために主に使用するキーです。システムのパフォーマンスは PK 用に最適化されています。その他のより自然なキーも識別され、代替キー(AK) として定義される場合があります。AK を形成するには、多くの場合、複数の列が必要です (これが、単一の整数列が通常 PK にされる理由の 1 つです)。PK と AK の両方で、テーブル内の行を一意に識別できます。より広範なシステム要件がある場合は、世界中で一意の ID、つまりグローバルに一意な識別子を保証するために、追加のテクノロジーが適用される場合があります。
データベース内の主キーは、テーブル間の関係を定義するために使用されます。主キーが別のテーブルに移行すると、そのテーブルでは外部キー (FK) になります。各セルに 1 つの値しか格納できず、主キーが通常のエンティティ テーブルに移行する場合、この設計パターンは1 対 1または1 対 多の関係を表すことができます。ほとんどのリレーショナル データベース設計では、多対多の関係を解決するために、他の 2 つのエンティティ テーブルから主キーを含む追加のテーブルを作成します。これにより、関係がエンティティになります。解決テーブルには適切な名前が付けられ、2 つの FK が結合されて 1 つの主キーが形成されます。主キーを他のテーブルに移行することは、システム割り当ての整数が通常主キーとして使用される 2 番目の主要な理由です。通常、他のタイプの列を多数移行しても効率も明確さもありません。
リレーションシップとは、異なるテーブル(エンティティ)間の相互作用に基づいて確立される、それらのテーブル間の論理的なつながりのことです。これらのリレーションシップは、エンティティ関係モデルとしてモデル化できます。
データベース管理システム(DBMS)が効率的かつ正確に動作するためには、ACIDトランザクションを使用する必要がある。[ 19 ] [ 20 ] [ 21 ]
RDBMSにおけるプログラミングの一部は、ストアドプロシージャ(SP)を用いて行われます。多くの場合、プロシージャを使用することで、システム内外でやり取りされる情報量を大幅に削減できます。セキュリティを強化するため、システム設計では、テーブルへの直接アクセスではなく、ストアドプロシージャへのアクセスのみを許可する場合があります。基本的なストアドプロシージャには、新規データの挿入や既存データの更新に必要なロジックが含まれています。より複雑なプロシージャを作成することで、データの処理や選択に関する追加のルールやロジックを実装できます。

リレーショナルデータベースは、1970年6月にIBMサンノゼ研究所のエドガー・コッドによって初めて定義されました。[ 2 ]コッドがRDBMSとして適格とみなすものは、コッドの12のルールにまとめられています。リレーショナルデータベースは、データベースの主流となっています。リレーショナルモデル以外のモデルには、階層型データベースモデルやネットワークモデルなどがあります。
以下の表は、最も重要なリレーショナルデータベース用語と、それに対応するSQL用語をまとめたものです。
リレーショナルデータベースにおいて、リレーションとは、同じ属性を持つタプルの集合です。タプルは通常、オブジェクトとそのオブジェクトに関する情報を表します。オブジェクトは一般的に、物理的な物体または概念です。リレーションは通常、行と列で構成されるテーブルとして記述されます。属性によって参照されるすべてのデータは、同じドメインに属し、同じ制約に従います。
関係モデルでは、関係のタプルには特定の順序がなく、またタプル自体も属性に順序を課さないことが規定されています。アプリケーションはクエリを指定することでデータにアクセスします。クエリは、選択(select)などの操作を使用してタプルを識別し、射影(project)を使用して属性を識別し、結合(join)を使用して関係を結合します。関係は、挿入(insert)、削除(delete)、更新(update)演算子を使用して変更できます。新しいタプルは、明示的な値を指定することも、クエリから導出することもできます。同様に、クエリは更新または削除するタプルを識別します。
タプルは定義上、一意です。タプルに候補キーまたは主キーが含まれている場合、当然一意になります。ただし、行またはレコードがタプルであるために主キーが定義されている必要はありません。タプルの定義では一意であることが求められますが、主キーが定義されている必要はありません。タプルは一意であるため、その属性は定義上スーパーキーを構成します。
すべてのデータはリレーションを介して格納およびアクセスされます。データを格納するリレーションは「基本リレーション」と呼ばれ、実装では「テーブル」と呼ばれます。その他のリレーションはデータを格納しませんが、他のリレーションにリレーション演算を適用することによって計算されます。これらのリレーションは「派生リレーション」と呼ばれることもあります。実装では、これらは「ビュー」または「クエリ」と呼ばれます。派生リレーションは、複数のリレーションから情報を取得する場合でも、単一のリレーションとして機能するため便利です。また、派生リレーションは抽象化レイヤーとしても使用できます。
ドメインとは、特定の属性に対して取り得る値の集合を記述するものであり、属性の値に対する制約と考えることができます。数学的には、属性にドメインを付与するということは、その属性の値は必ず指定された集合の要素でなければならないことを意味します。例えば、文字列「ABC」は整数ドメインには含まれませんが、整数値「 123」は含まれます。ドメインの別の例として、「CoinFace」フィールドの取り得る値を「("Heads","Tails")」と記述するものがあります。したがって、「CoinFace」フィールドは「0,1」や「H,T」のような入力値を受け付けません。
制約は、属性のドメインをさらに制限できるようにするために使用されることがよくあります。たとえば、制約によって、特定の整数属性を 1 ~ 10 の間の値に制限できます。制約は、データベースでビジネス ルールを実装する 1 つの方法を提供し、アプリケーション レイヤー内での後続のデータの使用をサポートします。SQL は、チェック制約の形式で制約機能を実装します。制約は、リレーションに格納できるデータを制限します。これらは通常、データが制約を満たすかどうかを示すブール値を返す式を使用して定義されます。制約は、単一の属性、タプル (属性の組み合わせを制限)、またはリレーション全体に適用できます。すべての属性には関連付けられたドメインがあるため、制約 (ドメイン制約) があります。リレーショナル モデルの 2 つの主要なルールは、エンティティ整合性と参照整合性として知られています。
すべてのリレーション/テーブルには主キーがあり、これはリレーションがセットであることの結果です。[ 22 ]主キーは、テーブル内のタプルを一意に指定します。自然属性(入力されるデータを記述するために使用される属性)は主キーとして適している場合もありますが、代わりにサロゲートキーがよく使用されます。サロゲートキーは、オブジェクトに割り当てられた人工属性で、オブジェクトを一意に識別します(たとえば、学校の生徒に関する情報のテーブルでは、生徒を区別するために全員に生徒IDが割り当てられる場合があります)。サロゲートキーには固有の意味はありませんが、タプルを一意に識別できるという点で有用です。特にN:Mカーディナリティに関してよく見られるもう1つの例は、複合キーです。複合キーは、テーブル内の2つ以上の属性で構成され、レコードを(一緒に)一意に識別するキーです。[ 23 ]
外部キーとは、リレーショナルテーブル内のフィールドのうち、別のテーブルの主キー列と一致するものを指します。外部キーは2つのキーを関連付けます。外部キーは、参照するリレーションにおいて一意の値を持つ必要はありません。外部キーはテーブル間の相互参照に使用でき、参照されるリレーションの属性値を利用して、参照するリレーションの1つ以上の属性のドメインを効果的に制限します。この概念は、正式には次のように説明されます。「参照するリレーション内のすべてのタプルが参照属性に射影されている場合、参照されるリレーション内にも同じ属性に射影されたタプルが存在し、各参照属性の値が参照される属性の対応する値と一致する必要があります。」
ストアドプロシージャは、データベースに関連付けられ、通常はデータベースに格納される実行可能なコードです。ストアドプロシージャは通常、リレーションへのタプルの挿入、使用パターンに関する統計情報の収集、複雑なビジネスロジックや計算のカプセル化など、一般的な操作を収集してカスタマイズします。セキュリティや簡素化のために、アプリケーションプログラミングインターフェイス(API)として使用されることがよくあります。SQL RDBMS 上のストアドプロシージャの実装では、開発者は標準の宣言型SQL 構文に対するプロシージャ拡張機能(多くの場合、ベンダー固有)を活用できます。ストアドプロシージャはリレーショナルデータベースモデルの一部ではありませんが、すべての商用実装には含まれています。
インデックスは、データへのアクセスを高速化する手段の一つです。インデックスは、リレーション上の任意の属性の組み合わせに対して作成できます。これらの属性を使用してフィルタリングするクエリは、各タプルを順番にチェックすることなく、インデックスを使用して一致するタプルを直接見つけることができます(ハッシュテーブルのルックアップと同様)。これは、本の索引を使用して探している情報が掲載されているページに直接移動し、探している情報を見つけるために本全体を読む必要がないのと似ています。リレーショナルデータベースは通常、複数のインデックス作成手法を提供しており、それぞれがデータの分布、リレーションのサイズ、および一般的なアクセスパターンの組み合わせに対して最適です。インデックスは通常、B+ツリー、Rツリー、およびビットマップを介して実装されます。インデックスは通常、実装の詳細とみなされるため、データベースの一部とはみなされませんが、インデックスは通常、データベースの他の部分を管理するグループと同じグループによって管理されます。主キーと外部キーの両方に効率的なインデックスを使用すると、クエリのパフォーマンスを劇的に向上させることができます。これは、Bツリーインデックスではクエリ時間がlog(n)に比例するのに対し(nはテーブルの行数)、ハッシュインデックスではクエリ時間が一定となるためです(インデックスの関連部分がメモリに収まる限り、サイズに依存しません)。
関係データベースに対するクエリ、およびデータベース内の派生関係変数は、関係計算または関係代数で表現されます。コッドは、自身のオリジナルの関係代数において、それぞれ4つの演算子からなる2つのグループに分けられた8つの関係演算子を導入しました。最初の4つの演算子は、伝統的な数学的集合演算に基づいています。
コッドが提案した残りの演算子は、リレーショナルデータベースに特有の特殊な演算に関するものである。
コッドが最初に8つの演算子を導入して以来、関係比較演算子や、ネストや階層構造のデータをサポートする拡張機能など、他の演算子も導入または提案されてきた。
正規化は、リレーショナルモデルの不可欠な要素としてコッドによって最初に提案されました。正規化は、非単純ドメイン(非原子値)とデータの冗長性(重複)を排除するように設計された一連の手順を含み、それによってデータ操作の異常やデータ整合性の喪失を防ぎます。データベースに適用される最も一般的な正規化の形式は、正規形と呼ばれます。

コノリーとベッグは、データベース管理システム(DBMS)を「ユーザーがデータベースを定義、作成、維持、およびアクセスを制御できるようにするソフトウェアシステム」と定義している。[ 24 ] RDBMSは、基となるデータベースがリレーショナルである場合に使用される、この頭字語の拡張である。
関係データベース管理システムの別の定義としては、関係モデルに基づくデータベース管理システム(DBMS)があります。今日広く使われているデータベースのほとんどはこのモデルに基づいています。[ 25 ]
RDBMSは、1980年代以降、財務記録、製造および物流情報、人事データ、その他のアプリケーションで使用されるデータベースの情報格納に一般的な選択肢となっています。リレーショナルデータベースは、実装と管理が容易であったため、従来の階層型データベースやネットワークデータベースに取って代わることが多くなりました。しかしながら、リレーショナルに格納されたデータは、1980年代と1990年代にオブジェクトデータベース管理システム(リレーショナルデータベースとオブジェクト指向アプリケーションプログラム間のいわゆるオブジェクトリレーショナルインピーダンスミスマッチに対処するために導入されたもの)や、 1990年代のXMLデータベース管理システムによって、継続的に、そして成功しない挑戦を受けてきました。[ 26 ]しかし、コンピュータクラスタの水平スケーリングなどの技術の拡大により、NoSQLデータベースは最近、RDBMSデータベースの代替として人気を集めています。[ 27 ]
分散リレーショナルデータベースアーキテクチャ(DRDA)は、1988年から1994年の間にIBMの作業グループによって設計されました。DRDAは、ネットワーク接続されたリレーショナルデータベースが連携してSQLリクエストを満たすことを可能にします。[ 28 ] [ 29 ] DRDAのメッセージ、プロトコル、および構造コンポーネントは、分散データ管理アーキテクチャによって定義されています。
DB-Enginesによると、2024年12月時点でdb-engines.comウェブサイトで最も人気のあるシステムは以下の通りでした。[ 30 ]
調査会社ガートナーによると、2011年の売上高上位5社の独自ソフトウェアリレーショナルデータベースベンダーは、 Oracle(48.8%)、IBM(20.2%)、Microsoft(17.0%)、SAP(Sybaseを含む)(4.6%)、Teradata(3.7%)であった。[ 31 ]
この製品はSQL/DS(Structured Query Language/Data Store)と呼ばれ、DOS/VSEオペレーティングシステム環境で動作した。
{{citation}}: CS1メンテナンス: ISBNを使用した作業パラメータ (リンク)