56


28

SQLのタプルとはどういう意味ですか?

10 Answer


75


ここでの答えのほとんどは正しい軌道に乗っています。 ただし、*行はタプル*ではありません。 タプル `+ * +`は、名前付きの既知の値の「順序付けられていない」セットです。 したがって、次のタプルは同じものです(リレーショナルタプルは主に理論上の構成要素であるため、仮想タプル構文を使用します)

(x=1, y=2, z=3)
(z=3, y=2, x=1)
(y=2, z=3, x=1)

…​assuming of course that x, y, and z are all integers. Also note that 「重複」タプルのようなものはありません。 したがって、上記が等しいだけでなく、それらは同じものです。 最後に、タプルには既知の値しか含めることができません(したがって、nullは含まれません)。

`+ ** +`は、既知の値または未知の値の名前付きの順序付きセットです(ただし、省略できます)。 したがって、次の比較はSQLでfalseを返します。

(1, 2, 3) = (3, 2, 1)
(3, 1, 2) = (2, 1, 3)

ただし、「偽造」する方法はあります。 たとえば、次の `+ INSERT +`ステートメントを考えてください:

INSERT INTO point VALUES (1, 2, 3)

xが1番目、yが2番目、zが3番目と仮定すると、このクエリは次のように書き直されます。

INSERT INTO point (x, y, z) VALUES (1, 2, 3)

またはこれ:

INSERT INTO point (y, z, x) VALUES (2, 3, 1)

…​but all we’re really doing is changing the ordering rather than それを削除します。

そしてまた未知の値があるかもしれないことに注意してください。 したがって、値が不明な行がある可能性があります。

(1, 2, NULL) = (1, 2, NULL)

…​but note that this comparison will always yield UNKNOWN. After すべて、2つの未知の値が等しいかどうかをどのようにして知ることができますか?

そして最後に、行が重複する可能性があります。 言い換えれば、「(1、2)」と「(1、2)」は等しいと比較されるかもしれませんが、それは必ずしも同じものであることを意味するわけではありません。

これがあなたの興味を引く主題であるならば、私は強くお勧めします。

`+ * +`リレーショナルモデルに存在するタプルについて話していることに注意してください。これは一般的な数学とは少し異なります。

`+ ** `そして、あなたが疑問に思っている場合に備えて、SQLのほとんどすべてが行またはテーブルです。 したがって、「(1、2)」は行であり、「 VALUES(1、2)+」は表(1行)です。

更新:私はブログの記事http://jasonmbaker.wordpress.com/2009/07/05/the-relational-model-of-tuples-relations-rows- and-でこの回答を少し拡張しました。 tables / [ここ]。


14


短縮された "` + N-tuple + "( `+ quadruple +、 `+ quintuple +`など)

それは全体として見た行セットの行です。

あなたが発行した場合:

SELECT  col1, col2
FROM    mytable

、結果全体が `+ ROWSET `になり、 ` col1、col2 `の各ペアが ` tuple +`になります。

いくつかのデータベースは全体としてタプルを扱うことができます。

のように、これを行うことができます:

SELECT  col1, col2
FROM    mytable
WHERE   (col1, col2) =
        (
        SELECT  col3, col4
        FROM    othertable
        )

、ある `+ rowset `の ` tuple `全体が別の ` rowset `の ` tuple +`全体と一致することをチェックします。


4


リレーショナルデータベース*では、テーブルはhttp://en.wikipedia.org/wiki/Relation_(mathematics) [*関係](数学的意味)]です。 関係はタプルの集合です。 したがって、リレーショナルデータベース内のテーブル行は、関連してタプルです。

関係に関するWiki

_ 数学(より具体的には集合論と論理)では、関係とは、k個の個体の組み合わせ(kタプル)に真理値を割り当てるプロパティです。 通常、このプロパティはkタプルのコンポーネント間の可能な接続を表します。 与えられたkタプルの集合に対して、プロパティが成り立つかどうかに従って真理値が各kタプルに割り当てられます。 _


3


数学での使用にかかわらず、RDBMSのタプルは通常、テーブルまたは結果セット内の行と見なされます。 RDBMSでは、タプルは順不同です。 MDDBMSのタプルは、関連付けられているディメンションインスタンス(メンバ)を含むセル内のデータのインスタンスです。

列ファミリデータストアのタプルは何ですか?


2


タプル= 1レコード。 nタプル= 'n’レコードの番号付きリスト。 Elmasri Navatheの本(198ページ第3版)。

record =順序付きまたは順序なしのどちらかです。


0


データベーステーブルからの行


0


私が理解しているように、テーブルはキーの集合KとドメインKを持つ型付け関数Tを持っています。 テーブルの行、すなわち「タプル」は、各キーkについてr(k)がT(k)の要素となるようにドメインKを有する関数rである。 そのため、「タプル」は実際には連想配列に近いという意味で、用語は誤解を招きます。


0


タプルは、リレーショナルデータベースモデルの行を参照するために使用されます。 しかし、タプルは行と少し違いがあります。


-1


_  — -- タプルは、リレーショナルDBのテーブルを関連付けるために使用される既知の値です。 _

 — -- _ _


-2


タプルは、キューブからデータのスライスを定義するために使用されます。それは1つ以上の次元からの1つのメンバの順序付けられたコレクションから構成されています。 タプルは、キューブから多次元データの特定のセクションを識別するために使用されます。キューブ内の各ディメンションからの1つのメンバーから構成されるタプルは、セル値を完全に記述します。