2009-04-08 15 views
5

Questo è relativo a this question. Mi ha fatto pensare, ad esempio, a this book. Invece di essere un figlio sia di [Agriculture] e [Other], negli alberi [Books > Catalogs > Agriculture] e [Business & Industrial > Agriculture & Forestry > Other], rispettivamente, potrebbe semplicemente stare da solo avere quei livelli come tag, invece.Quali sarebbero i pro ei contro dei dati gerarchici rispetto ai dati correlati, in termini di prestazioni (e categorizzazione)?

In un sito web come eBay, sarebbero i costi delle prestazioni di vendita di tutti i record con i tag [Agriculture E Catalog] pesantemente outweigth quelli di elencare tutti i record nella categoria[Books > Catalogs > Agriculture], ha fornito i dati sia correttamente normalizzata?

Mi rendo conto che questa è probabilmente una domanda stupida (e no, non penso di programmare il prossimo eBay), ma non posso scuotere questa curiosità e, peggio; la tentazione ; quindi preferirei sembrare stupido ora e capire meglio le mie incomprensioni piuttosto che fare qualcosa di stupido o inutile in seguito.

risposta

6

Quando il modello relazionale è emerso per la prima volta, il paradigma del database dominante era gerarchico; e quindi (come è ancora il caso) gerarchico è più efficiente perché, in sostanza, è possibile iniziare con query parzialmente prejoined.

Ma basato solo su una struttura gerarchica statica. La grande difficoltà emerge quando si desidera rendere flessibile la visualizzazione dei dati per provenire da un'altra dimensione radice. (Era una questione fortemente dibattuta se i database relazionali potessero mai essere abbastanza efficienti per l'uso pratico, presto risolti applicando diligentemente la Legge di Moore.)

Pensa ai Clienti che hanno Ordini che comprendono Prodotti; una gerarchia. Inevitabilmente vorrete anche essere in grado di pensare ai Prodotti che si trovano negli Ordini dei Clienti; un'intera altra gerarchia. E addetti alle vendite in regioni che generano ordini dai clienti; o avere clienti che effettuano ordini.

I database relazionali consentono di ricostruire le gerarchie a volontà con efficienza approssimativamente uguale; un vantaggio disponibile solo in altri formati di database a costo di incorporare più gerarchie ortogonali; nel qual caso il costo di alterare, aggiungere o eliminare dati diventa astronomico.

+1

Bella risposta, grazie! –

2

Lo scopo principale del modello relazionale è impedire la duplicazione. I dati gerarchici, anche se più facili da eliminare manualmente, soffre di problemi di duplicazione.

Utilizzare il modello più adatto ai dati anziché ottimizzare prematuramente.

Io tendo a costruire alberi gerarchici di presentazione dai dati relazionali.

+0

> Utilizza il modello più adatto ai tuoi dati anziché eseguire un'ottimizzazione prematura. Tendo a costruire alberi gerarchici di presentazione dai dati relazionali. - È stato molto interessante, grazie. –

Problemi correlati