私はMySQLデータベースを使用しています。主キーと固有キーの間に混乱があります。
主キーと一意のキーをどこに作成すればよいかを教えてください。私たちはどの状況で私たちがユニークなキーまたは主キーを作成するかを意味します。
主キー:
NULL
にすることはできません。 MySQLがNOT NULL
を追加ユニークキー:
NULL
値を持つことができますNULL
です。複数の行がNULL
の値を持つことができるため、「一意」と見なされない一意キー(イギリス) :行内の一意性を識別できる列または列のグループです。
主キー(PK) : また 行の一意性を識別できる列または列のグループです。
したがって、主キーは一意キーの別の名前ですが、SQL Serverの既定の実装は主キーと一意キーでは異なります。
デフォルトでは:
それは本当に英国またはPKを作成するかどうかを決定するときにあなたの目的が何であるかによって異なります。それは、「3人のチームがある場合、それらのすべてがピアであるが、ピアのペアになるそれらのうちの1つがあるでしょう:PKとイギリスは同様の関係を持っています」のような類似に従います。私はこの記事を読むことをお勧めします:著者によって与えられた例は適切ではないかもしれませんが、全体的な考えを得るようにしてください。
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
組織や企業には、非常に多くの物理的エンティティ(人、リソース、マシンなど)と仮想エンティティ(それらのタスク、トランザクション、アクティビティ)があります。通常、企業はこれらの事業体の情報を記録および処理する必要があります。これらの事業体は、キーによって事業ドメイン全体内で識別されます。
RDBMSの見通しによると、Key(別名Candidate Key)はエンティティを一意に識別する値または値のセットです。
DBテーブルの場合、非常に多くのキーが存在し、主キーに適格である可能性があります。そのため、すべてのキー、主キー、一意のキーなどをまとめて候補キーと呼びます。ただし、レコードを検索するために候補キーからキーを選択したDBAは、プライマリキーと呼ばれます。
主キーと一意キーの違い
1。動作: テーブル内の行(レコード)を識別するために主キーが使用されますが、一意キーは列内の値の重複を防ぐためです(NULLエントリを除く)。
2.インデックス作成: デフォルトでは、SQLエンジンは、存在しない場合は主キーにクラスタ化インデックスを作成し、一意キーに非クラスタ化インデックスを作成します。
3. NULL可能性: 主キーにはNULL値は含まれませんが、一意キーには許可されます。
4.存在: テーブルには最大1つの主キーを含めることができますが、複数の一意キーを持つことができます。
5.変更可能性: プライマリ値を変更または削除することはできませんが、一意キー値は変更できます。
詳細情報と例
主キーは一意である必要があります。
一意のキーは主キーである必要はありません - 候補キー を参照してください。
つまり、行を一意に識別できるテーブル上の列の組み合わせが複数ある場合があります。主キーとして選択できるのはそのうちの1つだけです。他のものは、一意ではありますが候補キーです。
主キーには、データベースの行を識別するという意味があります。したがって、特定のテーブルには1つの主キーしか存在できませんが、一意のキーは多数存在できます。
また、同じ理由で主キーをNULLにすることはできません(少なくともOracleでは、他のデータベースについては不明です)。
それは行を識別するのでそれは決して変わってはいけません。主キーを変更すると、深刻な痛みと、おそらく永遠の損害を引き起こすことにつながります。
そのため、ほとんどの場合、テーブルの単一行を識別する以外の目的では使用されない、主キーの人工IDが必要です。
一方、ユニークキーはあなたが望むだけ変更するかもしれません。
主キーと一意キーの違い
+-----------------------------------------+-----------------------------------------------+ | Primary Key | Unique Key | +-----------------------------------------+-----------------------------------------------+ | Primary Key can't accept null values. | Unique key can accept only one null value. | +-----------------------------------------+-----------------------------------------------+ | By default, Primary key is clustered | By default, Unique key is a unique | | index and data in the database table is | non-clustered index. | | physically organized in the sequence of | | | clustered index. | | +-----------------------------------------+-----------------------------------------------+ | We can have only one Primary key in a | We can have more than one unique key in a | | table. | table. | +-----------------------------------------+-----------------------------------------------+ | Primary key can be made foreign key | In SQL Server, Unique key can be made foreign | | into another table. | key into another table. | +-----------------------------------------+-----------------------------------------------+
あなたはから詳細な情報を見つけることができます:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html
主キーは一意のキーです。
各テーブルは、 多くても ONE主キーを持つ必要がありますが、複数の固有キーを持つことができます。主キーは、テーブル行を一意に識別するために使用されます。 NULL
は値ではないため、主キーをNULL
にすることはできません。
私はこの質問が数年前であることを知っていますが、この説明への答えを提供したいと思います方法ではなくなぜ
主キーの目的:データベース内の行を一意に識別するために=>行は、テーブルによってモデル化されたエンティティタイプの単一インスタンスを表します。主キーは、エンティティの整合性、つまりエンティティ整合性を強化します。主キーはクラスター化インデックスになります。つまり、データがテーブルに物理的に格納される順序を定義します。
一意キーの目的:わかりました。プライマリキーを使用すると、行を一意に識別する方法があります。しかし、別の列/列のセットが一意の値を持つ必要があるというビジネス上のニーズがあります。技術的には、この列が一意であることを考えると、エンティティの整合性を強制する候補になる可能性があります。しかし、私たちが知っているすべての人にとって、この列には、一意であることについて疑問があるかもしれない外部組織からのデータを含めることができます。エンティティの整合性を提供することを信頼できない場合があります。ビジネス要件を満たすための唯一のキーにしています。
行くぞ!
あなたのデータベース設計が外部キーを必要としないようなものであるなら、あなたはユニークキー( で行くことができますがユニークキーは単一のnull値を許すことを覚えておいてください )。
データベースに外部キーが必要な場合は、主キーを使用する必要があります。
ユニークキーと主キーの違いを見るには ここ
主キーと一意キーの違い
Primary key
と Unique Key
の両方を使用して、テーブル内の行を一意に定義します。 Primary Key
は列の clustered index
を作成しますが、Unique creates an unclustered index of the column
は作成します。
A Primary Key
はNULL value
を許可しませんが、a Unique Key
はone NULL value
を許可します。
主キーの主な目的は、テーブル内の各レコードを識別する手段を提供することです。
主キーは、行内のデータを使用して行を識別するための手段を提供します。主キーは、姓や名など、1つ以上の列に基づくことができます。ただし、多くの設計では、主キーはID列から自動生成された番号です。
主キーには次の特性があります。
一意キーは一意制約とも呼ばれます。データベース内で行が一意であることを確認するために、一意の制約を使用できます。
主キーを使用してそれを実行していませんか。うん、そうだけど、テーブルにはあなたがユニークにしたいカラムのセットがいくつかあるかもしれない。
SQL Serverでは、一意キーには次の特性があります。
出典: ここ
主キーの主な機能は次のとおりです。
データの行ごとに一意の値を含める必要があります。 null値を含めることはできません。テーブル内の1つの主キーのみ。
ユニークキーの主な機能は次のとおりです。
データの各行に一意の値を含めることもできます。
Null値を含めることもできます。
テーブル内の複数の一意キー。
単に主キーは一意であり、nullにすることはできません。
一意のキー:-一意の値を指定する必要がある場合に使用する必要があります。一意のキーの場合、null値も許可されます。一意のキーとは、ペット名など、その列で一意で非類似のキーです。 .itはnullのようなものではなく、データベースのコンテキストで尋ねている場合、すべてのnullはデータベース内の別のnullとは異なることに注意する必要があります。EXCEPT-SQL Server where null = null true
主キー:-row.primaryを一意に識別する必要がある場合に使用する必要があります。primaryは、データベース制約内のすべての行に対して一意であるキーです。nullを許可しないということです。自動インクリメントの列があり、それがテーブルの主キーです。さらに、別のテーブルの外部キーとして使用できます。例は、注文テーブルのorderId、billId請求書表.
それを使用する状況に戻りました:-
1)テーブル内のヌルにできない主キーで、外部キーとして使用している関係を作成するための別のテーブル
2)レストランのスナックのように特定の列にnullを使用するかどうかは、テーブルまたはデータベース全体に影響しないテーブルの一意のキーレストランでのおやつ