0

RDBMS の次の用語についてかなり混乱しています: キーとインデックス: それらは同じ概念ですか? 例えば:

CREATE TABLE FOO_TABLE (
    THE_KEY INTEGER PRIMARY KEY
    FOO INTEGER NOT NULL,
    BAR INTEGER NOT NULL,
    QUZ INTEGER UNIQUE,
    CONSTRAINT UNQ_FOO UNIQUE (FOO, BAR)
);

この表で、どれがキーですか? 指標と呼べるものはどれか。このテーブルに「非主キー」はありますか? また、検索の効率をどのように改善するのでしょうか? ありがとう。

4

2 に答える 2

0

キーは、レコードを一意に識別するために使用されます。主キーは、特定のテーブル内のレコードを識別する主な方法であり、DB の各テーブルに存在する必要があります。一意のキーは追加のキーです。

インデックスは、クエリを高速化するために使用されます。検索条件としてキーを使用することは非常に一般的であるため、通常、キーごとにインデックスが自動的に作成されます。

あなたの例では、「THE_KEY」と呼ばれる1列の主キーと、列「FOO」と「BAR」で構成される2列の一意のキーがあります。キーごとに 1 つずつ、2 つのインデックスも必要です。

于 2013-03-28T10:15:26.310 に答える
-1

ここでの以前の回答から、別の関連する質問にコピーしました。

  1. 概念モデル (つまり、エンティティ、属性、関係、キー) を説明するために Date、Codd などによって考案された用語が、ベンダーによって採用されて、そのモデルの物理的な実装のプロパティ (テーブル、列、レコード、インデックス)。この問題について議論する際には、2 つのドメインを区別して識別できるようにしておくことが重要です。
  2. 第 1 正規形は、すべての関係が概念モデルの主キーを持つことを示しています。物理モデルのみに存在する人工キーは適格ではありません。ただし、一部のいわゆる人工キーは物理モデルではなく、実際には概念モデルにあることに注意してください。(この例は、米国とカナダの SSN/SIN です。これがなければ、概念モデルで一意性を保証することはできません。) これについては以下で詳しく説明しますが、混乱を避けるために、今後は概念モデルの主キーを次のように呼びます。ナチュラルキー。(複数の候補は、自然キーの候補になります。)
  3. 現在の RDBMS 実装の主キー制約には、いくつかの目的があります。1 つは、物理レコードに一意性制約を課して、この (物理的な) 主キー制約の一部ではないすべてのフィールドをその場で更新できるようにすることです。自然キーのフィールドが時間の経過とともに変化する可能性がある場合、そのようなフィールドを物理モデルの主キー制約の一部にしないことが不可欠です。
  4. 主キー制約のもう 1 つの用途は、関連するテーブルからの外部キー ルックアップを有効にすることです。これは、可能な限り狭い主キー制約によって最も効率的に対処されます。この目的のために、自然キーは通常、最適なインデックス サイズと高さに対して幅が広すぎる (人間が認識できる) ため、主キー制約の選択は適切ではありません。
  5. このことから、当然のことながら、概念モデルから自然キーの物理モデルへの最も効率的な変換は、通常、一意性制約と、別個のばらばらな人工的な主キー制約を組み合わせたものであると推測できます。自然キーに人為的なコンポーネントが必要な場合 (SSN/SIN など) には、物理​​モデルに完全に存在する追加の人工的な主キー制約が必要であることに注意してください。これは、外部から見える人工番号を変更および/または再割り当てできるようにする必要があるためです。(米国の SSN が死後数か月で再利用されることを知っていた人はどれくらいいますか?)
于 2013-03-28T10:13:16.403 に答える