Was ist in einer SQL Server-Datenbank der Unterschied zwischen einem Primärschlüssel und einer Identitätsspalte? Eine Spalte kann ein Primärschlüssel sein, ohne eine Einrückung zu sein. Eine Spalte kann jedoch keine Identität sein, ohne ein Primärschlüssel zu sein.
Was bietet eine PK- und Identitätsspalte zusätzlich zu den Unterschieden, was nur eine PK-Spalte nicht bietet?
bearbeiten: Ups. Wie unten ausgeführt und jetzt von mir verifiziert, kann eine Spalte eine Identität sein, ohne eine PK zu sein. Als ich dies testete, war mein Spaltentyp eine Zeichenfolge und ich konnte keine Identität festlegen. Macht Sinn.
quelle
Diese Antwort ist mehr von WARUM Identität und Primay-Schlüssel als WAS sie sind, da Joe oben WAS richtig beantwortet hat.
Eine Identität ist ein Wert, den Sie von SQL steuern. Identität ist eine Zeilenfunktion. Der Wert wird sequentiell erhöht oder verringert, zumindest in SQL Server. Es sollte niemals geändert werden und Lücken im Wert sollten ignoriert werden. Identitätswerte sind sehr nützlich beim Verknüpfen von Tabelle B mit Tabelle A, da der Wert niemals dupliziert wird. Die Identität ist nicht in jedem Fall die beste Wahl für einen Clustered-Index. Wenn eine Tabelle Überwachungsdaten enthält, wird der Clustered-Index möglicherweise besser zum Zeitpunkt des Auftretens erstellt, da er die Antwort auf die Frage "Was ist zwischen heute und vor vier Tagen passiert?" Mit weniger Arbeit darstellt, da die Datensätze für die Daten im Datenseiten.
Ein Primärschlüssel macht die Spalte oder Spalten in einer Zeile eindeutig. Der Primay-Schlüssel ist eine Spaltenfunktion. In jeder Tabelle darf nur ein Primay-Schlüssel definiert werden, es können jedoch mehrere eindeutige Indizes erstellt werden, die den Primärschlüssel simulieren. Das Clustering des Primärschlüssels ist nicht immer die richtige Wahl. Betrachten Sie ein Telefonbuch. Wenn das Telefonbuch mit dem Primay-Schlüssel (Telefonnummer) gruppiert ist, ist die Abfrage zur Rückgabe der Telefonnummern in "First Street" sehr kostspielig.
Die allgemeinen Regeln, die ich für Identität und Primärschlüssel befolge, sind:
Dies sind meine ALLGEMEINEN Regeln.
quelle
Ein Primärschlüssel (auch als Kandidatenschlüssel bezeichnet) ist ein beliebiger Satz von Attributen, die die Eigenschaften Eindeutigkeit und Minimalität aufweisen. Das bedeutet, dass die Schlüsselspalte oder -spalten eindeutig sein müssen. Mit anderen Worten, das DBMS lässt nicht zu, dass zwei Zeilen denselben Wertesatz für diese Attribute haben.
Die IDENTITY-Eigenschaft erstellt effektiv einen automatisch inkrementierenden Standardwert für eine Spalte. Diese Spalte muss jedoch nicht eindeutig sein, daher ist eine IDENTITY-Spalte nicht unbedingt ein Schlüssel.
Eine IDENTITY-Spalte soll jedoch normalerweise als Schlüssel verwendet werden, und daher unterliegt sie normalerweise einer Eindeutigkeitsbeschränkung, um sicherzustellen, dass Duplikate nicht zulässig sind.
quelle
BEARBEITUNGEN AUF DER GRUNDLAGE VON FEEDBACK
Ein Schlüssel ist für eine Zeile eindeutig. Es ist eine Möglichkeit, eine Zeile zu identifizieren. Zeilen können keine, eine oder mehrere Tasten haben. Diese Schlüssel können aus einer oder mehreren Spalten bestehen.
Schlüssel sind Indizes mit einer eindeutigen Einschränkung. Dies unterscheidet sie von Nicht-Schlüsselindizes.
Jeder Index mit mehreren Spalten wird als "zusammengesetzter Index" bezeichnet.
Traditionell wird ein Primärschlüssel als Hauptschlüssel angesehen, der eine Zeile eindeutig identifiziert. Möglicherweise gibt es nur eine davon.
Abhängig vom Design der Tabelle hat man möglicherweise keinen Primärschlüssel.
Ein Primärschlüssel ist genau das - ein "Primschlüssel". Es ist die Hauptidentität, die die eindeutige Identität einer Zeile angibt. Abhängig vom Design einer Tabelle kann dies eine Fehlbezeichnung sein, und mehrere Schlüssel drücken die Einzigartigkeit aus.
In SQL Server kann ein Primärschlüssel geclustert werden. Dies bedeutet, dass die verbleibenden Spalten auf Blattebene des Index an diesen Schlüssel angehängt werden. Mit anderen Worten, sobald SQL Server den Schlüssel gefunden hat, hat es auch die Zeile gefunden (um klar zu sein, liegt dies am Cluster- Aspekt).
Eine Identitätsspalte ist einfach eine Methode zum Generieren einer eindeutigen ID für eine Zeile.
Diese beiden werden oft zusammen verwendet, dies ist jedoch keine Voraussetzung.
quelle
Sie können IDENTITY nicht nur für Ganzzahlen verwenden, sondern auch für jeden numerischen Datentyp mit einer Skala von 0
Der Primärschlüssel kann skaliert werden, ist jedoch nicht erforderlich.
Mit IDENTITY können Sie in Kombination mit einer PRIMARY KEY- oder UNIQUE-Einschränkung eine einfache eindeutige Zeilen-ID angeben
quelle
Primärschlüssel mit Schwerpunkt auf Eindeutigkeit und Vermeidung von Duplizierungswerten für alle Datensätze in derselben Spalte, während Identität zunehmende Zahlen in einer Spalte bereitstellt, ohne Daten einzufügen. Beide Funktionen können sich auf einer einzelnen Spalte oder auf einer Differenzspalte befinden.
quelle