なぜ「関係(al)」という用語ですか?


26

英語では、たとえばボブとティムの関係について話すかもしれません。おそらく彼らはいとこです。この文脈での用語「関係」は私にとって理にかなっています。

リレーショナルデータベースの文脈では、この用語が何を指しているのかは理解していますが、なぜ使用されているのかはわかりません。なぜ使われるのかを理解することは、フィールドをよりよく理解するのに役立つと思うので、なぜ使われるのかを理解したいと思います。

  • たとえば、なぜ人は「関係」と見なされますか?英語では、関係は2つのエンティティがどのように関連付けられているかを表す名詞です。エンティティ自体を指すものではありません。リレーショナルデータベースのコンテキストでは、「関係」はエンティティ自体を指します。どうして?
  • リレーショナルモデルは、階層モデルとネットワークモデル(例:親、隣接)の後に来たことを理解しています。しかし、これらのモデルでは、エンティティは相互にも関係しています。では、なぜこのモデルをリレーショナルモデルと呼ぶのでしょうか?より具体的なフレーズ/用語はありますか?または、3つすべてのモデルがリレーショナルモデルであるが、階層モデルとネットワークモデルは特定のタイプのリレーショナルモデルであると言う必要がありますか?
  • 互いに関係のないスタンドアロンエンティティがある場合はどうなりますか。言う、人、ドア、そして木。「関係(al)」という用語はまだ適用可能ですか?

(おそらく、これは複数の質問である必要があります。答えは非常に関連性が高いと考えました-たぶん答えは1つだけかもしれません。代わりに個別の質問を作成します。)


編集:この図は、関係が異なるドメインを相互に関連付けていることを視覚化するのに役立ちます。

ここに画像の説明を入力してください

回答:


33

まず、エドガー・フランク・コッド博士が1970年にリレーショナルフレームワークを一般大衆に公開した科学論文、つまり、大規模共有データバンクのデータのリレーショナルモデルを強くお勧めします。そこで、セクション1.1「はじめに」で、コッド博士自身が次のように述べています。

この論文は、フォーマットされたデータの大きなバンクへの共有アクセスを提供するシステムへの初歩的な関係理論の適用に関する。


©コンピューティング機械協会。Communications of the ACM、Volume 13、Issue 6(pp.377-387)、June 1970。

ですから、はい、関係という用語は(したがって)関係という用語は数学的な背景から来ています。学術および研究の資格を別にして、コンピューティングおよび情報処理の約20年の経験を積んだCodd博士は、データ管理の分野で関係(自然な抽象的な構造)を適用することの大きな利点を想像しました。 。

私は数学者ではありませんが、基本的には、リレーションはセット間の関連付けであり、セットは要素のコレクションです(この外部リソースは、異なる観点からそれを理解するのに役立つ数学的な関係の定義を提供します)。SQLデータベース管理システム(簡潔にするためにDBMS)を用いて作業する場合、周知の近似関係は、テーブル関連の間で行われる場合には、のの。明らかに、DOMAINサポートを提供するSQLプラットフォーム(FirebirdPostgreSQLなど)では、関連付けは問題のテーブルの列に対して修正されたドメイン。重要な詳細については、以下のセクションを参照してください。

その点で、セクション1.3「データのリレーショナルビュー」で次のように主張するCodd博士を再度引用します。

ここで、関係という用語は、受け入れられた数学的意味で使用されます。S 1S 2、⋯、S nのセット(必ずしも明確ではない)を考えると、Rは、それぞれがS 1からの最初の要素、2番目の要素を持つnタプルのセットである場合、これらのnセットの関係ですS 2などから。1我々はを意味するものとSのJとしてJ番目のドメインR。上記で定義したように、R次数n。次数1の関係はしばしば呼ばれる単項、次数2 バイナリ、次数3 の三元、及び次数N N値化

1より簡潔には、Rはデカルト積S 1 × S 2 × S 3 ⋯× S nのサブセットです


©コンピューティング機械協会。Communications of the ACM、Volume 13、Issue 6(pp.377-387)、June 1970。

そして、データ管理に関してそれを最大限に活用するためにコッド博士が数学的関係にいくつかの適応を行ったことを指摘することは非常に重要であるという点で他の回答に同意します。彼の広範囲な参考文献を通して

関係関係

育て状況の価値は、これらの科目を扱うときには、原因用語の日常(非数学的、非技術)の定義に関して存在する類似性のために混乱が生じる場合がある関係の関係を -which、非など英語を母国語とする人、特に理解しやすいと思います。

エンティティ関係ビューリレーショナルモデル

私が混乱を引き起こす可能性がある他の要因(および上記の2つの用語の技術的な意味合いと密接に関連している)は、データベースの設計を学ぶとき、通常、学生または開業医が博士によって提案された方法論に最初に導入されることです。ピーター・ピン・シャンチェンにおけるエンティティ関係を示している(1976年発行)データのビュー、2つの異なる実装(すなわち、実体の関係を描くために)概念だけ言っスキーマの定義の後、スキーマを、そして学生や開業医がリレーショナル用語や楽器を導入して安定した、(例えば、ある関係が宣言するとき)関連するデータベースの論理レイアウト。概念の参照フレーム内で、関係は日常的な言葉の感覚により近い意味合いを持っています。

それから、おそらく、その状況は関係と関係の問題にも追加されます。しかし、最初に概念スキーマを定義し、続いて対応する論理設計を宣言するシーケンスは、次のセクションで詳しく説明するように、もちろん適切です。

各サブ質問への回答

これら3つのサブ質問を含めることは、投稿のより広いコンテキストを確立するため、本当に適切であると考えます。このように、離れ用語の理由を独占的に対処するから関係の関係が使用されている(確かに非常に重要であるとされているタイトルのポストのが、それはありません全体のポスト)、subquestionsはのスコープの多くを理解するのに役立つことができました情報管理プロジェクト全体に関係する場合(これはデータベース管理に関するサイトであるため、関連性が高いため)、さまざまな抽象化レベルで作業している場合の関係関係モデル。このようにして、これらの詳細についての私の見解を以下に共有します。

サブ質問番号 1

たとえば、なぜ人は「関係」と見なされますか?英語では、リレーションは、2つのエンティティがどのように関連付けられるかを表す名詞です。エンティティ自体を指すものではありません。リレーショナルデータベースのコンテキストでは、「関係」はエンティティ自体を指します。どうして?

概念レベル

特定のビジネス環境では、そこで働く人々(ビジネスの専門家やデータベース設計者)がどのように概念化するかに応じて、Personエンティティタイプと見なすことができます。そして、はい、そのビジネス環境では、Personエンティティタイプ(たとえば、NameBirthDateGenderなど)に関して関心のあるさまざまなプロパティがある場合があります。

さらに、Personエンティティタイプは、それ自体または他のエンティティタイプとの特定の関係(または関連付けまたは接続タイプを保持できます。たとえば、PersonUserProfileという名前のエンティティタイプに関連付けられている場合があり、そのエンティティタイプは独自の重要なプロパティ、つまりUsernamePasswordを持っている場合があります。

ただし、(a)エンティティタイプ、(b)対応するプロパティ、(c)エンティティタイプ間の関係タイプ、および(d)プロパティ自体の関係は、それらが属する特定のビジネス環境に「属する」概念です。重要とみなされる。これらは、設計段階でコンテキスト固有の概念スキーマを定義するために、ビジネスの専門家と密接に連携するデータベース設計者が使用するデバイスです。

したがって、概念レベルでは、基本的に、現実世界の関心のあるセグメントで発生するアイデアの構造、つまり(1)物のプロトタイプと(2)物のプロトタイプの関係プロトタイプを処理します。 (3)関係 —データのリレーショナルフレームワークの意味でこの最後の用語を使用します。

論理レベル

の人は正確に概念レベルでのエンティティタイプとして線引きし、あれば 1がの意味伝えるリレーショナルデータベースを実装したいと、それに関連するすべての概念を、その型の実体についての事実は美徳で管理することができ論理レベルでの数学的関係の構築、およびその抽象構造で実行できる科学ベースの操作を活用します(つまり、定義、制約、および操作)。

はい、データベースの論理配置を定義するときに特定の関係にPersonという名前を付けることができますが、それはPersonの「現実の」概念を関係に変換するものではなく、情報を管理するときに得られる利点のためにそのようにアプローチしますそれについて、例えば、その上に関係代数演算を適用して、新しい関係を導き出します(したがって、「新しい」情報を導き出します)。上記の利点は、特定のタイプのエンティティがセットを構成し、特定のプロパティの値もセットを構成するという事実を考慮すると、より明白になります。

そして、はい、前の段落および他の回答でも述べたように、関係の最も重要な側面の1つは、そのドメイン間に存在する接続です。これは、通常、概念的なスキーマ—。たとえば、次の(3項の)リレーションを宣言したとしましょう。

  • Salary (PersonNumber, EffectiveDate, Amount)

…そして、問題のビジネス環境で、タプル -(i)特定のエンティティ、つまり、該当する概念スキーマからのエンティティ型のインスタンスを表し、(ii)対応するSQLが

  • Salary (x, y, z)

…意味を持ちます

  • xEffectiveDateでPersonNumberによって識別される個人に支払われる給与yは、の量に対応しzます

したがって、物事を大まかに説明するには、3つのドメイン間の接続が最も重要であり、それらはすべて関連しています(そして、はい、単項関係には1つのドメインのみが関係します)。特定のドメインのすべてのの間の接続も非常に重要です。これらは正確なタイプのセットを構成するためです。また、リレーションの各タプルの内容は、上記のアサーションの構造に適合しなければなりません。Salary

概念レベルの関係と論理レベルの関係

実証されたように、概念論理という2つの異なる抽象化レベルでデータベース管理を扱ってきました。さらに、物理レベルと呼ばれる下位レベルがあります。SQLDBMSでは通常、たとえばインデックス、ページ、エクステント、等。-。

したがって、前に説明した概念に従って、論理レベルでは、(a)数学的な関係でのみ動作します。(b)概念的な関係または関連付けは、(c)そのような数学的な関係のタプルに含まれるによって表さます。また、これらの値は通常、外部キー制約によって区切られているため、適切な関係を正確に表すことができます。

そして、はい、関連エンティティ、つまり多対多(M:N)カーディナリティ比を持つ関係タイプのインスタンスは、単一の数学的関係のタプルによって伝達できます。コース-。

サブ質問番号 2

リレーショナルモデルは、階層モデルとネットワークモデルの後に来たことを理解しています。しかし、これらのモデルでは、エンティティは相互にも関係しています。では、なぜこのモデルをリレーショナルモデルと呼ぶのでしょうか?より具体的なフレーズ/用語はありますか?または、3つすべてのモデルがリレーショナルモデルであるが、階層モデルとネットワークモデルは特定のタイプのリレーショナルモデルであると言う必要がありますか?

正式な理論的サポートに先行するネットワークおよび階層型DBMS

階層的アプローチおよびネットワークアプローチに関する理論的なサポートは、実際には、(1)の種類の健全性をテストおよび確立することを目的として、既存の DBMSの観点から実際に作成されたことを指摘するのが適切ですソフトウェアと(2)リンクされたデータ管理の実践-私の観点からは逆さまの現象-

リレーショナルフレームワークと比較して不完全

そうは言っても、リレーショナルモデルより前の階層型およびネットワークDBMSはありますが、コッド博士がこれらのアプローチをそれぞれ「モデル」と呼んだとしても、リレーショナルフレームワークと同じように定義されているものはありません。リレーショナルパラダイムは、(i)定義、(ii)制限、および(iii)データの操作のための科学的構成要素を提供し、階層的アプローチおよびネットワークアプローチは、前述の3種類の構成要素すべてをカバーする完全な理論的サポートを欠いています。

ネットワークおよび階層機能

また、前述のように、エンティティと関係のタイプは概念レベルのデバイスであり、階層的アプローチやネットワークアプローチに属していません。これらはそれぞれ、上記の側面を表す特定のメカニズムを提供します。

  • ネットワークパラダイムを伴う2つのデータ表現、すなわち、のためのデバイスノードアーク(どおりこと(もちろんその特性は、データ操作の2種類を意味する)、リレーショナルモデルと対比ときに、情報原理のみ必要)1構築物を(関係)は、ネットワーク方式での作業に伴う不必要な複雑さを明らかにします。たとえば、2つの表現手段を使用する場合、ネットワークアプローチは、データ操作を妨げる非実用的なクエリバイアスを課します

  • 階層ビューでは、3つのような配置で編成されたレコード(順番にフィールドで構成されています)で構成される(物理!)ファイルを使用してデータを表すことを提案しています。つまり、ポインターを介して、おそらく多くの対応するとチェーンされた1つのレコードは、データ操作に関する物理的なアクセスパスを生成します。このアプローチは、概念的側面と物理的側面が絡み合うため、好ましくありません。したがって、物理ストレージの配置を変更するには、データ構造の再編成が必要になります。

示されているように、階層ビューとネットワークビューは、管理対象のデータに構造を課しますが、リレーショナルモデルは、関連するファクトのセット(その結果、n個の後続タイプのセット、設計段階などを導き出すことができます!)。

リレーショナルモデルにはサブモデルがありません

そして、非常に重要なのは、どちらも階層ネットワークビューは、リレーショナルモデルの具体的な種類があり、彼らは単に誰かが()ビルドのDBMSに従うと、(b)にデータベースを作成することが他のパラダイムですが、心の中でくださいクマ階層いますそして、ネットワークアプローチは何十年もの間、時代遅れと見なされています。

サブ質問番号 3

互いに関係のないスタンドアロンエンティティがある場合はどうなりますか。言う、人、ドア、そして木。「関係(al)」という用語はまだ適用可能ですか?

はい、(1)適応された数学的関係によってそれらのエンティティタイプに関する情報を管理し、(2)与えられたリレーショナルDBMSのサポートで管理される特定のデータベースの論理レベルで適用可能なリレーショナル操作を実行する場合、完全に適用可能です。

概念レベルで、上記のエンティティタイプが他のエンティティタイプとの関係タイプを保持していないかどうかは関係ありません(また、エンティティタイプが1対0または1対多のカーディナリティ比の関係を持つことができることは注目に値します)そのため、検討中の関係のタプルの値間の関係を伝えたり強制したりすることはありません。


1
「関係」という用語を誤解したり混同したりするのに、「英語を母国語としない人」である必要はないと思います。あなたが数学のその特定の分野を研究していない限り、それは完全に異質な定義です。正直に言うと、この文脈で「関係」が何を意味するのかわからなかった場合、この答えは特に助けにはならず、興味深いものもあります。
IMSoP

1
@IMSoP気づいたことはありませんが、「英語を母国語としない人」と書くつもりだったので、関連する抜粋を完成させました。一方、私は同意しません。この回答は、(1)質問のタイトルと(2)質問の本文に含まれるすべてのサブ質問に対処しており、投稿をより広く文脈化しているため、特に役立ちます。しかし、もちろん、あなたはあなた自身の意見を受け取る権利があります。
MDCCL

16

「リレーショナルデータベース」の背後にある興味深い点は、予想されるように(主に)テーブル間のリレーションを参照しないことですが、タプル内の複数のプロパティ(列)のリレーションを参照します。リレーショナルデータベースは、これらのタプルをテーブルの行として格納します。

それは以下のように定義リレーショナル代数に基づいているアルフレッド・タルスキー彼の1941年(!)の論文に関係の計算に。彼はシンボリックロジックの用語と使用法の歴史を要約しましたが、最終的にSQLの基礎となった操作を定義しました。

コッドはこれを12の戒めでリレーショナルデータベースとして理解できるものの定義に変えました。


10

「リレーショナル」という用語は数学に由来し、エンティティ間の関係とは関係ありません。私は数学者ではありません(コッドは数学の博士号を持っていました)ので、詳しく説明しませんが、バイナリ関係に関するこのウィキペディアの記事を紹介します。関係(データベース)に関するウィキペディアのエントリは、Coddがデータ管理に適用するために数学的な概念をどのように適合させたかについての追加の詳細を提供します。この数学的構造がリレーションと呼ばれる理由については、リレーションを構成するドメイン間に「リレーションシップ」があるという考えに関係していると思います。Coddの当初の考え方をよりよく理解するために知っている最高の情報源は、Fabian Pascalです。Chris DateはRDMについても広範囲に執筆しており、彼のThird Manifestoサイトには論文と本をリストしたセクションがあります。彼の著書 『コンピューティング専門家のためのリレーショナル理論』は良い紹介です。これがお役に立てば幸いです。


7

自然なキーでそれらを考えるとき、それは直感的な名前です。セル値はエンティティを表すと考えることができます。

Relation: Employee
|--------+------------+--------|
| name   | job        | boss   |
|--------+------------+--------|
| Mark   | owner      | NULL   |
| Bob    | manager    | Mark   |
| Jane   | supervisor | Bob    |
| Claire | supervisor | Bob    |
| John   | cashier    | Jane   |
| Jesse  | cashier    | Jane   |
| Jason  | cashier    | Claire |
|--------+------------+--------|
  • 従業員名「Jane」は、ジョブ「supervisor」に関連しています。
  • 従業員名「John」は上司「Jane」に関連しています。
  • ジョブ「キャッシャー」は、従業員名「ジョン」、「ジェシー」、および「ジェイソン」に関連しています。
  • ジョブ「キャッシャー」は、ボス「ジェーン」および「クレア」に関連しています。

この答えは最も直感的ですが、MDCCLほど包括的ではありません。この回答とMDCCLの回答の組み合わせは、私にとって非常に満足のいくものです。
アダムツェルナー

6

データベースについて多くのことを言わなければならない非常に長い答えをすでに受け入れましたが、実際に尋ねた質問に答えさせてください:

なぜ「リレーショナル」という用語。

テーブルは数学オブジェクト「関係」の具体的なインスタンスだからです。

ウィキペディアが「関係」という用語(RDBMSではなく数学で)について何を言っているかを見て、それをデータベースに翻訳してみましょう。

正式には、関係は同程度のnタプルのセットです。したがって、二項関係はペアのセット、三項関係はトリプルのセットなどです。集合論の言語では、2つの集合間の関係はデカルト積のサブセットです。

Mathematics             | RDBMS
========================|===============
A relation is           | A table is
a set of                | a bunch of 
n-tuples                | rows
of equal degree.        | with the same cell (a.k.a. column) types and sizes.

集合論を続けています。これは数学であり、データベースのものよりもはるかに抽象的であることを忘れないでください。したがって、最後の文は

2つのセット間の関係は、デカルト積のサブセットです。

これは、2つの列を持つ1つのテーブルに変換されます。

  • 列Aを「名前」と呼びましょう。その数学的集合Aは、すべての(人間の)名前の集合です。
  • 列BI呼び出し「市」。その数学的集合Bは、すべての都市の集合です。
  • 直積A x B(数学では)全ての対(別名、tupels)を含有する新たな集合であるのメンバーであり、そしてメンバーです。すなわち、名前であり、都市です。例はまたはです。しかし、デカルト積はそれらのほんの一部ではなく、すべてです。ポイントに到達するためのリレーションは、そのデカルト積のサブセットです。換言すれば、関係は、ペアの任意の量(あると定義される)である名前であり、都市、全てでさえなしです。(a, b)aAbBab(Alice, New York)(Bob, Hollywood)(a, b)ab

今、私はすべてが意味を持ち始めることを願っています。RDBMSでは、テーブルの行は、それらの列のすべての可能な組み合わせのデカルト積のサブセットを単に選択します。つまり、RDBMS を使用する場合、完全に些細で無関係です。

しかし、リレーショナルデータベースを含むコンピューターサイエンスは数学にそのルーツがあるため、ここでは「リレーショナル」という用語に恵まれています。それは完全に抽象的であり、人々との関係やあなたが持っているものとは何の関係もありません。

余談ですが、「リレーション」という用語は「アソシエーション」にも使用されることがあり、まったく同じです(ここでは、リレーションの基礎となるセット自体が上記のリレーション(別名、テーブル)です)。

注意:数学では、リレーションはデータベースに関するものではなく、関数のようなものであり、より一般的なものです(数学者はみな、今すぐ選択を開始しないでください。math.SEではなくdba.SEにいます。これは間違った方法です:))。のような関数f(x)=x+1はタプルのセットとして表現することもできます(1, 2), (2, 3), ...が、タプルの左側ですべての数値を一度だけ持つことができます。つまり、これは有効な関数ではありません:(1, 2), (1, 3), ...。しかし、後者有効な関係です。つまり、あなたはニューヨークのボブ持つことができますし、ハリウッドでボブを。


5

リレーショナルデータベースは、EFCodd のリレーショナルモデルに基づいています。関係代数は、どのようにクエリデータへの方法を説明します。関係は、単にいくつかのセット(ドメイン)の外積のサブセットです。

次のセットがあります。

DepIds = {1, 2, 3, ...}
EmpIds = {1, 2, 3, ...}
DepNames = {'Engineering', 'Finance', 'Sales', ...}
FirstNames = {'John', 'Walter', 'Mary', 'Roxane', ...}
LastNames = {'Smith', 'Bondy', 'Taylor', ...}
BirthDates = {..., 1950-01-01, 1950-01-02, ...}
Jobs = {'Accountant', 'Programmer', 'Database Administrator', ...}

さらに、タプルのセットがあります

departements = { 
    (1, 'Engineering'), 
    (2, 'Finance')}
employees = { 
    (1, 1, 'John', 'Taylor', 1985-03-22, 'Programmer'), 
    (2, 1, 'Walter', 'Bondy', 1997-09-11, 'Database Administrator'), 
    (3, 2, 'Roxane', 'Myers', 1987-12-19, 'Accountant')}

departements のサブセットです

    DepIds x DepNames

そしてそれは関係です。

employees のサブセットです

    EmpIds x DepIds x FirstNames x LastNames x BirthDates x Jobs

そしてそれも関係です。

テーブルによってリレーションを実装する方法は明らかです。

数学者がタプルのセットを関係と呼ぶのはなぜですか?

通常、「2より小さい3」、「4は4に等しい」、「2は1から3.4の間」、「-1は負」などのプロパティはリレーションと呼ばれます。

セットA = {1、2、3}の「より小さい」関係は、サブセットによって定義されます

{(1, 2), (1, 3), (2, 3) }

A x A = {1, 2, 3} x {1, 2, 3}=
{ (1, 1), (1, 2), (1, 3), 
  (2, 1), (2, 2), (2, 3), 
  (3, 1), (3, 2), (3, 3) } 

同様に、他の関係はクロスプロダクトのサブセットとして見ることができます。「xはyより小さい」、「xはyに等しい」はバイナリ関係であるため、ペアのセットによって定義されます。「yとzの間のx」は3項関係であるため、トリプルのセットによって定義されます。「xは負」は単項関係であるため、シングルトンのセットによって定義されます。

上記で定義した部門タプルセットはバイナリ関係であり、従業員関係は6項関係です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.