0

私はMySQLを学んでいます。多肢選択式の質問に出くわしました。答えが何であるか疑問に思ったり、正しいと確信できなかったりした場合は、Google、stackoverflow、および mysql サイトの検索を開始しました。ただし、一部の人にとっては、正解が何であるかをまだ確認できませんでした。

質問: 一意のインデックスに関する次のステートメントのうち、どれを除いて正しいものはどれですか?
A. テーブルのすべての列に対して一意である必要があります
B. テーブルに対して明示的に定義されるべきではありません
C. PRIMARY KEY または UNIQUE 制約を持つ列に対してのみ作成する必要があります。
D. 単独では作成できない
E. インデックスに含まれるすべての値の組み合わせが一意であることを保証できない

提案された答え: E.

私の考え:

A. 何を言っているのかさっぱりわかりません。しかし、この質問では、それは正しいステートメントでなければなりません。誰かがこれを明確にすることができますか?
B. テーブル用に定義されていますか? 一意のインデックスがテーブルの列にあります。また、デフォルトでは一意でない値が可能であるため、明示的に定義する必要があります
C. 正しいように見えます。主キーも一意であるため、MySQL によってインデックスを作成する必要があります (ただし、明示的ではありません)
D. wut? 私には意味をなさない別の答え(私は愚かですか?:S)
E.値の組み合わせ?いいえ、列の値のこれらの組み合わせが一意であることを保証することはできません。主キーで結合される可能性のある異なる列の組み合わせである場合: それ以外の場合は、UNIQUE インデックスは使用されません。

ほとんどの場合、疑わしい場合は優先回答を得ることができますが、ここでは手がかりがありません:s

これは本当に私を夢中にさせます:sこれは単なる言語の壁ですか、それとも...

この質問/回答または私の発言について何かコメントがあれば、喜んでお聞きします!

4

1 に答える 1

0

これらの答えは意味がありません:

A. テーブルのすべての列で一意である必要があります

一意のインデックスは、通常、テーブルの列のサブセットに対して定義されます。指定されたインデックスは、そのように定義されている場合にのみすべての列に適用されます。したがって、これは誤りです。

B. テーブルに対して明示的に定義すべきではない

使用すべきではない場合、なぜ構造が存在するのでしょうか? 一意のインデックスは非常に便利です。「テーブル」ではなく「テーブル内の列」で定義されていると主張する人もいるかもしれませんが、それはこの質問には微妙すぎるようです。

C. PRIMARY KEY または UNIQUE 制約を持つ列に対してのみ作成する必要があります。

これは真実に近づいています。一意のインデックスを作成することは、一意の制約を作成することと同じであると主張することができます。ただし、これらは同じことを行うための異なる構文構造です。さらに、一意の制約を持つ列の一意のインデックスを作成することはありません。これはデータベースが行うためです

D. 単独では作成できない

これが何を意味するのかわかりません。ある意味では、テーブルを定義する必要があるため、「単独で」作成することはできません。

E. インデックスに含まれるすべての値の組み合わせが一意であるとは限りません

これは、NULL 値の複製が許可されているためです。

A UNIQUE index creates a constraint such that all values in the index
must be distinct. An error occurs if you try to add a new row with a
key value that matches an existing row. For all engines, a UNIQUE
index permits multiple NULL values for columns that can contain NULL.][1]

(e) だけが明確に真であると読むでしょう。オプション (c) と (d) は、解釈次第でほぼ一致します。オプション (a) と (b) は、私の解釈では間違っているようです。

そのような質問については、他の場所を探すことをお勧めします。

于 2013-08-18T16:19:28.537 に答える