私は、テーブルにはプライマリキーが1つしかないが、多くのユニークな制約があると答えました。 他に何がありますか?主キーと一意制約の主な違いは何ですか?
答えて
私は考えることができ、いくつかの違い:
- ユニークな一のNULL値を許可する一方、主キーがnullにすることはできません。
- テーブルに複数のユニークキーを設定できますが、プライマリキーは1つのみ設定できます。ウィキペディア取ら
いくつか - Unique key - Differences from primary key constraints:
主キー制約
- A主キー(主キーはNULLを許可する列に定義することはできません)はnullを許可することはできません。
- 各テーブルは、複数の主キーを持つことはできません。
- 一部のRDBMSでは、主キーはデフォルトでクラスタ化インデックスを生成します。
ユニーク制約
- ユニーク制約がNULL値を許可する列に定義することができます。
- 各テーブルには、複数の一意のキーを設定できます。
- 一部のRDBMSでは、デフォルトで一意キーが非クラスタ化インデックスを生成します。
私はあなたがフィックスについて気にしないことを願っています。私にとって、これは正解です:)!ありがとう! – ivanleoncz
面接者が探していたかもしれないとは言い難いです。多くのオプションがあります。標準SQLでは
、制約がprimary key
宣言され、制約は論理レベルで同じを振る舞うnot null unique
宣言しました。たとえば、両方とも外部キー参照のターゲットにすることができます。面接官は、null
がそれにどのように適合しているか知りたかったかもしれません。ベアなunique
制約ではNULLが許されます。主キーの制約により、T-SQL内の各列not null
が暗黙的に宣言されます。
またはインタビュアーがあなたがユニークインデックスからユニーク制約を区別するかどうかを確認するために探しているかもしれません。 AFAIKでは、すべてのdbmsは固有の索引を使用して固有の制約を実装します。しかし、制約は論理レベルでデータベースに関するものを表し、一意索引は物理レベルでデータベースに関するものを表します。特に
SQL Serverの
インタビュアーがあなたには、いくつかの計算列ことを知っていたかどうかを見てみたかったかもしれない、すべてではなく、それらのは、インデックスを作成することができます。 (それはロングショットです)
多分、面接者はあなたがクラスタリングについて何か言っているかどうかを知りたがっていました。SQL Serverのプライマリキーの制約のデフォルト値はclustered
ですが、インデックスの既定値はnonclustered
です。
おそらく、インタビュー担当者は、あなたがアクセス許可について何かを言っているかどうかを知りたがっていたかもしれません。索引を追加する必要があるよりも、制約を追加するための一般的なアクセス権が必要になります。
UNIQUE制約と主キーとの違いは、テーブルごとに一つだけ主キーを持っているかもしれませんが、あなたは複数のUNIQUE制約を定義することです。主キー制約は、null不可です。 UNIQUE制約は、nullableです。 UNIQUE制約を作成すると、データベースは自動的にUNIQUE索引を作成します。 MS SQL Serverデータベースの場合、PRIMARY KEYは一意のCLUSTERED INDEXを生成します。 UNIQUE制約は、一意のNON-CLUSTERED INDEXを生成します。
- 1. コードファースト - 主キー制約
- 2. 主キー制約違反を避ける
- 3. 複数の主キー制約?
- 4. Redshift Constraints(主キーと外部キー制約)
- 5. 主キー制約または一意キー制約がすでに存在する列での索引の作成
- 6. ドロップ複合主キー制約
- 7. 主キーと複合キーの違いは何ですか?
- 8. モデルの主キー属性を変更すると、FactoryGirl重複キー値が一意制約に違反する
- 9. 主キーとIDの違いは何ですか?
- 10. Spring JPAの主キー制約の適用
- 11. SQLの主キー、インデックス、および制約
- 12. 挿入クエリの主キー制約違反がPK列に触れない
- 13. mongoDBの主キーはすべてのデータベースで一意ですか?
- 14. SQL Server:主キー制約違反で重複キーを挿入できません
- 15. SQLite:正しい名前で主キーと一意の制約を抽出する方法
- 16. JPA主キー違反
- 17. codecademyのReactコードとドキュメントの主な違いは何ですか
- 18. .NET/JavaとRubyのドメインモデリングの主な違いは何ですか?
- 19. Angular2のデコレータ@Input()と@Attribute()の主な違いは何ですか?
- 20. EnhancedPatternLayoutとPatternLayoutの主な違いは何ですか?
- 21. フレームワークとツールキットの主な違いは何ですか?
- 22. Java SEとJava EEの主な違いは何ですか?
- 23. アルゴリズムと擬似コードの主な違いは何ですか?
- 24. maven `-f`と` -pl`パラメータの主な違いは何ですか?
- 25. MDMとESBの主な違いは何ですか?
- 26. アジャイルソフトウェア開発とエクストリームプログラミングの主な違いは何ですか?
- 27. ホワイトボックステストとオートメーションテストの主な違いは何ですか?
- 28. SinatraとRamazeの主な違いは何ですか?
- 29. ContainerControlledLifetimeManagerとHierarchicalLifetimeManagerの主な違いは何ですか?
- 30. AWS DockerとHadoop Clustersの主な違いは何ですか?
pk列をnullにすることはできません。一意の列にすることもできます。 – jarlh
http://stackoverflow.com/questions/9565996/difference-between-primary-key-and-unique-key –