Domanda

Ho un database genealogico (circa pecore in realtà), che viene utilizzato dagli allevatori per la ricerca di informazioni genetiche. In ogni record devo conservare fatherid e motherid. In una tabella separata devo conservare completa 'rimboccarsi' informazioni in modo che posso dire rapidamente l'albero di famiglia completa di qualsiasi animale, senza recursing attraverso l'intero database ...

recentemente scoperto il tipo hierarchicalID integrato in SQL Server 2008, in superficie sembra promettente, ma io e chiedo se qualcuno ha usato abbastanza per sapere se sia o non sarebbe opportuno nel mio tipo di applicazione (cioè due genitori , i bambini più)? Tutti i campioni che ho trovato / letto finora che fare con le relazioni di tipo manager / dipendenti in cui un dato boss può avere più dipendenti, e ogni dipendente può avere un unico capo.

Le esigenze della mia app sono simili, ma non proprio la stessa.

Sono sicuro che scavare in questa nuova tecnologia in ogni caso, ma sarebbe bello scorciatoia mia ricerca se qualcuno sapeva già che non è stato progettato in modo tale che mi avrebbe permesso di fare uso di esso.

Sono anche curioso che tipo di persone di prestazioni stanno vedendo di utilizzare questo nuovo tipo di dati rispetto ad altri metodi che fanno la stessa cosa.

È stato utile?

Soluzione

Non riesco a vedere come avrebbe funzionato; in una gerarchia regolare, v'è una singola catena alla radice, quindi può memorizzare il percorso (che è ciò che il binario è ) per ciascun nodo. Tuttavia, con più i genitori, questo non è possibile: anche se si divide il matriarcato e partiarchy, avete ancora 1 madre, 2 nonne, bisnonne 4, ecc (nemmeno entrare in alcune delle scanerios più "interessanti" possibile, in particolare con il bestiame). Non esiste un unico percorso logico per codificare, in modo che nessun:. Non credo che questo può funzionare nel vostro caso

Sono felice di essere corretto, però.

Altri suggerimenti

Supponendo che ogni pecora ha un genitore maschio e un genitore di sesso femminile, e che nessuna delle pecore può essere il proprio genitore (che porta a un ovino temporale Paradox), allora cosa sull'utilizzo di due 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

Rendendo loro un PK congiunta, si sarebbe identificare in modo univoco ogni pecora come il prodotto della sua gerarchia materna e paterna di gerarchia.

Ci può essere qualche problema insito in agguato qui, in modo da procedere con cautela con un paio di semplici prototipi -. Ma inizialmente sembra che avrebbe funzionato per voi

L'uso di due hierarchyid separata per indicare il padre e la madre avrebbe funzionato bene.

Tuttavia, è sicuramente non vorrebbe usare quelli come indicatore unico della fila, in quanto si tratta di una situazione di 2-a-molti. (Due pecore possono avere più figli.)

Non vedo nulla di intrinsecamente sbagliato con l'utilizzo di hierarchyid per discendenza - per gli ovini, almeno. Per le persone, i rapporti sono molto più complicate di "questa persona generò quella persona", quindi ovviamente l'uso sarebbe limitato a allevamento.

SQL Server hierarchyid non è una soluzione robusta per molti sulla genealogia analitici. Si basa su ORDPATH e l'ho usato per un po 'nella genealogia; ma ci sono troppe scenari in genealogia che non possono essere affrontate rapidamente con metodi ORDPATH per grafo aciclico diretto. Un database grafico è molto più robusto e ben si adatta per la genealogia. Io uso Neo4j: http://stumpf.org/genealogy-blog/graph- database-in-genealogia .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top