Frage

Ich bin ganz beschämt dies zu fragen, aber vor kurzem hat es eine Situation, wo ich brauche für drei verschiedene Arten von Bankeinheiten eine einzige Tabelle zu erstellen, die miteinander in Beziehung steht. Lassen Sie mich erklären.

Stellen Sie sich eine BANK-Tabelle, die Einzelheiten der entweder eine EZB-Bank oder eine reguläre Bank hält die ländlichen Filialen betreibt, oder die ländlichen Zweige unter dieser Bank oder Filialen für Privatkunden arbeiten, die in dieser Hierarchie nicht fallen, sondern nur transact mit dem Land Ast.

Bisher habe ich beschlossen, auf mit 4 verschiedenen Tabellen für diese, mit FK Einschränkungen (das heißt jeweils ein für EZB-Bank, Bank, die ländlichen Filialen betreibt, auf dem Land Zweig und Retail Bank Branch). Aber wenn ich ziehe auf die Transaktionstabelle erstellen Ich war perplex, da Transaktionen zwischen jedem dieser Einheiten passieren könnten (Beispiel: zwischen ländlichem Zweig & Retail Branch, zwischen ländlichen Filialen selbst usw.). Das bedeutete, dass ich nicht nur eine Aufzeichnung des „Source“ halten müssen und ‚Destination“ IDs der Bänke Entity, sondern auch einige Daten hält die Anwendungslogik festzustellen, welcher Tisch setzen auf für anfragende. Ich fühlte, dass war schlecht.

Darüber hinaus gibt es eine USER-Tabelle und der Benutzer kann zu jeder dieser Einheiten gehören, auch hier mit 4 verschiedenen Tabellen von Bankeinheiten war problematisch. Wie kann ich wissen, wenn der Nutzer auf einer ländlichen Niederlassung oder Einzelhandel Niederlassung oder der leitenden Bank gehört?

Deshalb habe ich eine einzelne Bank Tisch (im Wesentlichen, weil sie ähnliche Einheiten sind, wie sie miteinander tätigen können). Ich habe eine übergeordnete Spalte in der Tabelle, die den Wert der ID des Mutterinstitutes halten würde (Verhältnis I sonst Verwendung FKs erreicht). So ein ländliches Zweig wird ID der Betriebsbank in ihrem übergeordneten Spalte. Filialen haben keine Eltern daher der Wert NULL gibt und so weiter.

Das Problem, das ich jetzt sehe, ist, dass es eine PK / FK-Beziehung in der BANK-Tabelle, eine zyklische Referenz.

Meine Frage ist: Wie schlimm ist das? Und was für einen Ausweg sein könnte?

War es hilfreich?

Lösung

Mit Beziehungen selbst verweise ist nicht ungewöhnlich. Ein Nachteil ist, dass viele RDBMS nicht zulassen, dass Sie Cascading Löschungen auf selbst verweis Beziehungen zu erfüllen. Other than that, ist diese Art der hierarchischen Beziehung keine großen Tücken haben. Viele der Datenbanklösungen auch erweiterte Funktionalität unterstützen diese Art von Beziehung zu erleichtern.

Darüber hinaus könnte ich empfehlen, dass Sie diese Bank Tisch haben, aber halten die sekundären Tabellen für die Banktypen, so dass jede Bank einen Datensatz in der Bank Tisch haben würde und zusätzlich einen Datensatz in einem der anderen Tische haben Halte Bank typspezifischen Eigenschaften erweitert. So werden die Beziehungen noch zentralisiert werden würde, immer noch die Benutzer an die Bank Tabelle gebunden werden, um einen einzelnen FK verwenden, aber Ihre Bank Tabelle nicht mit erweiterten Eigenschaften für alle die verschiedenen Banktypen verworren würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top