Frage

Ich habe eine genealogische Datenbank (über Schafe tatsächlich), die von den Züchtern verwendet wird genetische Information zu erforschen. In jedem Datensatz speichern ich fatherid und motherid. In einer separaten Tabelleninformation Ich speichere vollständig ‚aufrollen‘, so dass ich schnell dem kompletten Stammbaum eines Tieres ohne Rekursion durch die gesamte Datenbank kann sagen ...

vor kurzem entdeckt, die Art hierarchicalID in SQL Server gebaut 2008 auf der Oberfläche viel versprechende es klingt, aber ich und frage mich, ob jemand es genug benutzt hat zu wissen, ob es in meiner Art von App angemessen wäre (dh zwei Eltern , mehrere Kinder)? Alle Proben Ich habe festgestellt / Lese bisher mit Manager / Mitarbeitern Typ Beziehungen behandeln, in denen ein bestimmten Chef mehr Mitarbeiter haben kann, und jeder Mitarbeiter kann einen einzigen Chef hat.

Die Bedürfnisse meiner App sind ähnlich, aber nicht ganz dasselbe.

Ich bin sicher, dass ich in diese neue Technologie sowieso graben, aber es wäre schön, meine Forschung abzukürzen, wenn jemand bereits wusste, dass es nicht in einer solchen Weise gestaltet, dass es mir erlauben würde, davon Gebrauch zu machen.

Ich bin auch neugierig, welche Art von Leistung Menschen mit diesem neuen Datentyp im Vergleich zu anderen Methoden zu sehen, die das gleiche tun.

War es hilfreich?

Lösung

Ich kann nicht sehen, wie es funktionieren würde; in einer regelmäßigen Hierarchie gibt es eine einzige Kette an die Wurzel, so kann er den Pfad speichern (was die binären ) an jeden Knoten. Allerdings mit mehreren Eltern dies nicht möglich ist: auch wenn Sie Matriarchat und partiarchy aufgeteilt, haben Sie noch 1 Mutter, 2 Omas, 4 Urgroßmütter, usw. (nicht einmal in einige der mehr „interessant“ scanerios bekommen möglich, vor allem bei Tieren). Es gibt keinen einzigen logischen Weg zu kodieren, so dass keine. Ich glaube nicht, dass dies in Ihrem Fall arbeiten kann

Ich bin glücklich, korrigiert zu werden, though.

Andere Tipps

Jedes Schaf Unter der Annahme hat einen männlichen Elternteil und ein weiblicher Elternteil, und dass kein Schaf kann seine eigenen Eltern (führt zu einer Ovine Temporal Paradox) sein, was ist dann mit zwei HierarchyIDs?

CREATE TABLE dbo.Sheep(
    MotherHID hierarchyid NOT NULL,
    FatherHID hierarchyid NOT NULL,
    Name int NOT NULL
)
GO
ALTER TABLE dbo.Sheep 
ADD CONSTRAINT PK_Sheep PRIMARY KEY CLUSTERED (
    MotherHID,
    FatherHID
)
GO

sie eine gemeinsame PK Indem, würden Sie eindeutig sein, jedes Schaf als das Produkt seiner mütterlichen Hierarchie zu identifizieren und sie väterlicherseits Hierarchie.

Es kann einige inhärente Problem hier lauern, so gehen Sie vorsichtig mit ein paar einfachen Prototypen -. Aber zunächst scheint es, wie es für Sie funktionieren würde,

Die Verwendung von zwei separaten HierarchyID Vater und Mutter, um anzuzeigen, gut funktionieren würde.

Sie jedoch auf jeden Fall wollen würden diejenigen als eindeutiger Indikator für die Reihe verwenden, da es dich um eine Situation 2-to-many ist. (Zwei Schafe können mehrere Kinder haben.)

Ich sehe nichts von Natur aus falsch mit der Verwendung von hierarchyid für Vorfahren - für Schafe zumindest. Für Menschen sind die Beziehungen viel komplizierter, als „diese Person, diese Person gezeugt“, so offensichtlich wäre die Verwendung Züchtung begrenzt werden.

SQL Server hierarchyid ist nicht eine robuste Lösung für viele Genealogie analytischen Fragen. Es basiert auf ORDPATH und ich habe es für eine Weile in der Genealogie verwendet; aber es gibt zu viele Szenarien in der Genealogie, die nicht ohne weiteres mit ORDPATH Verfahren zur gerichteten azyklischen Graphen angesprochen werden. Eine Graph-Datenbank ist viel robuster und gut geeignet für Genealogie. Ich benutze Neo4j: http://stumpf.org/genealogy-blog/graph- Datenbanken-in-Genealogie .

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