Frage

Hintergrund

Der "ALL-PK-Must-Surgates-Surrogate" ist nicht in codds relational model oder einem beliebigen sql standard (Ansi , ISO oder andere).

kanonische Bücher scheinen auch diese Einschränkungen zu entgehen.

eigenes Datenwörterbuch von Oracle verwendet natürliche Schlüssel in einigen Tabellen und Ersatztasten in anderen Tischen. Ich erwähne das, weil diese Leute ein oder zwei Dinge über RDBMS-Design kennen müssen.

ppdm (Professional Petroleum Data Management Association) Dieselben kanonischen Bücher empfehlen:

Verwenden Sie Surrogatschlüssel als Primärtasten, wenn:

    .
  1. Es gibt keine natürlichen oder geschäftlichen Tasten
  2. Natur- oder Business-Schlüssel sind schlecht (ändert sich oft)
  3. Der Wert des Natur- oder Business-Schlüssels ist zum Zeitpunkt des Einfügens des Datensatzes nicht bekannt,
  4. Multicolumn Natural Keys (in der Regel mehrere FK) überschreiten drei Spalten, wodurch Joins zu verbroen ist.
  5. Ich habe auch keine kanonische Quelle gefunden, die sagt, dass natürliche Schlüssel unveränderlich sein müssen. Alles, was ich finde, ist, dass sie sehr ärgerlich sein müssen, dh nur in sehr seltenen Lacken geändert werden müssen, wenn immer.

    Ich erwähne PPDM, weil diese Leute auch ein oder zwei Dinge über RDBMS-Design kennen müssen.

    Die Ursprünge des Ansatzes "All-Surrogates" scheint von den Empfehlungen von einigen OrM-Frameworks zu kommen.

    Es ist wahr, dass der Ansatz eine schnelle Datenbankmodellierung von ermöglicht, indem sie nicht viel Geschäftsanalyse tun muss, sondern auf Kosten der Wartungsfähigkeit und Lesbarkeit des SQL-Codes. Für etwas, das in der Zukunft etwas vorliegen oder nicht passieren kann (die natürliche PK kann sich geändert haben, sodass wir die RDBMS-Cascade-Aktualisierung der Funktionen der RDBMS verwenden müssen) auf Kosten der täglichen Aufgabe, um mehr Tische in jedem Abfrage und Kodex für den Importieren von Daten zwischen Datenbanken, einem ansonsten sehr gerradigstenFoward-Verfahren (aufgrund der Notwendigkeit, PK-Speise zu vermeiden, und müssen vorher Stufe / Äquivalenztabellen erstellen).

    Andere Argumente ist, dass Indizes auf der Grundlage von Ganzzahlen schneller sind, aber mit Benchmarks unterstützt werden müssen. Offensichtlich sind lange, variierende Varchars nicht gut für PK. Aber Indizes basierend auf kurzen, fixierenden Varchar sind fast so schnell wie Ganzzahlen.

    Die Fragen

    - Gibt es eine kanonische Quelle, die den Ansatz "All-PK-Must-Surgate" unterstützt?

    - hat das relationale Modell von CODD von einem neueren relationalen Modell übersässig?

War es hilfreich?

Lösung

"Alle PKS sind Surrogate" ist überhaupt keine sehr geringe Strategie und sicherlich nicht, dass Sie jemals eine "autoritative" Quelle für finden.

Denken Sie zunächst darüber nach, was in diesem Zusammenhang mit "Primärschlüssel" gemeint ist. Im relationalen Modell gibt es keine "primären" Tasten - dh keine Eins-Taste, die sich grundlegend von einem anderen Schlüssel derselben Tabelle unterscheidet. Prinzipiell können alle Tasten in einer relationalen Datenbank den gleichen Status genießen und dieselben Funktionen und Funktion haben, außer dass der Datenbankdesigner ansonsten wählt. Das Singling aus einem Schlüssel in einem Tisch mit mehreren Schlüsseln ist daher im Wesentlichen willkürlich (das war das von e.f.codd verwendete Wort), subjektiv und rein psychologisch (der Ansicht von Chris Datum, Codd-Kollegen und Collaborator). Es sei denn, es wird erläutert, soweit der Unterschied zwischen einer "primären" Key und einem anderen Schlüssel gezeichnet wird, ist es daher ziemlich bedeutungslos und ohne Verdienst, dass ein solcher Schlüssel "sollte" oder "Muss" sein muss.

Zweitens hat das Argument nur sehr wenig mit Indizes zu tun, wodurch ein physischer Speicherfunktion ist. Schlüssel sind eine logische Materie, nicht ein physischer, und es gibt keinen absoluten Grund, anzunehmen, dass die Überlegungen der Speicherung eines "primären" Schlüssels in anderen Schlüssel unterschiedlich sind oder sollten (siehe vorheriger Absatz). Angemessen annehmen könnten wir annullieren, dass die Speicherstrukturen verwendet werden, der Aufbewahrungsaufwand in gewissem Maße in gewisser Weise größere mit einem Ersatztasten ist als mit einem solchen Schlüssel, aber wie immer die beste Antwort hier ist "es hängt ab ab. Aufbewahrungsentscheidungen sollten auf einem Fall von Case-Basen- und Deckenregeln vorgenommen werden, die sehr wenig helfen.

Drittens, von A logisch Sicht die absolute Anforderung eines Ersatzschlüssels macht sehr wenig Sinn. Die Anforderung an einen natürlichen Schlüssel ist genau das gleiche mit oder ohne Surrogat. Die Notwendigkeit, Informationen in der Diskursdomäne (d. H. Mit einem natürlichen Schlüssel aka "Business Key", "Domain-Taste"), identifizierbar zu sein, ist dasselbe. Ja, Schlüssel müssen möglicherweise aktualisiert werden, aber dann ist das manchmal die Natur der Dinge. Das Hinzufügen eines Surrogats macht nicht notwendigerweise notwendigerweise einfacher Aktualisierungen leichter zu behandeln und manchmal kann sie sie härter machen.

Andere Tipps

Primär- und Fremdschlüssel müssen nicht lesbar sein. Ihr Zweck besteht darin, die interne relationale Struktur der Datenbank aufrechtzuerhalten, nicht von einem Menschen zu lesen.

Natürlich, wenn es einen angemessenen natürlichen Schlüssel gibt, der nie wechselt (ich behaupten, diese sind so selten wie die Zähne oder vierblättrige Klee, aber ...), können Sie das verwenden, und einige Kunden machen diesen Anforderungen.

Aber warum die zusätzliche Komplexität einem Datenbanksystem für wenig nennenswerte Nutzen hinzufügen? Primärer Surrogatschlüssel sind systemgeneriert, garantiert einzigartig, garantiert, um sich niemals zu ändern, und sind derselbe Datentyp für alle Tabellen. Sie werden unter allen Umständen das gleiche zuverlässige Verhalten haben.

Wenn Sie nach einer kanonischen Ressource suchen, die diese Praxis unterstützt, finden Sie nicht einen. Es gibt genauso viele Designer auf der anderen Seite des Gangs, der ihre Verwendung bösartig verteidigen wird von natürlichen, zusammengesetzten Tasten mit gruppierten Indizes als Hauptschlüssel und alle kanonischen Ressourcen sagen, dass es die Wahl des Designer ist.

siehe auch

http://en.wikipedia.org/wiki/surrogate_key

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top