Was ist der Nachteil, wenn alle untergeordneten Tabellen als Fremdschlüssel mit allen darüber liegenden Tabellen in der Hierarchie verknüpft werden? Ich habe eine Standortkomponente mit 6-Lookup-Tabellen:Vorteil/Nachteil der Verwendung von Fremdschlüsseln an jedem Kind Tisch für alle Eltern/Großeltern, etc?
- Kontinente
- Länder
- Regionen
- Städte
- Nachbarschaften
- Art der
Offensichtlich jeder Ebene der Lage ist ein Kind der oben genannten, so wird es Fremdschlüssel für die Eltern, aber was ist der Schaden, wenn ich sie alle zusammen Fremdschlüssel, dass mein Tisch haben Städte haben:
Stadt Tisch
- continent_id (fk Kontinent)
- country_id (fk zu Land)
- region_id (fk Region)
vs nur 'rEGION_ID-fk Region haben? Der Vorteil, den ich auf meinem Weg sehe, ist, wenn ich Städte auf einem Kontinent nachschlagen muss, kann ich direkt von Stadt zu Kontinent gehen, ohne in die Region zu springen, dann in Land und Kontinent, aber natürlich bin ich mir der Nachteile nicht sicher Dies beeinträchtigt die Leistung oder irgendetwas anderes?
Dies ist eine einzige Tabelle. Ich habe viele Tabellen so, also versuche ich, das Konzept zu verstehen, also kann ich es verwenden, um andere Tabellen auch auf meinen anderen Bestandteilen zu entwerfen, die viel mehr als 6 Nachschlagetabellen sind.
Aber was übergewichtet was hier? Ist es besser 2-3-4 Joins zu machen, um die Elterntabelle zu erreichen oder sie über fks denormalisieren zu lassen, so dass es eine direkte Beziehung zwischen allen gibt? Ich nehme an, da alle Tabellen über FK in Beziehung stehen, gibt es keine Duplizierung als solche, weil sie alle zusammenhängen. Es ist also nicht so, dass ich "New York" in einer Tabelle und "New Yk" in der nächsten eingeben kann. also werden die gleichen Daten existieren - ja, aber es wird immer in allen Tabellen genau sein. Dies ist ein soziales Netzwerk, so dass Leistung wichtig ist, daher bin ich mir nicht sicher. – mikey
@mikey - Mit Ihrem Multi-FK-Schema können Sie eine Stadt in den USA und in Afrika haben, es sei denn, Sie fügen weitere Prüfbedingungen hinzu. – Oded
Beispiel: wie Chicago nach Illinois nach USA nach Nordamerika. ja, wenn ich eine falsche fk id in der tabelle für land eingeben könnte es gehen: Chicago nach Illinois nach Afrika nach nordamerika. Aber ich nehme an, dass es dort ist, wo es einen Fehler gibt, weil es einen FK für Chicago nach Illinois und Illinois nach USA in der Regionstabelle gibt, also wird es prüfen, ob 'Illinois nach Afrika' in der Regionstabelle nicht gültig ist und a Verbindung zwischen Chicago nach Afrika im Stadttisch? – mikey