Unterschied zwischen Primärschlüssel und eindeutigem Schlüssel


252

Ich benutze MySQL-Datenbank. Ich habe eine Verwechslung zwischen Primärschlüssel und eindeutigem Schlüssel.

Bitte helfen Sie mir, wo ich einen primären und eindeutigen Schlüssel erstellen soll. Ich meine, in welcher Situation erstellen wir einen eindeutigen Schlüssel oder Primärschlüssel.


9
Eine gute Möglichkeit, s / w zwischen ihnen zu unterscheiden, ist PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
KNU

Antworten:


233

Primärschlüssel:

  • Es kann nur einen Primärschlüssel in einer Tabelle geben
  • In einigen DBMS kann es nicht sein NULL- zB fügt MySQL hinzuNOT NULL
  • Der Primärschlüssel ist eine eindeutige Schlüsselkennung des Datensatzes

Einzigartiger Schlüssel:

  • Kann mehr als ein eindeutiger Schlüssel in einer Tabelle sein
  • Eindeutiger Schlüssel kann NULLWerte haben
  • Es kann ein Kandidatenschlüssel sein
  • Eindeutiger Schlüssel kann sein NULL; Mehrere Zeilen können NULLWerte haben und werden daher möglicherweise nicht als "eindeutig" betrachtet.

11
Außerdem möchten Sie diesen Primärschlüssel hinzufügen, der in mehreren Spalten erstellt werden kann, z. B. Primärschlüssel (CustomerID, ProductID). Dies wird als zusammengesetzter Primärschlüssel bezeichnet. Dies ist, um den ersten Punkt zu verdeutlichen, wie es sein könnte, wie es ist (lesen Sie einen Schlüssel => eine Spalte) von Neuankömmling zu SQL :)
Ken

1
Was bedeutet "Kann ein Kandidatenschlüssel sein"?

1
"Es ist nur eine einzige Null zulässig" - dies gilt nicht, zumindest nicht für MySQL.
Jānis Elmeris

69
Eindeutiger Schlüssel kann null sein und kann nicht eindeutig sein Means ??
Pratik

20
@PratikCJoshi Er meint wahrscheinlich, dass es sich bei dem ansonsten eindeutigen Schlüssel um mehrere Zeilen mit null handeln kann.
John

77

Eindeutiger Schlüssel (UK) : Dies ist eine Spalte oder eine Gruppe von Spalten, die eine Eindeutigkeit in einer Zeile identifizieren können.

Primärschlüssel (PK) : Dies ist auch eine Spalte oder eine Gruppe von Spalten, die eine Eindeutigkeit in einer Zeile identifizieren können.

Der Primärschlüssel ist also nur ein anderer Name für einen eindeutigen Schlüssel, aber die Standardimplementierung in SQL Server unterscheidet sich für einen Primärschlüssel und einen eindeutigen Schlüssel.

Standardmäßig:

  1. PK erstellt einen Clustered-Index und UK erstellt einen Non-Clustered-Index.
  2. PK ist nicht null, aber UK erlaubt Nullen (Hinweis: Standardmäßig)
  3. Es kann nur eine und nur eine PK auf einem Tisch geben, aber es können mehrere UKs vorhanden sein
  4. Sie können die Standardimplementierung je nach Bedarf überschreiben.

Es hängt wirklich davon ab, was Ihr Ziel ist, wenn Sie entscheiden, ob Sie ein UK oder ein PK erstellen möchten. Es folgt eine Analogie wie "Wenn es ein Team von drei Personen gibt, sind alle Peers, aber es wird einen von ihnen geben, der zwei Peers sein wird: PK und UK haben eine ähnliche Beziehung." Ich würde vorschlagen, diesen Artikel zu lesen: Das Beispiel des Autors scheint möglicherweise nicht geeignet zu sein, aber versuchen Sie, sich einen Überblick zu verschaffen.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html


Lesen Sie ungefähr 10 Webseiten, auf denen steht, dass PK mehr als eine Spalte enthalten kann. Wie kann es dann eine und nur eine PK auf einem Tisch geben?

@android Eine PK mit mehr als einer Spalte fungiert in Bezug auf die Eindeutigkeit als einzelne Spalte. Zumindest in PostgreSQL bedeutet dies, dass [table_name]_pkeyder Tabelle eine neue Spalte (mit Standardname ) hinzugefügt wird (ich habe gehört, dass dies als Ersatzschlüssel bezeichnet wird). Quelle: postgresqltutorial.com/postgresql-primary-key Ich bin neu in all dem, daher würde ich mich über ein sachkundigeres Poster freuen , um auf die Nuancen hinzuweisen, die ich verpasst habe.
Poik

Okay, es ist keine Kolumne. Ich habe falsch verstanden. Es ist eine Kontraint, keine Kolumne. Es gibt immer noch den Clustered-Index, aber er umfasst mehr als zwei Spalten anstelle einer. Und jede Spalte darin ist kein Primärschlüssel für sich, sondern der gesamte Satz ist ein Primärschlüssel. In diesen Fällen gibt es also nicht mehr als eine PK.
Poik

46

Für eine Organisation oder ein Unternehmen gibt es so viele physische Entitäten (wie Personen, Ressourcen, Maschinen usw.) und virtuelle Entitäten (ihre Aufgaben, Transaktionen, Aktivitäten). In der Regel muss das Unternehmen Informationen dieser Geschäftseinheiten aufzeichnen und verarbeiten. Diese Geschäftseinheiten werden innerhalb einer gesamten Geschäftsdomäne durch einen Schlüssel identifiziert.

Gemäß RDBMS-Perspektive ist der Schlüssel (auch als Kandidatenschlüssel bezeichnet) ein Wert oder eine Reihe von Werten, die eine Entität eindeutig identifizieren.

Für eine DB-Tabelle sind so viele Schlüssel vorhanden, dass sie möglicherweise für den Primärschlüssel geeignet sind. Damit werden alle Schlüssel, Primärschlüssel, eindeutigen Schlüssel usw. gemeinsam als Kandidatenschlüssel bezeichnet. Der DBA hat jedoch einen Schlüssel aus dem Kandidatenschlüssel für die Suche nach Datensätzen ausgewählt, der als Primärschlüssel bezeichnet wird.

Unterschied zwischen Primärschlüssel und Eindeutiger Schlüssel

1. Verhalten: Der Primärschlüssel wird verwendet, um eine Zeile (einen Datensatz) in einer Tabelle zu identifizieren, während der Eindeutige Schlüssel dazu dient, doppelte Werte in einer Spalte zu verhindern (mit Ausnahme eines Null-Eintrags).

2. Indizierung: Standardmäßig erstellt die SQL-Engine einen Clustered-Index für den Primärschlüssel, falls nicht vorhanden, und einen Nicht-Clustered-Index für den eindeutigen Schlüssel.

3. Nullbarkeit: Der Primärschlüssel enthält keine Nullwerte, während der Eindeutige Schlüssel dies kann.

4. Existenz: Eine Tabelle kann höchstens einen Primärschlüssel haben, aber mehrere eindeutige Schlüssel.

5. Änderbarkeit: Sie können Primärwerte nicht ändern oder löschen, Unique-Key-Werte jedoch.

Für weitere Informationen und Beispiele:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html


7
Im fünften Punkt sagen Sie, wir können Primärwerte nicht ändern oder löschen. Wir können die primären Werte in der Tabelle sicher mithilfe einer Update-Anweisung ändern.
Kapil

3
@Kapil übertrifft damit den gesamten Zweck der Verwendung eines Primärschlüssels.
Gokigooooks

2
Clustered Index: Die Zeilen werden physisch auf der Festplatte in der gleichen Reihenfolge wie der Index gespeichert
Duy Đặng

26

Ein Primärschlüssel muss eindeutig sein.

Ein eindeutiger Schlüssel muss nicht der Primärschlüssel sein - siehe Kandidatenschlüssel .

Das heißt, es kann mehr als eine Kombination von Spalten in einer Tabelle geben, die eine Zeile eindeutig identifizieren können - nur eine davon kann als Primärschlüssel ausgewählt werden. Die anderen, obwohl einzigartig, sind Kandidatenschlüssel.


17

Unterschied zwischen Primärschlüssel und eindeutigem Schlüssel

+-----------------------------------------+-----------------------------------------------+
|                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.                       |
+-----------------------------------------+-----------------------------------------------+

Detaillierte Informationen finden Sie unter:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html


16

Ein Primärschlüssel hat die Semantik, die Zeile einer Datenbank zu identifizieren. Daher kann es für eine bestimmte Tabelle nur einen Primärschlüssel geben, während es viele eindeutige Schlüssel geben kann.

Aus dem gleichen Grund kann ein Primärschlüssel auch nicht NULL sein (zumindest in Oracle, bei anderen Datenbanken nicht sicher).

Da es die Zeile identifiziert, sollte es sich niemals ändern. Das Ändern des Primärschlüssels kann ernsthafte Schmerzen und wahrscheinlich ewige Verdammnis verursachen.

In den meisten Fällen möchten Sie daher eine künstliche ID für den Primärschlüssel, die nur zur Identifizierung einzelner Zeilen in der Tabelle verwendet wird.

Eindeutige Tasten hingegen können sich beliebig ändern.


22
+1 für die Erwähnung des Risikos der ewigen Verdammnis. Es ist Zeit, die Theologie in die relationale Datenbanktheorie einzuführen.
Neville Kuyt

PK kann auch in SQL Server nicht NULL sein
mrd3650

7

Ein Primärschlüssel ist ein eindeutiger Schlüssel.

Jede Tabelle muss höchstens EINEN Primärschlüssel haben, kann jedoch mehrere eindeutige Schlüssel haben. Ein Primärschlüssel wird verwendet, um eine Tabellenzeile eindeutig zu identifizieren. Ein Primärschlüssel kann nicht sein, NULLda er NULLkein Wert ist.


6
  • Denken Sie, der Tabellenname ist beschäftigt.
  • Primärschlüssel
  • Der Primärschlüssel kann keine Nullwerte akzeptieren. Der Primärschlüssel erzwingt die Eindeutigkeit einer Spalte. Wir können nur einen Primärschlüssel in einer Tabelle haben.
  • Einzigartiger Schlüssel
  • Eindeutiger Schlüssel kann Nullwerte akzeptieren. Der eindeutige Schlüssel erzwingt auch die Eindeutigkeit einer Spalte. Wenn der eindeutige Schlüssel Nullwerte enthält, warum kann er dann eindeutig sein? Ja, obwohl es Nullwerte akzeptieren kann, erzwingt es die Eindeutigkeit einer Spalte. Schauen Sie sich einfach das Bild an. Hier ist Emp_ID primär und die Bürger-ID ist eindeutig. Ich hoffe du verstehst. Wir können mehrere eindeutige Schlüssel in einer Tabelle verwenden. Geben Sie hier die Bildbeschreibung ein

1
Wir können nicht mehr als einen Nullwert in den eindeutigen Schlüssel einfügen und es werden auch keine Duplikate zugelassen.
Masum

@ mahedi-hasan Ist eine eindeutige Schlüsselspalte nicht nur ein NULL-Wert? Wie kommt es, dass die letzten beiden Zeilen in Citizen ID NULL sind? Vermisse ich hier etwas?
Supernova

Ich habe gerade eine Antwort auf meinen eigenen Kommentar oben bekommen. Es sieht so aus, als ob MySQL mehrere NULL-Werte in Unique zulässt. Es sieht also so aus, als hätte @Mahedi_Hasan MySQL verwendet. stackoverflow.com/questions/3712222/…
Supernova

6

Ich weiß, dass diese Frage mehrere Jahre alt ist, aber ich möchte eine Antwort darauf geben und erklären, warum und nicht wie

Zweck des Primärschlüssels : So identifizieren Sie eine Zeile in einer Datenbank eindeutig => Eine Zeile repräsentiert eine einzelne Instanz des von der Tabelle modellierten Entitätstyps. Ein Primärschlüssel erzwingt die Integrität einer Entität, AKA Entity Integrity. Der Primärschlüssel wäre ein Clustered-Index, dh er definiert die Reihenfolge, in der Daten physisch in einer Tabelle gespeichert werden.

Zweck des eindeutigen Schlüssels : Ok, mit dem Primärschlüssel haben wir eine Möglichkeit, eine Zeile eindeutig zu identifizieren. Aber ich habe ein Geschäftsbedürfnis, so dass eine andere Spalte / eine Reihe von Spalten eindeutige Werte haben sollte. Nun, technisch gesehen kann diese Spalte (n) eindeutig ein Kandidat sein, um die Integrität von Entitäten durchzusetzen. Nach allem, was wir wissen, kann diese Spalte Daten enthalten, die von einer externen Organisation stammen und bei denen ich Zweifel daran habe, dass sie einzigartig sind. Ich kann nicht darauf vertrauen, dass es die Integrität der Entität gewährleistet. Ich mache es einfach zu einem einzigartigen Schlüssel, um meine Geschäftsanforderungen zu erfüllen.

Los geht's!


1

Wenn Ihr Datenbankdesign so ist, dass kein Fremdschlüssel benötigt wird, können Sie den eindeutigen Schlüssel verwenden ( denken Sie jedoch daran, dass der eindeutige Schlüssel einen einzelnen Nullwert zulässt ).

Wenn Sie in der Datenbank einen Fremdschlüssel anfordern, haben Sie keine andere Wahl, als den Primärschlüssel zu verwenden.

Um den Unterschied zwischen eindeutigem und Primärschlüssel zu sehen, besuchen Sie hier


1

Eindeutiger Schlüssel: - Er sollte verwendet werden, wenn Sie einen eindeutigen Wert angeben müssen. Im Fall eines eindeutigen Schlüssels bedeutet dies, dass auch Nullwerte zulässig sind. Eindeutige Schlüssel sind Schlüssel, die in dieser Spalte eindeutig und nicht ähnlich sind, wie z. B. Ihr Kosename .it kann nichts anderes als null sein. Wenn Sie im Kontext der Datenbank nachfragen, muss beachtet werden, dass sich jede Null von einer anderen Null in der Datenbank unterscheidet. EXCEPT-SQL Server wobei null = null wahr ist


Primärschlüssel: - Er sollte verwendet werden, wenn Sie eine Zeile eindeutig identifizieren müssen. Primärschlüssel ist der Schlüssel, der für jede Zeile in einer Datenbankeinschränkung eindeutig ist, da er keine Null zulässt. Sie haben also möglicherweise gesehen, dass die Datenbank haben eine Spalte, die automatisch inkrementiert wird und der Primärschlüssel der Tabelle ist. Außerdem kann es als Fremdschlüssel in einer anderen Tabelle verwendet werden. Beispiel: orderId in einer Auftragstabelle , billId in einer Rechnungstabelle .

Kommen wir nun zu der Situation zurück, in der Sie es verwenden sollten: -

1) Primärschlüssel in der Spalte, der in der Tabelle nicht null sein darf und den Sie als Fremdschlüssel in einer anderen Tabelle zum Erstellen einer Beziehung verwenden

2) eindeutiger Schlüssel in der Tabelle, bei dem es keinen Einfluss auf die Tabelle oder die gesamte Datenbank hat, ob Sie die Null für die bestimmte Spalte wie Snacks im Restaurant verwenden. Möglicherweise nehmen Sie keine Snacks in einem Restaurant


1

Unterschied zwischen Primärschlüssel und Eindeutiger Schlüssel

Beide Primary keyund Unique Keywerden verwendet, um eine Zeile in einer Tabelle eindeutig zu definieren. Primary Keyerstellt ein clustered indexvon der Spalte, während a Unique creates an unclustered index of the column.

A Primary Keynicht erlaubt NULL value, jedoch a Unique Keynicht erlaubt one NULL value.


0

Einfach Primärschlüssel ist eindeutig und kann nicht null sein, eindeutig kann null sein und darf nicht eindeutig sein.


"einzigartig kann null sein und darf nicht eindeutig sein". Was may not be uniquebedeutet hier?
Yusuf Hassan

0

Primärschlüssel

Der Hauptzweck des Primärschlüssels besteht darin, ein Mittel zum Identifizieren jedes Datensatzes in der Tabelle bereitzustellen.

Der Primärschlüssel bietet eine Möglichkeit, die Zeile mithilfe von Daten in der Zeile zu identifizieren. Ein Primärschlüssel kann auf einer oder mehreren Spalten basieren, z. B. Vor- und Nachname. In vielen Designs ist der Primärschlüssel jedoch eine automatisch generierte Nummer aus einer Identitätsspalte.

Ein Primärschlüssel hat folgende Eigenschaften:

  1. Es kann nur einen Primärschlüssel für eine Tabelle geben.
  2. Der Primärschlüssel besteht aus einer oder mehreren Spalten.
  3. Der Primärschlüssel erzwingt die Entitätsintegrität der Tabelle.
  4. Alle definierten Spalten müssen als NOT NULL definiert sein.
  5. Der Primärschlüssel identifiziert eine Zeile eindeutig.
  6. Primärschlüssel führen standardmäßig zu CLUSTERED-eindeutigen Indizes.

Einzigartige Schlüssel

Ein eindeutiger Schlüssel wird auch als eindeutige Einschränkung bezeichnet. Eine eindeutige Einschränkung kann verwendet werden, um sicherzustellen, dass Zeilen innerhalb der Datenbank eindeutig sind.

Tun wir das nicht schon mit dem Primärschlüssel? Ja, das tun wir, aber eine Tabelle kann mehrere Sätze von Spalten enthalten, die eindeutig sein sollen.

In SQL Server weist der eindeutige Schlüssel die folgenden Merkmale auf:

  1. In einer Tabelle können mehrere eindeutige Schlüssel definiert sein.
  2. Eindeutige Schlüssel führen standardmäßig zu NICHT CLUSTERED eindeutigen Indizes.
  3. Eine oder mehrere Spalten bilden einen eindeutigen Schlüssel.
  4. Die Spalte kann NULL sein, aber eine NULL pro Spalte ist zulässig.
  5. Auf eine eindeutige Einschränkung kann durch eine Fremdschlüsseleinschränkung verwiesen werden.

Quelle: hier


0

Die Hauptmerkmale eines Primärschlüssels sind:

Es muss für jede Datenzeile einen eindeutigen Wert enthalten. Es darf keine Nullwerte enthalten. Nur ein Primärschlüssel in einer Tabelle.

Die Hauptmerkmale eines eindeutigen Schlüssels sind:

Es kann auch einen eindeutigen Wert für jede Datenzeile enthalten.

Es kann auch Nullwerte enthalten.

Mehrere eindeutige Schlüssel in einer Tabelle.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.