wake-up-neo.com

Was ist der Unterschied zwischen Primärschlüssel und Eindeutigem Schlüssel

Ich habe versucht, es bei Google herauszufinden, aber es wird keine zufriedenstellende Antwort gegeben. Kann jemand den festen Unterschied erklären. 

wenn der Primärschlüssel tatsächlich zur eindeutigen Auswahl von Daten verwendet wird, was ist dann der Bedarf an eindeutigem Schlüssel? 

Wann sollte ich einen Primärschlüssel verwenden und wann einen eindeutigen Schlüssel verwenden?

24
nectar

Primärschlüssel und eindeutiger Schlüssel werden für verschiedene Zwecke verwendet. Wenn Sie wissen, wozu sie dienen, können Sie entscheiden, wann sie verwendet werden.

Der Primärschlüssel wird verwendet, um eine Datenzeile in einer Tabelle zu identifizieren. Sie wird immer dann verwendet, wenn Sie sich auf eine bestimmte Zeile beziehen müssen, z. in anderen Tabellen oder nach Anwendungscode usw. Um eine Zeile zu identifizieren, müssen die Werte einer PK eindeutig sein. Außerdem können sie nicht null sein, da die meisten dbms null als ungleich null behandeln (da null in der Regel "unbekannt" bedeutet). Eine Tabelle kann nur eine PK haben. Alle Tabellen in Ihrer Datenbank sollten über eine PK verfügen (dies wird jedoch von den meisten Datenbankbibliotheken nicht erzwungen), und PK kann sich über mehrere Spalten erstrecken.

Eindeutige Schlüsseleinschränkungen werden verwendet, um sicherzustellen, dass Daten nicht in zwei Zeilen in der Datenbank dupliziert werden. Eine Zeile in der Datenbank darf den Wert der Eindeutigkeitsschlüsseleinschränkung auf null setzen. Obwohl eine Tabelle über eine PK verfügen sollte, muss sie keine zusätzlichen eindeutigen Schlüssel haben. Tabellen können jedoch mehrere eindeutige Schlüssel haben, wenn dies Ihren Anforderungen entspricht. Wie PKs können eindeutige Schlüssel sich über mehrere Spalten erstrecken.

Es ist auch wichtig zu wissen, dass viele DBMS Tabellen standardmäßig mithilfe des PK auf der Festplatte indizieren und physisch anordnen. Dies bedeutet, dass das Nachschlagen von Werten anhand ihrer PK schneller ist als die Verwendung anderer Werte in einer Reihe. In der Regel können Sie dieses Verhalten jedoch bei Bedarf überschreiben.

33
Kramii

Der Begriff "eindeutiger Schlüssel" ist sowohl mehrdeutig als auch tautolog. Im relationalen Modell bedeutet ein "Schlüssel" einen Kandidatenschlüssel, der per Definition ohnehin eindeutig ist. Ein Primärschlüssel ist nur einer der Kandidatenschlüssel einer Beziehung. Daher bedeutet "eindeutiger Schlüssel" genau dasselbe wie "Kandidatenschlüssel", was genau dasselbe wie "Primärschlüssel" bedeutet. Es gibt keinen Unterschied.

SQL hat jedoch eine so genannte UNIQUE-Einschränkung, die sich geringfügig von einer SQL PRIMARY KEY-Einschränkung unterscheidet. Beide erzwingen die Eindeutigkeit, aber PRIMARY KEY kann nur einmal pro Tabelle verwendet werden. UNIQUE-Einschränkungen erlauben auch Nullen, PRIMARY KEY-Bedingungen dagegen nicht.

Daher wird der möglicherweise verwirrende Begriff "eindeutiger Schlüssel" am häufigsten verwendet, um einen durch eine UNIQUE-Einschränkung erzwungenen Schlüssel zu bezeichnen. Es könnte sogar verwendet werden, um eine UNIQUE-Einschränkung für nullfähige Spalten zu bedeuten, obwohl dies meiner Meinung nach eine sehr zweifelhafte Verwendung des Begriffs ist, da ein Satz von Spalten, die Nullen enthalten, kein Kandidatenschlüssel sein kann Spalten ist nicht wirklich korrekt und führt zu Verwirrung.

11
nvogel

Bevor Sie den Unterschied zwischen Primärschlüssel und Eindeutigem Schlüssel diskutieren, ist es wichtig, den Schlüssel zu bestimmen, wie er im Geschäft eine Rolle spielt und wie er in SQL/Oracle usw. implementiert wird.

Geschäftsperspektive: 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). Normalerweise muss das Geschäft Informationen für diese Unternehmenseinheiten aufzeichnen und verarbeiten. Diese Geschäftsentitäten werden im gesamten Geschäftsbereich durch einen Schlüssel identifiziert. 

Gemäß RDBMS-Prospective: Key (a.k.a Candidate Key) ein Wert oder eine Menge von Werten, der die Entität eindeutig identifiziert. Für eine Db-Tabelle gibt es so viele Schlüssel, die für den Primärschlüssel in Frage kommen. .__ Alle Schlüssel, Primärschlüssel, eindeutiger Schlüssel usw. werden zusammen als Kandidatenschlüssel bezeichnet.

Für eine Tabelle, die von einem Datenbankadministrator ausgewählt wird, wird der Kandidatenschlüssel als Primärschlüssel bezeichnet, andere Kandidatenschlüssel werden als Sekundärschlüssel bezeichnet. 

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

1. Verhalten: Primärschlüssel wird verwendet, um eine Zeile (Datensatz) in einer Tabelle zu identifizieren, während Unique-Key dazu dient, doppelte Werte in einer Spalte zu verhindern.

2. Indizierung: Standardmäßig erstellt Sql-Engine Clustered-Index für Primärschlüssel, falls nicht vorhanden, und Non-Clustered-Index für Eindeutigschlüssel.

3. Nullfähigkeit: Der Primärschlüssel enthält keine Nullwerte, wohingegen der eindeutige Schlüssel dies kann.

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

5. Modifizierbarkeit: Sie können primäre Werte nicht ändern oder löschen, aber eindeutige Schlüsselwerte können dies.

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

Ein Primärschlüssel ist ein eindeutiger Schlüssel. Beide Schlüsseltypen dienen dazu, eine einzelne Zeile in einer Tabelle eindeutig zu identifizieren. Viele RDBMSs erfordern, dass einer der eindeutigen Schlüssel in einer Tabelle aus mehreren verschiedenen Implementierungsgründen als "Primärschlüssel" bezeichnet wird. In Bezug auf die Datenintegrität gibt es keinen Unterschied.

4

Ein Primärschlüssel erlaubt keine Nullen, ein eindeutiger Schlüssel erlaubt eine Null (auf SQL-Server und mehrere Nullen auf Oracle). Eine Tabelle kann nur einen Primärschlüssel, aber viele eindeutige Schlüssel haben

verwenden Sie Primärschlüssel, wenn Sie Fremdschlüsselbeziehungen einrichten möchten

Hier ist ein kleines Beispiel mit nur einer Spalte in jeder Tabelle

--primary key table
CREATE TABLE PrimaryTest (id INT PRIMARY KEY NOT NULL)
GO

-- foreign key table
CREATE TABLE ForeignTest (Pkid INT NOT NULL)
GO


--relationship
ALTER TABLE dbo.ForeignTest ADD CONSTRAINT
    FK_ForeignTest_PrimaryTest FOREIGN KEY
    (
    Pkid
    ) REFERENCES dbo.PrimaryTest
    (
    id
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO

eine Zeile in die Primärschlüsseltabelle einfügen

insert PrimaryTest values(1)

einfügen einer Zeile in die Fremdschlüsseltabelle mit einem Wert, der in der Primärschlüsseltabelle vorhanden ist

insert ForeignTest values(1)

Dies schlägt jetzt fehl, da der Wert 2 nicht in der Primärschlüsseltabelle vorhanden ist

insert ForeignTest values(2)

Msg 547, Ebene 16, Status 0, Zeile 1. Die INSERT-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung "FK_ForeignTest_PrimaryTest". Der Konflikt ist in der Datenbank "aspnetdb", Tabelle "dbo.PrimaryTest", Spalte "id" ..__ aufgetreten. Die Anweisung wurde abgebrochen.

4
SQLMenace

Um noch ein weiteres Beispiel hinzuzufügen:

Stellen Sie sich eine Tabelle mit Benutzerdaten vor, in der jeder Benutzer eine E-Mail-Adresse hat. Keine zwei Benutzer können dieselbe E-Mail-Adresse haben, sodass diese Spalte zu einem eindeutigen Schlüssel wird. Es könnte sich dabei um den Primärschlüssel handeln (ich habe noch nie einen String zu einem Primärschlüssel gemacht), aber es muss nicht sein.

2
Quentamia

Beide stellen eine eindeutige Identifikation einer Zeile in einer Tabelle dar, aber es besteht ein kleiner Unterschied 

Die PRIMARY-Taste erlaubt keine NULL-Werte

während 

Der UNIQUE-Schlüssel lässt nur einen NULL-Wert zu.

das ist der Hauptunterschied ..

2
jaideep

NOT NULL bedeutet, dass ein Eintrag in dieser bestimmten Spalte nicht null sein darf. UNIQUE bedeutet, dass jeder Eintrag in der Spalte eindeutig sein sollte. PRIMARY KEY bedeutet, dass jeder Eintrag in der Spalte eindeutig und nicht null sein darf.

Also einfach ..

  PRIMARY KEY= UNIQUE + NOT NULL
1
Siddappa Walake

Primärschlüsseleinschränkung
1. Ein Primärschlüssel kann keine Null zulassen.
2. Mehrere Primärschlüssel sind NICHT zulässig.
3. In einigen RDBMS generiert ein Primärschlüssel standardmäßig einen gruppierten Index.

Einzigartige Beschränkung
1. Für Spalten, die Nullen zulassen, kann eine eindeutige Einschränkung definiert werden.
2. Es sind mehrere eindeutige Schlüssel zulässig.
3. In einigen RDBMS generiert ein eindeutiger Schlüssel standardmäßig einen nicht gruppierten Index.

Quelle Wikipedia

1
A-patel-guy

sie können viele UNIQUE-Einschränkungen pro Tabelle haben, aber nur eine PRIMARY KEY-Einschränkung pro Tabelle. Mehr Infos finden Sie hier

0
Brian Kenya