2016-05-23 15 views
0

私は、テーブルにはプライマリキーが1つしかないが、多くのユニークな制約があると答えました。 他に何がありますか?主キーと一意制約の主な違いは何ですか?

+2

pk列をnullにすることはできません。一意の列にすることもできます。 – jarlh

+1

http://stackoverflow.com/questions/9565996/difference-between-primary-key-and-unique-key –

答えて

1

プライマリ列をnullにすることはできません。一意の列にすることはできません。

+7

私のコメントをカットアンドペーストして報酬を得ました... – jarlh

2

私は考えることができ、いくつかの違い:

  1. ユニークな一のNULL値を許可する一方、主キーがnullにすることはできません。
  2. テーブルに複数のユニークキーを設定できますが、プライマリキーは1つのみ設定できます。ウィキペディア取ら

いくつか - Unique key - Differences from primary key constraints

主キー制約

  1. A主キー(主キーはNULLを許可する列に定義することはできません)はnullを許可することはできません。
  2. 各テーブルは、複数の主キーを持つことはできません。
  3. 一部のRDBMSでは、主キーはデフォルトでクラスタ化インデックスを生成します。

ユニーク制約

  1. ユニーク制約がNULL値を許可する列に定義することができます。
  2. 各テーブルには、複数の一意のキーを設定できます。
  3. 一部のRDBMSでは、デフォルトで一意キーが非クラスタ化インデックスを生成します。
+1

私はあなたがフィックスについて気にしないことを願っています。私にとって、これは正解です:)!ありがとう! – ivanleoncz

0

面接者が探していたかもしれないとは言い難いです。多くのオプションがあります。標準SQLでは

、制約がprimary key宣言され、制約は論理レベルで同じを振る舞うnot null unique宣言しました。たとえば、両方とも外部キー参照のターゲットにすることができます。面接官は、nullがそれにどのように適合しているか知りたかったかもしれません。ベアなunique制約ではNULLが許されます。主キーの制約により、T-SQL内の各列not nullが暗黙的に宣言されます。

またはインタビュアーがあなたがユニークインデックスからユニーク制約を区別するかどうかを確認するために探しているかもしれません。 AFAIKでは、すべてのdbmsは固有の索引を使用して固有の制約を実装します。しかし、制約は論理レベルでデータベースに関するものを表し、一意索引は物理レベルでデータベースに関するものを表します。特に

SQL Serverの

インタビュアーがあなたには、いくつかの計算列ことを知っていたかどうかを見てみたかったかもしれない、すべてではなく、それらのは、インデックスを作成することができます。 (それはロングショットです)

多分、面接者はあなたがクラスタリングについて何か言っているかどうかを知りたがっていました。SQL Serverのプライマリキーの制約のデフォルト値はclusteredですが、インデックスの既定値はnonclusteredです。

おそらく、インタビュー担当者は、あなたがアクセス許可について何かを言っているかどうかを知りたがっていたかもしれません。索引を追加する必要があるよりも、制約を追加するための一般的なアクセス権が必要になります。

0

UNIQUE制約主キーとの違いは、テーブルごとに一つだけ主キーを持っているかもしれませんが、あなたは複数のUNIQUE制約を定義することです。主キー制約は、null不可です。 UNIQUE制約は、nullableです。 UNIQUE制約を作成すると、データベースは自動的にUNIQUE索引を作成します。 MS SQL Serverデータベースの場合、PRIMARY KEYは一意のCLUSTERED INDEXを生成します。 UNIQUE制約は、一意のNON-CLUSTERED INDEXを生成します。

関連する問題