Rimando ad una tabella specifica sulla base di un attributo

di il
12 risposte

Rimando ad una tabella specifica sulla base di un attributo

Salve,
sto tentando di normalizzare un database esistente ma sono fermo ad un intoppo.
Provo ad esemplificare il db inserendo solo alcuni campi strettamente necessari alla strutturazione della mia domanda:

Il database raccoglie i beni posseduti da una popolazione. Nello specifico:
Tabella PERSONE: ID persona, ...
Tabella BENI: ID persona, ID bene, tipologia bene, ...

I beni possono essere di diversa natura (tipologie). Ogni tipologia di bene ha diversi attributi. Ad esempio:
- i beni TERRENI hanno informazioni geografiche (località), dimensionali (estensione), tipologiche (coltivazione), economiche (valore);
- i beni ANIMALI hanno informazioni tipologiche (specie), quantitative (quantità) ed economiche (valore).

Al momento possiedo una sola tabella per tutti i tipi di beni. Questa tabella contiene tutti gli attributi di ciascuna tipologia:
-Tabella BENI: ID persona, ID bene, tipologia bene, località, estensione, coltivazione, specie, quantità, valore, ...

1) Il mio obiettivo è normalizzare il database. Converto la tabella BENI in due tabelle complementari: BENI TERRENI e BENI ANIMALI.

Ho quindi al momento 5 tabelle:
-Tabella PERSONE;
-Tabella BENI;
-Tabella TIPOLOGIE DI BENI;
-Tabella BENI TERRENI;
-Tabella BENI ANIMALI.


DOMANDA 1: Dovrei eliminare la tabella BENI (corrispondente all'unione delle tabelle "BENI TERRENI" e "BENI ANIMALI") o dovrei lasciarla con i soli attributi "ID persona", "ID bene" e "tipologia bene"?


2) Il mio attuale obiettivo è, nella compilazione dei dati, inserire tutti i beni e, per ogni bene, in base alla tipologia, inserire i dati nella tabella corrispondente alla tipologia. ES.: voglio inserire, per l'IDpersona 050, i beni 05001 (terreno) e 05002 (animale). Potrei aprire la tabella TERRENI e inserire il bene "05001" con le sue caratteristiche, poi aprire la tabella ANIMALI e inserire il bene "05002" con le sue caratteristiche.

DOMANDA 2: E' possibile in alternativa esemplificare l'inserimento dei dati, magari con una maschera, inserendo l'ID Bene e la tipologia e, in base alla tipologia, far comparire gli attributi corrispondenti alla tabella specifica della tipologia (con conseguente memorizzazione nella tabella TERRENI o ANIMALI rispetto alla selezione fatta nella casella "tipologia")? Quale può essere la procedura più corretta da adottare?


Spero di essere stato abbastanza chiaro ed esaustivo; se ci sarà bisogno di approfondire alcuni punti lo farò volentieri.

Vi ringrazio in anticipo per il tempo dedicatomi!

Giuseppe

12 Risposte

  • Re: Rimando ad una tabella specifica sulla base di un attributo

    1) Poiché le tipologia di bene sono 2 e sono statiche (in quanto ogniuna ha una sua tabella) la "tipologie di beni" risulta inutile.

    2) "maschera" -> niente a che vedere con la normalizzazione. Siamo nel campo dell'interfaccia utente: dipende da che linguaggio/framework/ambiente/etc usi.
    se ci sarà bisogno di approfondire alcuni punti lo farò volentieri.
    Ovvio... altrimenti...
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Ciao Nicolap, grazie per la risposta.

    Nella 1) esprimo i miei dubbi sulla normalizzazione.
    Nella 2) la domanda ha un'altra natura e corrisponde al titolo del topic; qui la normalizzazione non è contemplata, a meno che la risoluzione della domanda non preveda anche azioni di normalizzazione.

    Ho considerato la creazione della tabella TIPOLOGIE DI BENI in funzione della casella combinata "tipologie" nella maschera, che possa indirizzarmi alla compilazione della tabella TERRENI piuttosto che di quella ANIMALI.
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    BeniTerreni e BeniAnimali hanno campi non omogenei. Di conseguenza mi sembra giusto che siano 2 tabelle separate.
    Tipologie: se sei capace di gestire tutto in una tabella, potrai alimentare BeniTerreni e BeniAnimali con 2 opportune query che filtrano i campi/valori coerentemente. Se ciò ti crea complicazioni di omogeneità dati, fai 2 tabelle TipologieTerreni e TipologieAnimali.
    Riepilogando:
    Persone uno-a-molti BeniTerreni
    Persone uno-a-molti BeniAnimali
    TipologieTerreni uno-a-molti BeniTerreni
    TipologieAnimali uno-a-molti BeniAnimali
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Ciao OsvaldoLaviosa, ti ringrazio per il consiglio!
    Purtroppo non riesco a cogliere appieno ciò che mi hai scritto. Le mie tipologie di beni sono (terreni, animali); BeniTerreni ha al suo interno campi omogenei e lo stesso vale per BeniAnimali. Perchè creare TipologieTerreni e TipologieAnimali?

    Forse hai frainteso qualcosa per un mio difetto di chiarezza. Nel dubbio provo a rendere graficamente delle tabelle analoghe esemplificate e le loro relazioni:
    Allegati:
    26310_e6e6c72bc828efc46903b5297156a760.jpg
    26310_e6e6c72bc828efc46903b5297156a760.jpg

    26310_d580d378173687f469f609facbe786d3.jpg
    26310_d580d378173687f469f609facbe786d3.jpg

    26310_a330e279ef0fdc4c63987baecb6f49c4.jpg
    26310_a330e279ef0fdc4c63987baecb6f49c4.jpg

    26310_9a5802c9a15aced64e5b827e4adf302d.jpg
    26310_9a5802c9a15aced64e5b827e4adf302d.jpg

    26310_6cec2e7884857812cbf0f4b70ae77672.jpg
    26310_6cec2e7884857812cbf0f4b70ae77672.jpg
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Relazioni:
    Allegati:
    26310_ba28827d7f03c5c746513605f28d9aa4.jpg
    26310_ba28827d7f03c5c746513605f28d9aa4.jpg
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Vorrei creare una maschera di inserimento dati dove, dopo aver inserito l'IDpersona, l'IDbene e la tipologia, mi compaiano i rispettivi attributi del bene: se Animali: "specie, quantità, valore";
    se Terreni: "località, estensione, coltivazione, valore".

    E' possibile? Come potrei comportarmi in alternativa?
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Vorrei sapere se il Terreno di 10000mq a Gatteo a mare appartiene soltanto a una Persona oppure può appartenere anche a molti.
    Sempre riguardo questo esempio, come fai a dire in assoluto che è sempre coltivato a "patate"? Come intendi gestire le variazioni di coltivazione? Considera anche che un Terreno può essere coltivato anche con molte piante. Trovo errato quel campo messo lì.

    Gisep ha scritto:


    Vorrei creare una maschera di inserimento dati dove, dopo aver inserito l'IDpersona, l'IDbene e la tipologia, mi compaiano i rispettivi attributi del bene: se Animali: "specie, quantità, valore";
    se Terreni: "località, estensione, coltivazione, valore".
    Questa domanda riguarderà un problema diverso da risolversi nella apposita sezione Access.
    In questa sezione "Progettazione database" discutiamo solo della corretta organizzazione tabelle.
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    In base alle immagini che hai postato, propongo una "mia" idea normalizzata del tuo database.

    Persone
    IDPersona (PK)
    Cognome
    Nome

    Beni
    IDBene (PK)
    IDCittà (FK)
    Indirizzo
    Mq

    AssegnazioniBeni
    IDAB (PK)
    DataAssegnazione
    IDBene (FK)
    IDPersona (FK)

    Città
    IDCittà (PK)
    Città
    CAP
    Provincia
    Regione
    Stato

    UtilizziBeni
    IDUtilizzo (PK)
    DataInizioUtilizzo
    DataFineUtilizzo (facoltativo)
    IDTipoUtilizzo (FK)
    Quantità
    IDBene (FK)

    TipiUtilizzi
    IDTipoUtilizzo (PK)
    TipoUtilizzo (patate, cicorie, pecore, cavalli…)
    Categoria (terreni, animali)

    Relazioni:
    Persone.IDPersona uno-a-molti AssegnazioniBeni.IDPersona
    Beni.IDBene uno-a-molti AssegnazioniBeni.IDBene
    Città.IDCittà uno-a-molti Beni.IDCittà
    Beni.IDBene uno-a-molti UtilizziBeni.IDBene
    TipiUtilizzi.IDTipoUtilizzo uno-a-molti UtilizziBeni.IDTipoUtilizzo
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Questa è la struttura come descritta da te:
    Allegati:
    26310_758ad7c951b2493d0ec1c71b6b34a167.jpg
    26310_758ad7c951b2493d0ec1c71b6b34a167.jpg
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Intanto ti ringrazio per lo sforzo.

    OsvaldoLaviosa ha scritto:


    Gisep ha scritto:


    Vorrei creare una maschera di inserimento dati...
    Questa domanda riguarderà un problema diverso da risolversi nella apposita sezione Access.
    In questa sezione "Progettazione database" discutiamo solo della corretta organizzazione tabelle.
    Allora forse ho sbagliato sezione. Non perchè non mi serva aiuto nella progettazione del database, ma perchè non ho ancora un'idea completa e/o definitiva sulla sua impostazione.. inoltre credo che se dovessi continuare, questo topic dovrebbe cambiare titolo e la richiesta diventerebbe molto più ampia e complessa!

    OsvaldoLaviosa ha scritto:


    In base alle immagini che hai postato, propongo una "mia" idea normalizzata del tuo database. [...]
    A prima vista mi sembra abbastanza complesso. Non che sia un difetto, anzi, come hai fatto notare, adesso è possibile inserire delle variazioni nel tempo di assegnazione ed utilizzo dei beni. Il problema è che a fronte di questa maggior complessità, al momento non mi sembra soddisfi maggiormente le mie necessità (purtroppo queste non vi sono chiare perchè non ho chiarito gli scopi del db); comunque ci rifletterò su per prendere ciò che più può servirmi e adattarlo ai miei obiettivi.

    OsvaldoLaviosa ha scritto:


    Vorrei sapere se il Terreno di 10000mq a Gatteo a mare appartiene soltanto a una Persona oppure può appartenere anche a molti. [...]
    A volte i terreni sono divisi tra più proprietari (per ora espressi nelle colonne "parte", "altri") e/o hanno più coltivazioni (per ora espresse in un solo attributo); non mi sono però ancora preoccupato di questo problema, che è uno dei tanti che ancora questo database possiede.

    Purtroppo devo complicare le cose e a questo punto, per chi interessato ad aiutarmi, descrivere in maniera esaustiva gli scopi del database, per evitare di far perdere altro tempo.


    Il database tenta di strutturare la trascrizione di un apprezzo (un documento di natura fiscale) di origine medievale, dove sono censiti gli abitanti del mio paese nell'anno 1579.

    CONSIDERAZIONE: una volta terminato l'inserimento dei dati, esso non dovrà più essere aggiornato.

    Esso è il frutto di anni di studio da parte di mio padre, che dopo averlo "decifrato" e trascritto su word lo sta migrando su access seguendo fedelmente l'impostazione utilizzata nella stesura. Il mio obiettivo è quello di aiutarlo nell'impostazione del database in maniera funzionale per eseguire vari tipi di interrogazioni e in un secondo momento implementarlo in ambiente GIS per tentare di ricostruire lo stato dei luoghi in quell'anno.

    CONSIDERAZIONE: principali limitazioni saranno le lacune date dal mancato censimento delle "prime case" (non tassate), nonchè dei nobili e degli ecclesiasti (non tassati).

    Nell'apprezzo sono censiti i fuochi (famiglie) identificati con un capofuoco; sono censiti anche gli altri componenti del fuoco.

    TabellaFuochi
    TabellaComponenti

    Quasi sempre i beni sono intestati al capofuoco, ma in alcuni casi anche ai figli (bona dotalia) o ad altri componenti della famiglia.
    I BENI indicano qualsiasi "dote" che concorreva a definire il valore del fuoco per tassarlo di conseguenza: beni materiali mobili e immobili, ma anche le stesse persone (i maschi in età lavorativa) venivano tassate in base alla loro professione.

    TabellaTipologie di beni (animali, annessi rurali, augumenti [ovvero miglioramenti fondiari], capitania [ovvero attrezzi da lavoro, carri, salme d'olio, ...), crediti, debiti, stabili urbani, tassa sulla persona, terreni)

    TabellaBeni

    Ogni bene viene stimato in Ducati e suoi sottomultipli (Tarì, Grana, Cavalli); beni e crediti venivano sommati, i debiti venivano prima sommati e infine sottratti due volte. Ogni fuoco aveva così un valore finale in base al quale veniva tassato.


    Dovrò lavorarci ancora parecchio per normalizzarlo; magari se avete tempo e voglia potete darmi qualche dritta.. se diventa una richiesta troppo generica possiamo anche chiudere il topic.

    Intanto vi allego ancora due immagini su tabelle e relazioni del database allo stato attuale.
    Allegati:
    Fuochi, Componenti, Beni
    Fuochi, Componenti, Beni

    26310_e03a794d8c4f147300b547523a4ab5b2.jpg
    26310_e03a794d8c4f147300b547523a4ab5b2.jpg
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Mi sa che occorre prima imparare un trattato approfondito di "storia medievale" e imparare tutti i termini tecnici di cui hai abbondato.
    Può darsi che le righe/colonne di cui disponi già, dovrebbero svelarti le ripetizioni di dati, e da lì normalizzare. Potresti tentare il tool di Access che si chiama "Analizzatore tabelle" che in maniera relativamente automatica, osserva il contenuto nei campi e fornisce suggerimenti su come normalizzare. Ti consiglio di fare una copia di back up del database e poi tentare questa via che talvolta aiuta, ma non del tutto.
    Io però mi arrendo.
  • Re: Rimando ad una tabella specifica sulla base di un attributo

    Eheheh certo che per fare un database del genere ben normalizzato diventerebbe un software...
    Pensa che ancora tralascio dettagli che complicherebbero ulteriormente la faccenda: ad esempio già solo per i capifuoco (che identificano i fuochi) ci sono 4 categorie:
    -Capifuoco;
    -Bonatenenti: sono coloro che hanno delle proprietà nel territorio ma che non sono ivi residenti;
    -Capifuoco non iscritti nell'apprezzo: Vi sono capifuoco (proprietari) che non risultano iscritti sull’apprezzo (non hanno dichiarato proprietà), però sono individuati come proprietari confinanti ad altre proprietà apprezzate. Per norma avrebbero dovuto essere censiti e iscritti nell’apprezzo;
    -Capifuoco iscritti in fogli mancanti dell'apprezzo.

    Non conoscevo lo strumento analizzatore tabelle, ho fatto una prova veloce sulla tabella BENI ma devo usarlo in modo più ristretto per permettergli di interpretare correttamente le informazioni. Sicuramente potrà essermi utile più in avanti.

    Ci sarebbe da spendere molto tempo per progettare una corretta metodologia per un database che deve tener conto di così tanti fattori e irregolarità; comprendo perciò le ragioni della tua rinuncia ma ti ringrazio ugualmente per il tentativo.

    Come anticipato proverò a fare richieste più mirate per rendere proponibili i tempi per una risposta.
Devi accedere o registrarti per scrivere nel forum
12 risposte