2017-06-14 3 views
0

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?

+1

haben einen Blick auf diesen Beitrag https://stackoverflow.com/questions/831850/should-a-database-table-always-have-primary-keys –

+0

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

+0

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

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