Ich weiß, wir verwenden Primärschlüssel zur Identität jeder Zeile eindeutig, aber wenn wir alle von Code dann verwalten? Was genau nutzt Primärschlüssel?Warum verwenden wir einen Primärschlüssel, wenn wir die Eindeutigkeit und automatische Inkrementierung von Code verwalten?
0
A
Antwort
0
- Ohne Index Benutzer das Löschen eines übergeordneten Zeile aus der Datenbank würde die SQL Server-Abfrage-Engine erzwingen um die untergeordnete Tabelle zu überprüfen, auf die im Fremdschlüssel verwiesen wird, um sicherzustellen, dass die Datenintegrität nicht beeinträchtigt ist. Betrachten Sie eine untergeordnete Tabelle mit Hunderttausenden von Zeilen; Ein Index kann diese Suche erheblich beschleunigen.
- Die Leistung der Fremdschlüssel CASCADE-Optionen (ON DELETE CASCADE, ON UPDATE CASCADE) können dramatisch mit der eines Index Verwendung verbessert werden, da der Motor für die Zeilen suchen eine Abfrage durchführt, die automatisch gelöscht werden sollen oder aktualisiert.
- Die Leistung von JOINs zwischen den übergeordneten und untergeordneten Tabellen in der Fremdschlüsselspalte wurde erheblich verbessert. Es ist eine natürliche Annahme , dass Tabellen, die verwandt sind, zusammen abgefragt werden können, um Resultsets zu produzieren. Betrachten Sie das frühere ORDERHEADER/LINEITEM-Beispiel. Es wäre natürlich für Abfragen ausgeführt werden, die nicht nur Elemente der Einzelposten, sondern auch von der Orderheader (zB Bestelldatum, die CSR, die die Reihenfolge eingegeben) erfordern würde
- Bei der Entwicklung und Datenmodelle beibehalten wird, untersuchen Wenn Ihr Modell von einer Fremdschlüsselbeziehung profitieren kann
- Stellen Sie sicher, dass Ihre Fremdschlüsselspalten indexiert sind, um das Scannen von Tabellen während Datenlöschung, Kaskadierung von Aktionen und Abfrage von JOINs zu verhindern.
0
Wenn Sie den Primärschlüssel definieren, ist Ihr Abruf von Daten über den Schlüssel viel schneller.
0
, wenn Sie mit Identität auf id-Spalte Sie nicht Primärschlüssel in der gleichen Spalte verwenden müssen
+0
Nun, ich denke, die Verwendung einer Identität in einer ID-Spalte macht diese Spalte nicht zwingend zu einer Primärschlüsselspalte, im Falle eines zusammengesetzten Schlüssels in einer Tabelle, wo ich mehrere Spalten als Primärschlüssel haben kann, aber eine Identität auf a Säule – Dickson
Verwandte Themen
- 1. Warum verwenden wir pthread_exit(), wenn wir return verwenden können?
- 2. Warum verwenden wir tf.name_scope()
- 3. Warum verwenden wir Cookies in Asp.net, wenn wir Sitzungen haben?
- 4. mysql, alter Spalte entfernen Primärschlüssel und automatische Inkrementierung
- 5. Warum benötigen wir AppBarLayout, wenn wir CollapsingToolbarLayout verwenden?
- 6. Warum verwenden wir setLayoutParams?
- 7. Warum verwenden wir diesen Code in JAVA?
- 8. Warum verwenden wir Serialisierung?
- 9. Warum verwenden wir HTTP?
- 10. Warum verwenden wir web.xml?
- 11. Warum die Parameter verwenden, wenn wir Variablen verwenden können?
- 12. Warum CJSON verwenden, wenn wir json_encode
- 13. Können wir die Sitzung in Mulesoft verwalten?
- 14. Warum Abstraktion verwenden, wenn wir Schnittstelle haben
- 15. Angular 2 - warum müssen wir ngForm verwenden, wenn wir benutzerdefinierte Validierung verwenden?
- 16. Warum * sollten * Wir verwenden EventHandler
- 17. Warum wir die .htaccess-Datei verwenden?
- 18. Warum verwenden wir die Memberless-Schnittstelle?
- 19. Warum sollten wir lua_pushinteger() verwenden?
- 20. Warum brauchen wir einen Grobquantisierer?
- 21. Einfach und einfach, warum verwenden wir _stdcall?
- 22. Warum brauchen wir immer einen Skriptmanager, wenn wir Ajax-Steuerung verwenden?
- 23. Warum verwenden wir extra Ausdruck?
- 24. Warum verwenden wir ViewTreeObserver # addOnGlobalLayoutListener()
- 25. Warum genau verwenden wir NoSQL?
- 26. Warum SQLBRITE und warum wir es anstelle von SQLite verwenden?
- 27. Wann sollte requestAnimationFrame verwendet werden? und warum brauchen wir requestAnimationFrame, wenn wir einen css-Übergang hatten?
- 28. Warum brauchen wir JWT, wenn wir Clientsitzungen haben?
- 29. Warum verwenden wir hier die Schnittstellenimplementierung?
- 30. Warum verwenden wir abroll segue, wenn wir Segmente verwenden können, um zu einem View-Controller zurückzukehren?
haben einen Blick auf diesen Beitrag https://stackoverflow.com/questions/831850/should-a-database-table-always-have-primary-keys –
Dann brauchen Sie nicht in DB PK. Ich sah ziemlich große Anwendungen, die intern alles verwalten, kein PK, kein FK auf der DB-Serverseite. Erstellen Sie einfach einige Indizes, um die Abfragen zu beschleunigen. – Serg
Drei schreckliche Antworten; Keiner von ihnen adressiert Ihre (doppelte) Frage. Der Hauptgrund? Weil Code von Leuten geschrieben wird, die Fehler machen und Fehler die ganze Zeit gemacht werden. Lernen Sie aus der Geschichte - Ihre Kurse sollten die Geschichte des Datenmanagements behandelt haben und wie die Relationstheorie entwickelt wurde, um die Probleme inkonsistenter Daten zu lösen. – SMor