Wenn ich keinen Primärschlüssel brauche, sollte ich keinen zur Datenbank hinzufügen?Ist es in Ordnung, keinen Primärschlüssel zu verwenden, wenn ich keinen brauche
Antwort
Ein Primärschlüssel identifiziert eine Zeile in Ihrer Tabelle eindeutig.
Die Tatsache, dass es indexiert und/oder geclustert ist, ist ein physikalisches Implementierungsproblem und hat nichts mit dem logischen Design zu tun.
Sie brauchen einen für die Tabelle sinnvoll.
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.
+1 kurz und süß :) – James
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.
Ich verstehe nicht, dass Primärschlüssel bei der Leistung helfen? Wenn Sie sie nicht benötigen, suchen Sie keine Datensätze, indem Sie einen verwenden. Also, es gibt keinen Vorteil. – brainfck
Wofür wird der Tisch dann benutzt? meistens brauchen wir die Tabelle, um einige Informationen zu speichern, und Sie werden nach Werten suchen. –
Luke101 sollte seinen Anwendungsfall posten und wir werden sehen, ob er einen braucht. – brainfck
Ja, aber nur im selben Sinne, dass es in Ordnung ist, keinen Sicherheitsgurt zu benutzen, wenn Sie keinen Unfall planen. 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 ist, dass Sie viel eher einen Primärschlüssel als in einem Autounfall benötigen.
Sie sollten auch wissen, dass einige Datenbanksysteme einen Primärschlüssel für Sie erstellen, wenn Sie dies nicht tun, also sparen Sie nicht so viel, was in der Engine vor sich geht.
Ich stimme nicht zu. Ich weigere mich, Sicherheitsgurte zu tragen, da sie mir den vollen Zugang zu meinem Bier versperren. Aber ich werde nie eine Tabelle ohne ein PK erstellen. –
@Rev Gonzo, was Sie brauchen, ist ein strategisch platzierter Bierhalter. Komm schon, es ist 2010. – JeffO
Sie benötigen einen Primärschlüssel. Das weißt du noch nicht.
Ich dachte einmal, ich brauche auch keinen Primärschlüssel ... Jetzt weiß ich es besser. – MiseryIndex
+1 Weil dies die Realität am genauesten widerspiegelt. Ich kann Fälle sehen, in denen man nicht einen, aber wenige und weit dazwischen braucht. – Murph
Außer wenn Sie keinen Primärschlüssel benötigen, und Sie wissen es jetzt. Dies ist jedoch ein ungewöhnlicher Fall. Es ist besser, auf Nummer sicher zu gehen und sich für PK zu entscheiden. – MarkPflug
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?
warum hätte ich einen Tisch dafür ????? –
Sie müssen eine einzelne Information speichern? So etwas wie eine systemweite Präferenz? Jeder braucht diese Daten, aber Sie wollen nicht eine ganz neue Sache schaffen, nur um dieses eine Stück Daten zu bekommen. – ElGringoGrande
Ah. Aber Sie möchten einen Primärschlüssel für diese Tabelle. Und eine Prüfbedingung, die diesen Primärschlüssel auf einen einzelnen Wert begrenzt. Weil du sonst in 6 Monaten zurückkehrst und feststellst, dass jemand anderes eine weitere Zeile für dich hinzugefügt hat, und die, die deine Bewerbung annimmt, willkürlich ist ... –
Ein Primärschlüssel ist 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 bedenken, dass die Definition des Primärschlüssels für Entwickler und die Erstellung von Schemas oder SQL-Dev-Tools nützlich sein kann, da die Metadaten helfen, diese zu verstehen, und einige Tools verlassen sich darauf, um die Primär-/Fremdschlüsselbeziehungen im Modell korrekt zu definieren. Nun
...
Jede Tabelle in einer relationalen DB benötigt einen Primärschlüssel. Wie bereits erwähnt, ist ein Primärschlüssel Daten, die einen Datensatz eindeutig identifiziert ...
Sie könnten damit kommen ohne ein "ID" -Feld, wenn Sie eine NM-Tabelle haben, die 2 verschiedene Tabellen verbindet, aber Sie können eindeutig Identifizieren Sie den Datensatz anhand der Werte aus beiden Spalten, denen Sie beitreten. (Composite Primärschlüssel)
eine Tabelle ohne Primärschlüssel zu haben, ist gegen die erste Normalform und hat nichts in einer relationalen DB
Nein zu tun, es sei denn, Sie ein Beispiel finden können „Diese Datenbank würden funktionieren so viel besser, wenn table_x keinen Primärschlüssel hat."
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 Ihren Big-Boy an pants und treten Sie der realen Welt der Datenbankimplementierung bei
Ja, eine Tabelle sollte IMMER einen Primärschlüssel haben ... es sei denn, Sie müssen die Datensätze darin nicht eindeutig identifizieren (ich mache gerne absolute Aussagen und sofort widersprechen sie)
Wann würden Sie nicht brauchen, um die Aufzeichnungen in einer Tabelle zu identifizieren? Fast nie. Ich habe dies vorher getan, aber für Dinge wie Überwachungsprotokolltabellen. Daten, die nicht aktualisiert werden oder gelöscht, und wird in keiner Weise eingeschränkt werden. Im Wesentlichen strukturierte Protokollierung.
Sie sollten immer einen Primärschlüssel haben, auch wenn es nur auf ID ist. Vielleicht möchten Sie lieber NoSQL (nur fragen)?
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 dafür, ob 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 Logging-Art-Tabelle, in der Sie einfach einen Eintrag nach dem anderen ablegen (um sie später richtig 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.
- 1. Tabelle keinen Primärschlüssel
- 2. Spalte als Primärschlüssel festlegen, wenn die Tabelle keinen Primärschlüssel hat
- 3. Unterstützt [js-data] keinen Primärschlüssel?
- 4. Warum kann ich keinen Primärschlüssel referenzieren?
- 5. Ist es in Ordnung, einen Fremdschlüssel als Primärschlüssel zu haben?
- 6. Warum liquibase databasechangelog keinen Primärschlüssel hat?
- 7. Ist es in Ordnung, mit() zu verwenden?
- 8. kann keinen Fremdschlüssel mit einem Primärschlüssel verbinden
- 9. Fließende NHibernate Join verwendet keinen Primärschlüssel
- 10. Was tun, wenn ich keinen Kontext habe?
- 11. Junit startet keinen Testfall, wenn es eine anonyme Klasse ist
- 12. Es kann keinen Service-
- 13. Ist es in Ordnung, eine öffentliche Variable in C# zu verwenden, wenn es schreibgeschützt ist?
- 14. Ist es in Ordnung, AWT mit JavaFx zu verwenden?
- 15. Methode undefiniert? Ich kann keinen Ertrag verwenden
- 16. Warum gibt es keinen Autorelease-Pool, wenn ich performanceSelectorInBackground :?
- 17. In der Tabelle ist bereits ein Primärschlüssel definiert. aber es hat keinen Schlüssel darauf
- 18. Kann keinen Eckenradius und keinen Schatten hinzufügen
- 19. Ich kann keinen AVCaptureInput
- 20. Oracle - Gibt es einen Effekt, keinen Primärschlüssel auf einer Tabelle zu haben?
- 21. Ist es in Ordnung, Ruby 1.8.5 zu verwenden?
- 22. Ist es in Ordnung, `using` so zu verwenden?
- 23. Ist es in Ordnung, den CSS3-Selektor zu verwenden: not()
- 24. Ist es in Ordnung LinearLayout anstelle von FrameLayout zu verwenden?
- 25. Ist es in Ordnung, google.setOnLoadCallback mehrmals zu verwenden?
- 26. Ist es in Ordnung, noch Tabellen zu verwenden?
- 27. DataTable.Rows.Find gibt "Tabelle hat keinen Primärschlüssel" Fehler, wenn die Tabelle zu groß wird
- 28. "Ich kann keinen gültigen Zertifizierungspfad zum angeforderten Ziel finden", aber der Browser sagt, dass es in Ordnung ist
- 29. Gibt es in Swift keinen Standard (T)?
- 30. Warum gibt es keinen Kompilierungsfehler?
Es gibt kaum einen Fall, in dem Sie keinen Primärschlüssel benötigen. Wenn eine Tabelle keinen Primärschlüssel hat, handelt es sich im Grunde nicht um eine Tabelle, sondern nur um einen Datenhaufen. –
Es ist vielleicht nicht relevant für Ihre Frage, aber ich muss fragen: * Warum glauben Sie nicht, dass Sie eine brauchen? * –
Können Sie uns mehr Informationen über die Situation geben, mit der Sie es zu tun haben? Primärschlüssel sind nicht immer notwendig, aber wenn wir wüssten, was Sie vorhaben, könnten wir Ihnen vielleicht einen besseren Rat geben. – TLiebe