Ist es in Ordnung, keinen Primärschlüssel zu verwenden, wenn ich keinen brauche?

8

Wenn ich keinen Primärschlüssel brauche, sollte ich keinen zur Datenbank hinzufügen?

    
Luke101 20.11.2009, 15:30
quelle

12 Antworten

13

Ein Primärschlüssel identifiziert eine Zeile in Ihrer Tabelle eindeutig.

Die Tatsache, dass es indiziert und / oder geclustert ist, ist ein physikalisches Implementierungsproblem und steht in keinem Zusammenhang mit dem logischen Design.

Sie brauchen einen für die Tabelle, um einen Sinn zu ergeben.

    
gbn 20.11.2009, 15:38
quelle
40

Sie benötigen einen Primärschlüssel. Das weißt du noch nicht.

    
Otávio Décio 20.11.2009 15:37
quelle
3

Wenn Sie keinen Primärschlüssel benötigen, verwenden Sie diesen nicht. Normalerweise brauche ich Primärschlüssel, also benutze ich sie normalerweise. Wenn Sie verwandte Tabellen haben, möchten Sie wahrscheinlich Primär- und Fremdschlüssel.

    
Bob 20.11.2009 15:31
quelle
2

Ja, aber nur so, dass es in Ordnung ist, keinen Sicherheitsgurt zu benutzen, wenn Sie nicht vorhaben, einen Unfall zu haben. Das heißt, es ist ein kleiner Preis, für einen großen Vorteil zu zahlen, wenn Sie es brauchen, und selbst wenn Sie denken, dass Sie es nicht brauchen, werden Sie Chancen in der Zukunft haben. Der Unterschied besteht darin, dass Sie viel häufiger einen Primärschlüssel benötigen als einen Autounfall.

Sie sollten auch wissen, dass einige Datenbanksysteme einen Primärschlüssel für Sie erstellen, wenn Sie dies nicht tun, damit Sie nicht so viel sparen, was in der Engine vor sich geht.

    
Larry Lustig 20.11.2009 15:36
quelle
2

Nein, es sei denn, Sie finden ein Beispiel für "Diese Datenbank würde so viel besser funktionieren, wenn table_x keinen Primärschlüssel hätte."

Sie können argumentieren, niemals einen Primärschlüssel zu verwenden, wenn Leistung, Datenintegrität und Normalisierung nicht erforderlich sind. Sicher- heits- und Sicherungs- / Wiederherstellungsfunktionen sind möglicherweise nicht erforderlich, aber schließlich ziehen Sie Ihre Big-Boy-Hosen an und treten der realen Welt der Datenbankimplementierung bei.

    
JeffO 08.03.2010 18:07
quelle
1

Ja, eine Tabelle sollte IMMER einen Primärschlüssel haben ... es sei denn, Sie müssen die darin enthaltenen Datensätze nicht eindeutig identifizieren. (Ich mache gerne absolute Aussagen und widerspreche ihnen sofort)

Wann müssen Sie die Datensätze in einer Tabelle nicht eindeutig identifizieren? Fast nie. Ich habe das schon vorher für Dinge wie Audit-Log-Tabellen getan. Daten, die nicht aktualisiert oder gelöscht werden und in keiner Weise eingeschränkt werden. Im Wesentlichen strukturierte Protokollierung.

    
MarkPflug 08.11.2010 19:18
quelle
0

Ein Primärschlüssel hilft immer bei der Abfrageleistung. Also, wenn Sie jemals mit dem "Schlüssel" zu einem "Fremdschlüssel" abfragen müssen, oder als Nachschlagen verwendet werden, dann ja, craete einen Fremdschlüssel.

    
Adriaan Stander 20.11.2009 15:31
quelle
0

Ich weiß es nicht. Ich habe ein paar Tische benutzt, wo es nur eine einzige Reihe und eine einzige Spalte gibt. Wird immer nur eine einzelne Zeile und eine einzelne Spalte sein. Es gibt keine Fremdschlüsselbeziehungen.

Warum sollte ich einen Primärschlüssel darauf legen?

    
ElGringoGrande 20.11.2009 15:47
quelle
0

Ein Primärschlüssel wird hauptsächlich formell definiert, um die referenzielle Integrität zu unterstützen. Wenn die Tabelle jedoch sehr klein ist oder wahrscheinlich keine eindeutigen Daten enthält, ist dies ein unnötiger Overhead. Das Definieren von Indizes für die Tabelle kann normalerweise dazu verwendet werden, einen Primärschlüssel zu implizieren, ohne ihn formal zu deklarieren. Sie sollten jedoch berücksichtigen, dass das Definieren des Primärschlüssels für Entwickler und Schemagenerierung oder SQL-Entwicklungstools nützlich sein kann, da die Metadaten zum Verständnis beitragen und einige Tools darauf angewiesen sind, um die Primär- / Fremdschlüsselbeziehungen im Modell korrekt zu definieren / p>     

Wiretap 20.11.2009 15:48
quelle
0

Nun ...

Jede Tabelle in einer relationalen Datenbank benötigt einen Primärschlüssel. Wie bereits erwähnt, sind Primärschlüssel Daten, die einen Datensatz eindeutig identifizieren ...

Es könnte passieren, dass Sie kein "ID" -Feld haben, wenn Sie eine N-M-Tabelle haben, die zwei verschiedene Tabellen verbindet, aber Sie können den Datensatz durch die Werte aus beiden Spalten eindeutig identifizieren. (Zusammengesetzter Primärschlüssel)

Eine Tabelle ohne Primärschlüssel ist gegen die erste Normalform und hat in einem relationalen DB nichts zu tun

    
Heiko Hatzfeld 20.11.2009 16:01
quelle
0

Sie sollten immer einen Primärschlüssel haben, auch wenn es nur auf ID ist. Vielleicht möchten Sie lieber NoSQL (nur fragen)?

    
jschorr 21.12.2010 20:16
quelle
0

Das hängt sehr davon ab, wie sicher Sie sein können, dass Sie keinen brauchen. Wenn Sie nur den geringsten Zweifel haben, fügen Sie einen hinzu - Sie werden sich später selbst bedanken. Ein Indikator ist, wenn die Daten, die Sie speichern, zu einem bestimmten Zeitpunkt mit anderen Daten in Ihrer Datenbank in Beziehung stehen könnten.

Ein Anwendungsfall, den ich mir vorstellen kann, ist eine Art Logging-Tabelle, in der Sie einfach einen Eintrag nach dem anderen ablegen (um sie später korrekt zu verarbeiten). Wahrscheinlich brauchen Sie dort keinen Primärschlüssel, wenn Sie genügend Daten speichern, um die relevanten Nachrichten herauszufiltern (wie ein Datum). Natürlich ist es fraglich, ein RDBMS dafür zu verwenden.

    
DanMan 19.06.2013 13:49
quelle