web-dev-qa-db-ja.com

主キーの代わりにIDを使用することをお勧めしますか?

Identityid_numのように宣言して、id_numに一意の数の増分を持たせることができます。

CREATE TABLE new_employees
(
  id_num int IDENTITY(1,1),
  fname varchar (20),
  minit char(1),
  lname varchar(30)
)

Identityは各行に一意の番号を提供しているため、Primary keyの代わりにIdentityを使用することをお勧めしますか?

11
Jack

Identity columnsPrimary Keysは2つの非常に異なるものです。 Identity columnは、自動インクリメント番号を提供します。それだけです。 Primary Key(少なくともSQL Serverでは)は一意性を保証する一意の制約であり、通常(常にではありませんが)クラスター化されたキーです。 MS SQL Serverでは、これもインデックスです(一部のRDBMSでは、それらはそれほど密接に関連付けられていません)。インデックスとして、より高速な検索などが提供されます。よくあるIdentity columnsが存在しない場合、Primary Keynatural keyとして頻繁に使用されますが、代わりのものではありません。

23
Kenneth Fisher

アイデンティティはnotが一意の値を保証するため、そうではありません。 IDプロパティはSET IDENTITY_INSERT <schema>.<table> ONでバイパスできます(SQL Serverでは、使用しているRDBMSを指定していません)。

主キー制約(および一意の制約)では、一意のインデックスを使用してenforce一意性を指定します。

5