Ich versuche geschachtelte Beziehungen zu modellieren und habe es schwer, dorthin zu kommen, wo ich sein möchte. Ich möchte ein Beispiel vorstellen, das hoffentlich einige meiner Fragen beantworten wird; es basiert auf Geographie.Datenbank Design
Ich hätte gerne eine einzige Region entity. Diese Regionsentität erlaubt Planeten, Kontinente und Länder.
Ich hätte im Grunde eine einzige Region namens Erde. Dies wäre die erste Ebene der Hierarchie. Dann hätte ich die 7 Kontinente, die in der Region Erde verschachtelt wären. Dann würde ich alle Länder der Welt hinzufügen und jeden mit ihrem äußeren Kontinent verbinden. Es kann Kantenfälle geben (ich weiß nicht, ob es in diesem Beispiel gibt, aber ich will, dass es dort ist), wo ein Land mehr als einem Kontinent gehört.
Was ich will, im Wesentlichen zu erhalten, ist die Fähigkeit, zu sagen:
Wählen Sie Alle Länder in einem Kontinent. Ich möchte die Fähigkeit, auch unbegrenzt zu nisten; also wäre die nächste Schicht Staaten/Provinzen. Ich könnte also sagen, ich möchte alle Provinzen in Nordamerika.
Ich kann Art vorstellen, wie die SQL aussehen würde, aber ich weiß nicht, wie die Multi-Tier-Verschachtelung zu tun:
Select *
From Region Outer, Region Inner
Where Outer.Name = "North America"
AND Inner.Type = "State"
ich mit nur einem einfachen Region Einheit habe kommen und dann eine selbstbezüglicher Eltern-Kind-Einheit:
Region {RegionID, Name, Type}
SubRegion {ParentID, ChildID}
ich bin sehr daran interessiert, wie dies erreicht werden soll. Wenn ich falsche oder schlechte Designentscheidungen/-annahmen mache, kann ich mir einen eigenen Vorschlag machen. Ich bin auch nicht explizit an den geografischen Sachen interessiert, ich dachte nur, dass es ein gutes Beispiel ist, das illustriert, was ich zu erreichen versuche.
Ich versuche dies in SQL 2008 R2 mit C# und Linq zu tun.
Das fühlt sich an wie ein hierarchischer Netzwerkgraph, also denke ich, dass es einen gut verstandenen Weg geben sollte; Ich weiß es einfach nicht ..
haben Sie SQL Server 2008 Spatial Types untersucht? Anstatt FKs mit IDs zu verknüpfen, könnten Sie räumliche Informationen verwenden, um herauszufinden, "welche Länder sich in einem Kontinent befinden". – RPM1984
Russland und die Türkei erstrecken sich über zwei Kontinente, nämlich Europa und Asien. –