DB sezioni-strade-famiglie

di il
2 risposte

DB sezioni-strade-famiglie

Salve a tutti, ho la necessità di realizzare un db che abbia queste informazioni:
in ogni sezione ci sono diverse strade e in ogni strada molte famiglie. Ho creato quindi due relazioni 1 a molti (sezione-strada, strada-famiglia)
1) Conviene instaurare anche una relazione 1 a molti tra sezioni e famiglie?
2) Come fare per ricercare per nome di strada, in modo che mi compaia a quale sezione appartiene la strada e quali famiglie ci sono?
3) Che oggetto realizzare se invece voglio inserire le famiglie e selezionare con il menù a tendina a quale sezione e a quale strada appartengono? ho provato con la maschera ma non mi riesce...
4) Come report (e quindi per la stampa) voglio per ora solo le sezioni con le strade relative, e ci sono riuscita, è semplice, solo che vorrei che in un solo foglio voglio 2 colonne e quindi che l'elenco continui... ci ho provato ma mi esce solo una copia della colonna precedente, non il continuamento...

Aiutatemi se riuscite a rispondere almeno ad una delle domande!!! grazie mille!!! scusate ma sono un pò niubba!! XD

2 Risposte

  • Re: DB sezioni-strade-famiglie

    1) No, hai strutturato bene così.

    Per le restanti domande, le risposte ci sono e come, ma dovresti dirci con precisione, con quali campi hai relazionato.
    Hai usato per Sezioni il campo Sezione, per Strade il campo Strada? Oppure ti sei servito di campi ID Contatore?
  • Re: DB sezioni-strade-famiglie

    Ci sono libri molto impegnativi sulla Gerarchia dei dati e su come sia da inquadrare l'ottimizzazione della gestione.

    A prescindere dalle 5 Regole Normali, la gestione Gerarchica si infila in mezzo a tutte ma è molto complessa da definire e comprendere...!

    In sostanza per gestire Gerarchie di dati o dati conlegame Gerarchico ci sono solo 2 opzioni una delle 2 tuttavia non è in gradi di consentire la gestione nel caso in cui un Elemento possa far parte di più genitori...!

    La 1° prevede una costruzione gerarchica progressiva di un Codice... che consenta di sapre sempre chi sia il padre...!
    Esempio
    
    1 PrimoElementoPadre
    11 PrimoElementoFiglio(di 1)
    111 PrimoElementoFiglio(di 11)
    12 SecondoElementoFiglio(di 1)
    ecc...
    Questo fa si che il Len(CampoChiave) definisca il Livello di parentela, questo campo solitamente è Stringa e si assegnano Char di separazione per evitare di definire un MAXCHAR per Gerarchia che ha dei limiti oggettivi.
    Ovviamente questo sistema con codice gerarchico parlante impedisce che un'elemento possa essere figlio di Più padri.
    Ha ovvi vantaggi di ricerca e gestione, semplice da comprendere e la verifica dei figli si effettua su ricerche di stringhe parziali... della Chiave del Genitore
    
    SELECT * FROM T1 WHERE Chiave LIKE ChiaveGenitore & "*"
    Il sistema più flessibile ma nel contempo più complesso si basa su 2 Tabelle.
    La prima Tabella di Elementi Semplici, sostanzialmente è una Tabella di Anagrafica nella quale non è inserito NESSUN elemento gerarchico.
    Avremo una Chiave(PK spesso COUNTER) ed i campi Desc, Nome Ecc...!

    Ci sarà poi una 2° Tabella che conterrà solo 2 Campi, uniti in PK in quanto solo uniti saranno CHIAVE.

    Questa Tabella avrà la definizione di GERARCHIA.
    I 2 Campi sono Padre(InteroLungo) e Figlio(InteroLungo)

    Questa Tabella avrà una Doppia Referenza alla Tabella Anagrafica, in quanto sia PADRE che FIGLIO sono elementi della stessa Tabella Anagrafica.

    Quindi se nella Tabella Anagrafica ho
    
    1 Mario
    2 Piero
    3 Paola
    4 Nicola
    Nella Tabell [Gerarchie] potrei avere
    
    Padre - Figlio
    1        2
    1        3
    2        4
    Otterrò pertanto che Mario è il Padre di Piero e Paola, e che Paola è Padre di Nicola...!

    Questa struttura richiede l'uso di Fuunzioni RICORSIVE per l'estrazione dei dati, cosa che con Serve SQL risulta molto più performante, con Access la cosa è insulsa... ma funziona molto bene.

    Questa è la TEORIA di come si devono gestire Dati gerarchici, non ci sono altre opzioni.
Devi accedere o registrarti per scrivere nel forum
2 risposte