Antwort

29

Der Primärschlüssel ist ein eindeutiger Schlüssel in der Tabelle, die Sie auswählen, die am besten eindeutig einen Datensatz in der Tabelle identifiziert. Alle Tabellen sollten einen Primärschlüssel haben, denn wenn Sie einen Datensatz aktualisieren oder löschen müssen, müssen Sie wissen, wie Sie ihn eindeutig identifizieren können.

Ein Ersatzschlüssel ist ein künstlich erzeugter Schlüssel. Sie sind nützlich, wenn Ihre Datensätze im Wesentlichen keinen natürlichen Schlüssel haben (z. B. Person), da zwei Personen, die am gleichen Datum geboren wurden, denselben Namen oder Datensätze in einem Protokoll haben können, da zwei Ereignisse auftreten können so tragen sie den gleichen Zeitstempel). In den meisten Fällen werden diese als Ganzzahlen in einem automatisch inkrementierten Feld oder als GUIDs angezeigt, die automatisch für jeden Datensatz generiert werden. ID-Nummern sind fast immer Ersatzschlüssel.

Im Gegensatz zu Primärschlüsseln benötigen jedoch nicht alle Tabellen Ersatzschlüssel. Wenn Sie eine Tabelle haben, die die Zustände in Amerika auflistet, brauchen Sie nicht wirklich eine ID-Nummer für sie. Sie können die Statusabkürzung als Primärschlüsselcode verwenden.

Der Hauptvorteil des Ersatzschlüssels ist, dass sie einfach als einzigartig zu garantieren sind. Der Hauptnachteil ist, dass sie keine Bedeutung haben. Es gibt keine Bedeutung, dass "28" zum Beispiel Wisconsin ist, aber wenn Sie "WI" in der Spalte "State" Ihrer Address-Tabelle sehen, wissen Sie, über welchen Status Sie sprechen, ohne nachsehen zu müssen, welcher Staat in Ihrem Staat ist Tabelle.

+0

Ich denke, der Hauptnachteil ist, dass manchmal, wenn Leute einen automatisch generierten Schlüssel verwenden (und Ganzzahlen werden oft anstelle des natürlichen Schlüssels verwendet, nicht nur wenn kein natürlicher Schlüssel existiert), sie oft vergessen, eindeutige Indizes auf den natürlichen Schlüssel zu setzen. t Wählen Sie als PK. Dies führt oft dazu, dass Duplikate in das System gelangen, was zu Problemen führen kann. Die beiden Hauptvorteile von automatisch generierten Schlüsseln bestehen darin, dass sie die Leistung in den Joins generell erhöhen (wenn Integer nicht GUIDS sind) und verhindern, dass viele untergeordnete Datensätze bei Änderungen des Natural Keys massenweise aktualisiert werden. – HLGEM

+0

@HLGEM Sicher, ich werde diese kaufen. Ich denke, ich konzentriere mich auf Bedeutungslosigkeit, weil ich gerade in hypernormierten Systemen gearbeitet habe, in denen im Wesentlichen jedes Feld ein eigener Tisch war. Es machte es unmöglich zu sagen, wo Dateneingabefehler aufgetreten waren, und es war sehr schwierig, Geschäftsregeln anzuwenden, um Probleme zu lokalisieren. –

+0

Ich liebe die Normalisierung, aber Sie können es tatsächlich zu weit bringen. – HLGEM

0

denke ich Michelle Poolet es in einer sehr klaren Art und Weise beschreibt:

Ein Ersatzschlüssel ist ein künstlich hergestelltes Wert, am häufigsten ein systemverwalteter, inkrementierender Zähler, dessen Werte zwischen 1 und n liegen können, wobei n für die maximale Anzahl von Zeilen einer Tabelle steht. In SQL Server erstellen Sie einen Ersatzschlüssel, indem Sie einer -Spalte mit einem numerischen Datentyp eine Identitätseigenschaft zuweisen.

http://sqlmag.com/business-intelligence/surrogate-key-vs-natural-key

es in der Regel hilft Ihnen, einen Ersatzschlüssel verwenden, wenn Sie ein Composite-Schlüssel mit einer Identitätsspalte ändern.

+1

Ich gebe -1, weil es nicht den Unterschied nicht erklären. – TomTom

1

Ein Ersatzschlüssel ist normalerweise ein numerischer Wert. Innerhalb von SQL Server ermöglicht Ihnen Microsoft, eine Spalte mit einer Identitätseigenschaft zu definieren, um die Generierung von Ersatzschlüsselwerten zu unterstützen.

Die PRIMARY KEY-Einschränkung identifiziert jeden Datensatz in einer Datenbanktabelle eindeutig. Primärschlüssel müssen UNIQUE-Werte enthalten. Eine Primärschlüsselspalte darf keine NULL-Werte enthalten. Die meisten Tabellen sollten einen Primärschlüssel haben, und jede Tabelle kann nur EINEN Primärschlüssel haben.

http://www.databasejournal.com/features/mssql/article.php/3922066/SQL-Server-Natural-Key-Verses-Surrogate-Key.htm

4

Ein Ersatzschlüssel ist ein zusammengestellter Wert mit dem einzigen Zweck, eine Zeile eindeutig zu identifizieren. In der Regel wird dies durch eine automatisch inkrementierende ID dargestellt.

Beispielcode:

CREATE TABLE Example 
(
    SurrogateKey INT IDENTITY(1,1) -- A surrogate key that increments automatically 
) 

A Primärschlüssel die charakterisierende Spalte oder einer Reihe von Spalten einer Tabelle. Kann ein Ersatzschlüssel oder eine andere eindeutige Kombination von Spalten sein (z. B. ein zusammengesetzter Schlüssel). MUSS für jede Zeile eindeutig sein und nicht NULL sein.

Beispielcode:

CREATE TABLE Example 
(
    PrimaryKey INT PRIMARY KEY -- A primary key is just an unique identifier 
) 
3

Alle Tasten sind Kennungen als Surrogate für die Dinge verwendet, sie zu identifizieren. EFCodd erklärt das Konzept der System zugewiesenen Surrogate wie folgt [1]:

Datenbank Benutzer das System verursachen kann, eine Leihmutter, zu erzeugen oder zu löschen, aber sie haben keine Kontrolle über seinen Wert, noch ist seine Wert immer angezeigt zu ihnen.

Dies ist, was gemeinhin als Ersatzschlüssel bezeichnet wird. Die Definition ist jedoch sofort problematisch, da Codd davon ausging, dass ein solches Merkmal vom DBMS bereitgestellt wird. DBMS haben im Allgemeinen keine solche Funktion. Die Schlüssel sind normalerweise für zumindest einige DBMS-Benutzer sichtbar, da sie aus offensichtlichen Gründen sie sein müssen. Das Konzept eines Ersatzes hat sich daher im Gebrauch leicht verändert. Der Begriff wird allgemein im Datenmanagement-Beruf verwendet, um einen Schlüssel zu bezeichnen, der nicht exponiert ist und als Identifikator in der Geschäftsdomäne verwendet wird. Beachten Sie, dass dies im Wesentlichen nichts damit zu tun hat, wie der Schlüssel erzeugt wird oder wie "künstlich" er wahrgenommen wird. Alle Schlüssel bestehen aus Symbolen, die von Menschen oder Maschinen erfunden wurden. Die einzige mögliche Bedeutung des Begriffes Surrogate bezieht sich daher darauf, wie der Schlüssel verwendet wird, nicht wie er erstellt wird oder was seine Werte sind.

[1] Die Erweiterung des Datenbank relationalen Modell mehr Bedeutung zu erfassen, E.F.Codd 1979

Verwandte Themen