mysqlデータベースを使用しています。主キーと一意キーの間で混乱があります。
主キーと一意キーをどこに作成すればよいか教えてください。つまり、どのような状況で一意のキーまたは主キーを作成するかということです。
mysqlデータベースを使用しています。主キーと一意キーの間で混乱があります。
主キーと一意キーをどこに作成すればよいか教えてください。つまり、どのような状況で一意のキーまたは主キーを作成するかということです。
回答:
主キー:
NULL
-MySQLの追加NOT NULL
一意のキー:
NULL
値を持つことができますNULL
です。複数の行にNULL
値を含めることができるため、「一意」と見なされない場合があります一意のキー(英国):行の一意性を識別できる列または列のグループです。
主キー(PK):行の一意性を識別することができる列または列のグループでもあります。
したがって、主キーは一意キーの別の名前にすぎませんが、SQL Serverのデフォルトの実装は、主キーと一意キーで異なります。
デフォルトでは:
UKとPKのどちらを作成するかを決定するときの目的は、本当にそれによって異なります。それは、「3人のチームがあり、それらすべてが仲間であるが、ピアのペアとなる1人がいる場合:PKとUKは同様の関係にある」などのアナロジーに従います。私はこの記事を読むことをお勧めします:著者が示した例は適切ではないように見えるかもしれませんが、全体的なアイデアを得ようとします。
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
)がテーブルに追加されることを意味します(これは代理キーと呼ばれると聞いたことがあります)。出典:postgresqltutorial.com/postgresql-primary-keyこれは初めてなので、見逃したニュアンスを指摘するためのより知識のあるポスターをいただければ幸いです。
組織または企業の場合、非常に多くの物理エンティティ(人、リソース、マシンなど)と仮想エンティティ(タスク、トランザクション、アクティビティ)があります。通常、ビジネスはこれらのビジネスエンティティの情報を記録および処理する必要があります。これらのビジネスエンティティは、ビジネスドメイン全体でキーによって識別されます。
RDBMSの見込みに従って、キー(別名候補キー)は、エンティティを一意に識別する値または値のセットです。
DB-Tableの場合、非常に多くのキーが存在し、主キーの対象になる可能性があります。すべてのキー、主キー、一意のキーなどをまとめて候補キーと呼びます。ただし、DBAはレコードを検索するための候補キーからキーを選択しました。これは主キーと呼ばれます。
主キーと一意キーの違い
1.動作: 主キーはテーブル内の行(レコード)を識別するために使用されますが、一意キーは列内の値の重複を防ぐために使用されます(nullエントリを除く)。
2.インデックス作成: デフォルトでは、SQLエンジンは、プライマリキーにクラスター化インデックスが存在しない場合は作成し、非クラスター化インデックスを一意キーに作成します。
3. null可能性:主キーにはnull値は含まれませんが、一意キーには含めることができます。
4.存在:テーブルは最大で1つの主キーを持つことができますが、複数の一意キーを持つことができます。
5.変更可能性:プライマリ値を変更または削除することはできませんが、Unique-key値は変更できます。
詳細と例について:
主キーと一意キーの違い
+-----------------------------------------+-----------------------------------------------+ | 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をご覧ください。
主キーには、データベースの行を識別するという意味があります。したがって、特定のテーブルの主キーは1つしか存在できませんが、一意のキーは多数存在できます。
また、同じ理由で、主キーをNULLにすることはできません(少なくともOracleでは、他のデータベースについては不明です)。
行を識別するため、決して変更してはなりません。主キーの変更は、深刻な痛みを引き起こし、おそらく永遠の破滅を引き起こすでしょう。
そのため、ほとんどの場合、テーブル内の単一の行を識別する以外に使用されない主キーの人工的なIDが必要になります。
一方、一意のキーは好きなだけ変更できます。
私はこの質問が数年前のものであることを知っていますが、どのようにではなくその理由を説明する答えを提供したいと思います
主キーの目的:データベース内の行を一意に識別する=>行は、テーブルによってモデル化されたエンティティタイプの単一のインスタンスを表します。主キーは、エンティティの整合性、別名エンティティ整合性を実施します。主キーはクラスター化インデックスです。つまり、データが物理的にテーブルに格納される順序を定義します。
一意キーの目的:OK、主キーを使用して、行を一意に識別する方法があります。しかし、別の列または列のセットに一意の値を設定する必要があるというビジネス上のニーズがあります。まあ、技術的には、この列が一意であることを考えると、エンティティの整合性を適用する候補になる可能性があります。しかし、私たちが知っているすべての人にとって、この列には、一意であることについて疑問があるかもしれない外部組織からのデータを含めることができます。エンティティの整合性を提供することは信頼できません。私は、ビジネス要件を満たすための唯一の鍵にします。
よし!
データベース設計で外部キーが不要な場合は、一意のキーを使用できます(ただし、一意のキーは単一のnull値を許可することに注意してください)。
データベースが外部キーを要求する場合は、主キーを使用する必要があるため、選択肢がなくなります。
一意のキー:-一意の値を指定する必要がある場合に使用する必要があります。一意のキーの場合は、null値も許可されることを意味します。一意のキーは、たとえばペットの名前など、その列で一意で類似していないキーです.itはnullのようなものにすることはできません。データベースのコンテキストで質問する場合、すべてのnullはデータベース内の別のnullとは異なることに注意する必要があります。EXCEPT-SQLサーバー(null = nullがtrueの場合)
主キー:-行を一意に識別する必要がある場合に使用する必要があります.primaryは、データベース制約のすべての行に固有のキーであり、nullを許可しないため、データベースが自動インクリメントの列があり、それがテーブルの主キーです。それに加えてすることができ、別のtable.exampleの外部キーとして使用することができ、注文表に注文ID、法案の表にbillId。
今それを使用する状況に戻ってきます:-
1) テーブルでnullにできない列の主キーであり、リレーションシップを作成するために別のテーブルで外部キーとして使用している
2)テーブル内またはデータベース全体に影響しないテーブル内の一意のキー。レストランのスナックのように特定の列に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
ます。
単に主キーは一意であり、nullにすることはできません。uniqueはnullにすることができ、一意でない場合があります。
may not be unique
ここはどういう意味ですか?
主キーの主な目的は、テーブル内の各レコードを識別する手段を提供することです。
主キーは、行内のデータを使用して行を識別する手段を提供します。主キーは、姓名などの1つ以上の列に基づくことができます。ただし、多くの設計では、主キーはID列から自動生成された数値です。
主キーには次の特性があります。
一意キーは一意制約とも呼ばれます。一意制約を使用して、データベース内で行が一意であることを確認できます。
既に主キーでそれをしていませんか?はい、ありますが、テーブルには、一意にする列のセットがいくつかある場合があります。
SQL Serverでは、一意のキーには次の特性があります。
ソース:ここ
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT