Database e livelli territoriali

di il
22 risposte

Database e livelli territoriali

Buongiorno a tutti! Avrei bisogno del Vs consiglio per progettare un database con dati su livelli territoriali.
Si tratta di un database di interventi di manutenzioni ciascuno dei quali può essere eseguito in un comune OPPURE in un area operativa definita (zona formata da più comuni ma comunque ben definita) OPPURE su un'intera regione.
Poi ovviamente devo fare query per comune includendo anche quegli interventi che sono su tutta l'area operativa o su tutta la regione, oppure per area operativa o per regione.
ESEMPIO :
intervento 1 ->comune x
intervento 2 ->area A
intervento 3 -> area B

comune x sta nell'area A

Cercando gli interventi che interessano l'Area A devo trovare intervento 1 e intervento 2.

Come posso strutturare il database ?
Grazie

22 Risposte

  • Re: Database e livelli territoriali

    Una AreaOperativa comprende molti Comuni. Anche un Comune può appartenere a molte AreeOperative. Io penserei a una tabella di congiunzione AreeComuni con i seguenti campi:
    IDAreaComune (PK)
    IDArea (FK)
    IDComune (FK)
  • Re: Database e livelli territoriali

    Un comune può stare in una sola area operativa. Un'area operativa è un insieme ben determinato e fisso di comuni.
    Un intervento può interessare più comuni oppure un'intera area operativa.
    E quindi nella tabella degli interventi cosa memorizzeresti?
  • Re: Database e livelli territoriali

    daniela.ba ha scritto:


    Un comune può stare in una sola area operativa. Un'area operativa è un insieme ben determinato e fisso di comuni.
    Un intervento può interessare più comuni oppure un'intera area operativa.
    Allora la tabella dgli Interventi devi includere sia l'Area che il Comune, che può essere valorizzato o meno.
    Se il campo Comune è valorizzato, l'intervento è specifico del Comune, altrimenti è riferito all'Area.

    Quindi nella tabella INTERVENTI dovrai avere:
    IDIntervento (PK)
    IDArea (FK tabella AREE)
    IDComune (FK tabella COMUNI - default=0)
    <altri campi>
    
    A livello programmatico, l'utente può essere agevolato in modo che selezionando il Comune, si valorizzerà automaticamente anche l'Area; in tal caso occorre una tabella AreeComuni (vedi suggerimento di Osvaldo) e comunque l'Area deve essere obbligatoria.
  • Re: Database e livelli territoriali

    daniela.ba ha scritto:


    in un comune OPPURE in un area operativa definita (zona formata da più comuni ma comunque ben definita) OPPURE su un'intera regione.

    daniela.ba ha scritto:


    Un comune può stare in una sola area operativa
    A me queste 2 frasi mi appaiono in contraddizione.
    Io avevo capito che Locorotondo-Cisternino-Martina Franca possono stare in una AreaOperativa che porta il nome di "Valle d'Itria". Ma si dà il caso che Locorotonda stia anche in provincia di Bari, Cisternino in provincia di Brindisi, Martina Franca in provincia di Taranto. Tutte poi stanno in Puglia.
    Se il discorso non sta in come te l'ho esposto io...potresti chiarire con qualche TUO esempio?

    daniela.ba ha scritto:


    E quindi nella tabella degli interventi cosa memorizzeresti?
    AreaOperativa. Se abbraccia più Comuni siamo nel caso più "generale"...ma se vuoi su "singolo Comune"...dovresti associare anche AreaOperativa=Locorotondo / Comune=Locorotondo.
  • Re: Database e livelli territoriali

    Scusate, mi sono espressa male. Per regione intendevo l'"intero", ossia tutti i comuni. Quindi una regione è suddivisa in aree, le quali sono formate da comuni.
    E' necessario mettere l'IDArea nel tabella Interventi?
    Avevo pensato, come mi avete suggerito, di fare una tabella di relazione Aree-Comuni, da questa 'ricavare' un IDAreaComune da inserire nella tabella interventi. Per fare questo dovrei inserire nella tabella di relazione anche un record per ogni area (Area, tutti comuni). Che ne dite, troppo macchinoso?
    Grazie comunque per le VS risposte
  • Re: Database e livelli territoriali

    daniela.ba ha scritto:


    E' necessario mettere l'IDArea nel tabella Interventi?
    Esatto.

    daniela.ba ha scritto:


    Per fare questo dovrei inserire nella tabella di relazione anche un record per ogni area (Area, tutti comuni).
    Sì.

    daniela.ba ha scritto:


    Per regione intendevo l'"intero", ossia tutti i comuni. Quindi una regione è suddivisa in aree, le quali sono formate da comuni.
    Per me NON è ancora CHIARISSIMO. Raccontato così mi fai capire che una Regione come Lazio, Abruzzo, Puglia è suddivisa in molte Aree (che non è detto che corrispondano alle Provincie).: vero?
    Ma nell'esempio che ti ho esposto Locorotondo appartiene a una sola Area oppure più aree (come ho raccontato io)?
    Nel primo caso ti basta una soluzione gerarchica stile Regioni ---uno-a-molti---> Aree (o Provincie) ---uno-a-molti--->Comuni.
    Nel secondo caso devi fare come avevo esposto io.
  • Re: Database e livelli territoriali

    daniela.ba ha scritto:


    Scusate, mi sono espressa male. Per regione intendevo l'"intero", ossia tutti i comuni. Quindi una regione è suddivisa in aree, le quali sono formate da comuni.
    Io avevo capito giusto.

    daniela.ba ha scritto:


    E' necessario mettere l'IDArea nel tabella Interventi?
    Ma hai letto il mio post?
    La tua domanda fa supporre di NO.

    Io ho le idee piuttosto chiare, avendo gestito una cosa del genere a livello 'mondiale' (nazioni, regioni, aree, responsabili, ecc.)
    Ma non vorrei creare confusione, quindi se vuoi proseguire con Osvaldo, dimmelo.
  • Re: Database e livelli territoriali

    Scusa gibra, non ti arrabbiare ....ho capito perfettamente cosa intendi

    gibra ha scritto:


    Quindi nella tabella INTERVENTI dovrai avere:
    IDIntervento (PK)
    IDArea (FK tabella AREE)
    IDComune (FK tabella COMUNI - default=0)
    <altri campi>
    
    Ma in questo modo non si pensi possano sorgere problemi per l'integrità referenziale? Se per qualche errore viene assegnato, nella tabella interventi, un comune ad un'area operativa che non è la sua, oppure se un comune passasse in un'altra area, non si creano problemi sui dati?

    OsvaldoLaviosa ha scritto:


    Raccontato così mi fai capire che una Regione come Lazio, Abruzzo, Puglia è suddivisa in molte Aree (che non è detto che corrispondano alle Provincie).: vero?
    Si, è così. Nell'esempio che hai fatto tu Locorotondo appartiene ad UNA SOLA Area Operativa.

    Grazie ancora per la Vs disponibilità
  • Re: Database e livelli territoriali

    Ripeto tutto a parole mie.
    1) Tu hai una situazione GERARCHICA Regioni uno-a-molti Aree uno-a-molti Comuni. Anzi...non ti complicare la vita con nuovi nomi, usa la classica-consolidata Regioni uno-a-molti Province uno-a-molti Comuni. Io me la terrei così.
    2) Quando vuoi agire con un INTERVENTO "territoriale"...diciamo che provvedi manualmente ad associare ogni singolo Comune.
    3) Se nel caso 2) il territorio dovesse essere particolarmente vasto (es. Regione=Puglia)...sfrutti una query che filtra tutti i Comuni della regione Puglia e li associ tutti insieme con un colpo solo con "query di accodamento" alla tabella Interventi.
  • Re: Database e livelli territoriali

    daniela.ba ha scritto:


    Scusa gibra, non ti arrabbiare ....ho capito perfettamente cosa intendi
    Non sono arrabbiato!
    Mi spiace tu abbia avvertito questo. Non è assolutamente così.
    E' che non vorrei generarti confusione, in due che esprimono ognuno i loro concetti.
    D'altra parte, è normale che ognuno possa vederla in modi diversi.
    Tutto qui.

    daniela.ba ha scritto:


    Ma in questo modo non si pensi possano sorgere problemi per l'integrità referenziale? Se per qualche errore viene assegnato, nella tabella interventi, un comune ad un'area operativa che non è la sua, oppure se un comune passasse in un'altra area, non si creano problemi sui dati?
    1) Non c'è alcun un problema di integrità referenziale: questa è una tabella statica.
    A meno che un Comune non venga spostato in un'altra Regione
    In questo caso potrebbe esservi la necessità di gestire anche uno storico (con date di validità).

    2) Se si commettono errori nel creare la tabella statica, si correggono.
    Non esiste da nessuna parte un sistema a prova di errore, dal momento che l'utente deve scegliere 'qualcosa'.
  • Re: Database e livelli territoriali

    OsvaldoLaviosa ha scritto:


    Per me NON è ancora CHIARISSIMO. Raccontato così mi fai capire che una Regione come Lazio, Abruzzo, Puglia è suddivisa in molte Aree (che non è detto che corrispondano alle Provincie).: vero?
    Le AREE sono 'virtuali', ovvero è l'utente/azienda che stabilisce come sono composte le aree.
  • Re: Database e livelli territoriali

    Allora, vediamo se ho capito....
    Questo è il suggerimento di Osvaldo:
    osvaldo.png
    osvaldo.png

    e questo quello di gibra:
    Gibra.png
    Gibra.png

    Giusto?
  • Re: Database e livelli territoriali

    Io penso nessuno dei due.

    C'è un problema da chiarire bene bene. Almeno io vorrei capire se l'aspetto GERARCHICO-TERRITORIALE esiste nella maniera classica: una Regione contiene molte Aree e un'Area contiene molti Comuni. Un Comune appartiene a una sola Area, quindi a una sola Regione.

    Potresti esporre 2-3 esempi "significativi" per farci capire meglio il "tuo" problema?
  • Re: Database e livelli territoriali

    OsvaldoLaviosa ha scritto:


    C'è un problema da chiarire bene bene. Almeno io vorrei capire se l'aspetto GERARCHICO-TERRITORIALE esiste nella maniera classica: una Regione contiene molte Aree e un'Area contiene molti Comuni. Un Comune appartiene a una sola Area, quindi a una sola Regione.
    Si, è esattamente così. La relazione è la stessa che c'è fra regioni, provincie e comuni, anche se le aree operative non coincidono con le province. Comunque possiamo chiamarle Province se ti semplifica la cosa. La relazione GERARCHICO-TERRITORIALE è la stessa. Esempio: il comune di Bardi è nella AREA/PROVINCIA Parma che a sua volta è nella Regione Emilia e Romagna. E più chiaro?

    Poi ciascun intervento può interessare solo un comune oppure una intera Area oppure tutta la regione.
    Spero di aver chiarito....non vanno bene nessuna delle due soluzioni?
Devi accedere o registrarti per scrivere nel forum
22 risposte