2012-01-10 12 views
3

私は、MySQLのバックグラウンドから来て、テーブルが実際にpostgresqlでリレーションと呼ばれるのはなぜかと思っています。それはSQL:2008 ISO/ANSI標準と関係がありますか?それはポストグルとの最初の数回の出会いで私と同僚の地獄を混乱させたからです。なぜpostgresqlでテーブルがリレーションと呼ばれていますか?

私は、それの背後にある推論を知っていると、何かをクリアするかもしれないし、採用を少し容易にするかもしれないので、私は尋ねています。

+2

http://en.wikipedia.org/wiki/Relational_databases#Terminology –

+1

@ MarkBannister:「データベース管理システム**」とは、関係が完全であるとみなされていると思います**; Coddの定義による**;)) – onedaywhen

+1

文字列の長さはどのくらいですか? – Kuberchaun

答えて

4

これは、ソフトウェアエンジニアが使用する用語ではなく、学者が使用する用語に由来します。これはPostgreSQLで大量に発生することがわかります。そのマニュアルでは、あまりよく知られていない場合は、頻繁に技術辞書が必要になります。

データベースの形式言語は、「関係代数」と呼ばれます。

マークバニスターで述べたように、このリンクは、専門用語のために役立つかもしれない:

http://en.wikipedia.org/wiki/Relational_databases#Terminology

編集

私はこれで何を意味するかについて明確にする: SQLは、標準であります業界によって書かれました(Oracleは大きな役割を担っています)。 SQLには関係代数は言及されていませんが、実際にはその起源はむしろ代数的に人間が容易に読むことができるように設計された言語でした。

一般的に、関係代数は学術界の領域であり、エンジニアリング業界では一般的に使用されていません。

Posgresqlコミュニティは他の実装よりも学術コミュニティとの関係が深く、エンジニアをコピーするのではなく、関係代数から用語を選択したようです。 PostgreSQLはリレーショナルデータベース管理システムではなくSQLデータベース管理システムであるため、これが間違っていると主張する人もいます。

+0

ありがとう、私は議論を楽しんだ。反射では、私はこの答えは救助されるにはあまりにも欠陥があると思う。関係学代数とSQLの関係についてのあなたの主張と同様に、学者とソフトウェアエンジニアの間のあなたの区別が適切に正当化されたとは思いません。あなたがリンクしているWikipediaの記事にある定義には満足できません。私はあなたの答えを編集して、実際の虚偽記載を訂正しました。おかげさまで – onedaywhen

+0

私も。私は昨夜その区別について考えていました。私がどこから来ているかは、彼らが使用されている方法です。リレーショナル・アルゲベラは、「アカデミック」(ベンダーがRDBMSで内部的にそれを使用するという例外を除いて)と言って私を導く理論に取り組んでいます。 SQLは実装を表現するために使用され、「業界」と言います。もう一つのことは、ソフトウェア開発の目的で、ドキュメンテーションやディスカッションにリレーショナル・アルゲベラが使用されていることはまだありません。 –

+0

これはまさにあなたが意味するものなのかどうかはわかりませんが、先日、この記事([link](http://queue.acm.org/detail.cfm?id=2024658))を見ました。あなたに:ps "私はこの答えは救助されるにはあまりにも欠陥があると思う" - それは間違っていた。私が意味していたのは、私自身の答えに固執するでしょう:) – onedaywhen

1

これはちょうど名前を付ける方法です。行と列を持つテーブルを持つ人もあれば、タプルや属性と関係を持つ人もいます。 PostgreSQL特有のものではなく、これらの他の指定を使用することは、テーブルを整理する特定の方法を意味します.wikipediaの「リレーショナルモデル」を参照してください。

-2

「関係」は実際にはいくつかの異なるタイプのデータベースオブジェクトをカバーします。テーブル、ビュー、シーケンス、インデックスはすべてリレーションです。 SELECT以外のインデックスからSELECTを実行できます。したがって、「関係」は「データを取得できるもの」を意味し、テーブルとビューは全く異なる方法で動作するインスタンスとして考えることができます。

「行」と「列」の代わりに「タプル」と「属性」と言うこともできます。行と列はテーブルの構成要素と考えることができますが、タプルと属性は実際の行や列に実際には対応していない可能性のある、関数やクエリの出力などもカバーするより抽象的な概念です。しかし、これは "バイト"と "オクテット"を区別しようとするのと同じくらい混乱します。

はもちろんのこと:テーブルに、タプルは を表すものではありません、それは 行バージョンを表していますし、作るものされているバージョン情報を使用してタプルを区別し、「行」としてそれらを提示します単なるタプルのコレクションの代わりにテーブルをテーブル化する。やや。タプル属性の一部は列ではなく、バージョン管理を管理する追加のメタデータです。

+0

"インデックスはすべてのリレーションです..."リレーション "を"データを得ることができるもの "という意味で考える - この回答の多くの虚偽の記述の中で – onedaywhen

2

SQL:2008 ISO/ANSI規格と関係があるか?

標準SQL仕様では、常に「関係」という用語とその派生語を意図的に避けています。

定義によるリレーションには、重複した名前、匿名列、重複するタプルおよびnullがない属性はありません。同じものをSQLテーブルと言うことはできません。 postgreSQLのドキュメントが "relation"と "table"を同じにしている場合、これらの用語は緩やかに使用されています。

+0

ありがとうそれをクリアするために! – ChrisR

関連する問題