Nachschlagetabellen (oder Codetabellen , wie sie manche nennen) sind normalerweise eine Sammlung der möglichen Werte, die für eine bestimmte Spalte angegeben werden können.
Angenommen, wir haben eine Nachschlagetabelle mit dem Namen party
(die Informationen über politische Parteien speichern soll), die zwei Spalten enthält:
party_code_idn
, das vom System generierte numerische Werte enthält und (ohne Bedeutung für die Geschäftsdomäne ) als Ersatz für den realen Schlüssel fungiert.party_code
ist der eigentliche oder „natürliche“ Schlüssel der Tabelle, da Werte mit Geschäftsdomänen- Konnotationen beibehalten werden .
Angenommen, eine solche Tabelle enthält die folgenden Daten:
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
Die party_code
Spalte, in der die Werte "Republikanisch" und "Demokratisch" als der eigentliche Schlüssel der Tabelle beibehalten werden, ist mit einer EINZIGARTIGEN Einschränkung eingerichtet, die ich jedoch optional hinzugefügt party_code_idn
und als PK der Tabelle definiert habe (logischerweise) , party_code
kann als PRIMARY KEY ([PK]) fungieren.
Frage
Was sind die Best Practices für den Verweis auf Nachschlagewerte aus Transaktionstabellen ? Sollte ich Verweise auf FOREIGN KEY (FK) erstellen, entweder (a) direkt auf den natürlichen und aussagekräftigen Wert oder (b) auf Ersatzwerte?
Option (a) , zum Beispiel
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
hat die folgenden Eigenschaften 1 :
- Lesbar für den Endbenutzer (+)
- Einfach systemübergreifend zu importieren und exportieren (+)
- Es ist schwierig, den Wert zu ändern, da er in allen Verweistabellen geändert werden muss (-)
- Das Hinzufügen eines neuen Werts ist nicht teuer (=)
Ich denke, es ist fast so , als würde man einen Wert übergeben, wenn man eine Analogie aus dem Funktionsaufruf in der Fachsprache der Anwendungsprogrammierung zieht .
Option (b) zum Beispiel
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
hat die folgenden Eigenschaften:
- Nicht lesbar für den Endbenutzer (-)
- Schwierig zu importieren und zu exportieren, da wir die Referenzierung aufheben müssen (-)
- Einfach zu ändern, da wir nur Referenzen in Transaktionstabellen speichern (+)
- Das Hinzufügen eines neuen Werts ist nicht teuer (=)
Im Vergleich zum Funktionsaufruf in der App-Programmiersprache ähnelt es sehr dem Begriff „ Referenzübergabe “ .
Das Importieren und Exportieren kann auch auf andere Weise erfolgen, z. B. durch erneutes Auffüllen der Nachschlagetabelle und anschließendes erneutes Setzen der Ersatzspalte. Ich hoffe, dass ich das richtig hinbekomme, das ist etwas, was ich gerade als Möglichkeit gehört habe.
1. Beachten Sie, dass +
, -
und =
geben Sie den Vorteil dieser Eigenschaften.
Frage
Ganz wichtig: Gibt es einen Unterschied zwischen einer Nachschlagetabelle (oder einer Code- Tabelle) und einer FK-Referenz, wenn wir nur den letzteren Ansatz verwenden? Ich denke, sie funktionieren genauso.