質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1335閲覧

どうして関係モデルと呼ぶのか?

退会済みユーザー

退会済みユーザー

総合スコア0

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2016/10/08 14:28

「達人に学ぶDB設計徹底指南書」という本のカラムに「どうして関係モデルと呼ぶのか」と言ったコラムがあります。
この質問に対し、エドガー・F・コッドは次のように回答しています。

「「どうして関係モデルと呼ぶのですか。」という質問が時々ある。どうして表形式モデルと呼ばないのか、理由は二つある。
1 関係モデルを考えた頃、データ処理に携わる人たちの間では、複数の対象の間の関係(あるいは関連)は、つなぎデータ構造で表現されなければならないと考える傾向があった。この誤解を迎え撃つために、関係モデルという名前を選んだ。
2 関係よりも表の方が抽象水準が低い。表は、配列と同様に位置による呼び出しが可能だという印象を与えるが、n項関係ではそうではない。また表の情報内容が行の順番と無関係であるという点についても、表は誤解を招きやすい。しかし、こうした小さな欠点はあるにしても、関係の概念を表現する最も重要な手段は、依然として表である。表といえば、誰にもわかる。」

しかし、この本の中でこれに対する解説があるのですが、それとの内容がこの内容と矛盾しているように思えるのです。
本に書かれていた内容を書きます。

「理由2は単純明快です。ズバリ、「関係」と「表」は、決して同じものではないのです。例えば、最も基本的な正規形では、「テーブルのセルの中に複数の値が入ってはならない」というルールがあります。「表」であれば、セルの中に複数の値を入れ込むのも、入れ子の表を作るのも自由です。「関係」と「表」の区別は、例えば他にも以下のようなものがあります。
・関係には重複するレコードは存在してはならないが、表には存在しても良い。
・関係のレコードは上下の順序を持たないが、表の行は上から下へ順序づけられている。
・関係の列は左右の順序を持たないが、表の列は左から右へ順序づけられている。

「関係のレコードは上下の順序を持たないが、表の行は上から下へ順序づけられている」に関してですが、コッドは「表の情報内容が行の順番と無関係である」と言っているそうです。
これって矛盾していませんか?
表の情報内容は行の順番と関係ある(上から下へと順序づけられている)のではないでしょうか?
概念的な話になりますが、お分かりの方、回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「関係のレコードは上下の順序を持たないが、表の行は上から下へ順序づけられている」に関してですが、コッドは「表の情報内容が行の順番と無関係である」と言っているそうです。

これって矛盾していませんか?

文脈からすると、コッドのほうの主張は『もし、関係モデルのことを「表」と呼んでしまうと、多くの人は順序付けられていて、行番号で内容を指定できるようなものを思い浮かべるであろうが、関係モデルにおける表の情報内容は順番と無関係である』ということだと思います(1個目と2個目の文章で「表」という言葉が逆のものを指してます)。したがって、全く矛盾しておらず、同じことを言ってます。

コッドの主張は、表の何行目であるかとか、表が何をキーにしてソートされているかということをモデルに入れずに、実体と関係(Entity-Relation)だけを議論しましょうと言うことだと思います。

投稿2016/10/08 16:03

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/09 03:01

回答ありがとうございました。
guest

0

ベストアンサー

これって矛盾していませんか?

「(人間からの見た目では)表の行は上から下へ順序づけられている」が、
「(実際のDBを機械が解釈すると)表の情報内容が行の順番と無関係である」ため、
「表(という表現)は誤解を招きやすい」ので、「関係モデルという名前を選んだ」。

上のように補完して解釈すれば、矛盾は解消するように思えます。

そして、RDBの本当の概念は関係モデルなんだけど、
「表といえば、誰にもわかる」ので、見た目は表になってると。

これはその本とは別の個人的な考え方ですが、
人間のために表形式、機械のために関係モデル、
と使い分けてると考えると分かりやすいです。


どうして関係モデルと呼ぶのか?

リレーショナル・データベースを、
関係モデルと呼んで、表モデルと呼ばないのは、
オブジェクト指向の継承関係を木構造と呼ばないのと
同じような理由だと、個人的には思ってます。

あるいは、機械が読む実体は機械語でも、
人間は高水準言語で読み書きするのと同じです。

「抽象水準」の高いモデルと、低いモデルを使い分ける方が、
人間にとって都合が良いんでしょう。

投稿2016/10/08 15:37

編集2016/10/08 15:41
LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/09 03:00

回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問