Tabella anagrafe (doppia ???)

di il
12 risposte

Tabella anagrafe (doppia ???)

Ciao a tutti,
in altre occasioni sono ricorso all’aiuto del forum per diversi problemi.
Ora mi trovo di fronte a qualcosa (ancora una volta) di nuovo e cioè:
voglio realizzare una tabella Eventi nella quale tra le altre cose (Data, ora, ecc.) devo andare a mettere anche un’anagrafica e qui mi si è posto un problema. Premetto che il tutto finalizza una stampa unione in Word. All’interno di alcuni dei documenti che prelevando i dati dal db compilano un documento Word può capitare di avere due o più persone diverse, come faccio a realizzare la presenza nel db di più persone?
Credo che la cosa più giusta dovrebbe essere quella di avere una tabella Eventi e una tabella Persone e poi una terza nella quale indicare la Tipologia di Persone. Tipologia perché in un documento potrei avere (per esempio) il signor Bianchi Mario che è il locatore di un veicolo mentre il signor Rossi Paolo è il garante. Non ho idea però di come fare.
Per me lo schema dovrebbe essere.
TEventi
IDEvento (contatore)
Evento (testo)
IDPersona (numero)

TPersona (contatore)
Cognome (testo)
Come (testo)
NatoA (testo)
Ecc.
IDTipologia(numero)

TTipologia (contatore)
Tipologia (testo)

Circa le relazioni dovrebbero essere una-a-molti.
Che ne dite ?

12 Risposte

  • Re: Tabella anagrafe (doppia ???)

    Scusa, mi pare che tu stia mischiando nomi di tabelle con nomi di campi (una tabella non può essere un contatore).

    Nella tabella TPersona hai tralasciato IDPersona (contatore, PrimaryKey), altrimenti come fai discriminare eventuali omonimi?

    Per la tabella TEventi devi prevedere una seconda tabella 'figlia' TEventiPersone che conterrà <n> righe quante sono le persone coinvolte, ed i rispettivi 'ruoli' (clienti, locatore, garante, ...)
  • Re: Tabella anagrafe (doppia ???)

    Ciao Gibra,
    grazie intanto. Si ho sbagliato nella tabella Persone a indicare l'ID. Ovviamente diventa TPersone con ID (contatore).
    Non ho capito cosa invece devo fare con ...

    Per la tabella TEventi devi prevedere una seconda tabella 'figlia' TEventiPersone che conterrà <n> righe quante sono le persone coinvolte, ed i rispettivi 'ruoli' (clienti, locatore, garante, ...)


    Io pensavo di legare la tabella TTipologia con TPersona mettendo in quest'ultima un campo (ricerca) che andasse a prelevare da TTipologia i ruoli.
    Così non va ?
  • Re: Tabella anagrafe (doppia ???)

    La tabella di congiunzione (il cui nome TTipologie mi sembra infelice...io propongo DettagliEventi) deve avere i seguenti campi:
    IDDettaglio (numerazione automatica, PK)
    IDPersona (numerico, FK)
    Ruolo (testo)
    IDEvento (numerico, FK)

    Se pensi di avere dei Ruoli che "tutto sommato" sono sempre gli stessi, prevedi anche una tabella Ruoli con un solo campo Ruolo (testo, PK). Poi relazione Ruoli.Ruolo uno-a-molti DettagliEventi.Ruolo.
  • Re: Tabella anagrafe (doppia ???)

    Osvaldo, guarda che la tabella TTipologie è un'anagrafica dei tipi di evento.
    Non è la tabella dei dettagli.
    Caso mai dovrebbe chiamarsi TTipologieEvento
  • Re: Tabella anagrafe (doppia ???)

    mazda91 ha scritto:


    Per la tabella TEventi devi prevedere una seconda tabella 'figlia' TEventiPersone che conterrà <n> righe quante sono le persone coinvolte, ed i rispettivi 'ruoli' (clienti, locatore, garante, ...)


    Io pensavo di legare la tabella TTipologia con TPersona mettendo in quest'ultima un campo (ricerca) che andasse a prelevare da TTipologia i ruoli.
    Così non va ?
    No, non va bene.
    Se tu hai 'diverse' persone oltretutto con ruoli differenti, devi gestirli in una tabella 'figlia'.
    Altrimenti come fai a definirli tutti?
    Dovresti essere costretto a creare tanti campi quanti sono i possibili ruoli di ogni persona; se un domani si crea un nuovo ruolo diventa necessario creare un nuovo campo, e ciò implica la modifica strutturale del database e dell'intefaccia.
    Invece usando la tabella 'figlia' puoi elencare quanti ruoli vuoi senza limiti. Basta aggiungere il 'ruolo' nella tabella TTipologie.


    E' lo stesso concetto della tabella Recapiti, in cui si tengono telefono, cell., fax, indirizzo, sito web, ecc. ecc. ecc. dei clienti.
    Come fai a sapere a proprio quanti cellulari, telefoni, ecc. servono? Non puoi. Ecco allora che serve una tabella Recapiti in cui per lo stesso cliente puoi tenere un numero illimitato di recapiti senza preoccuparti di nulla.
    L'importante è avere una tabella Tipologie che permettono di selezionare solo i contatti di un certo tipo.
  • Re: Tabella anagrafe (doppia ???)

    In sostanza, un Evento può avere più Persone; queste persone - però - non sono tutte uguali (altrimenti come le identifico per il ruolo che hanno ?).
    Una volta che richiamo i dati da immettere in word dovrò fare in modo che (per esempio) Cognome e nome nel caso del garante vadano nel campo apposito ma non in quello di chi ha pagato il conto o che sia. Penso che sia quello che Gibra suggerisce di gestire nella tabella Figlia, giusto ?
  • Re: Tabella anagrafe (doppia ???)

    Può darsi che non ho capito il significato della tabella di congiunzione e pure di cosa parla il database, ma ritengo (dovremmo essere tutti d'accordo) che la lista campi sia questa:

    OsvaldoLaviosa ha scritto:


    IDDettaglio (numerazione automatica, PK)
    IDPersona (numerico, FK)
    Ruolo (testo)
    IDEvento (numerico, FK)
    Un Evento avrà molte Persone con relativi Ruoli. Una Persona può partecipare a molti Eventi.
  • Re: Tabella anagrafe (doppia ???)

    Ciao Osvaldo,
    circa il campo ruolo siccome le possibilità sono 4 conviene (come già dicevi tu) di farlo come tipo Numerico.
    Il db si riferisce a una ditta che fa soccorso stradale, quindi cosa succede (esempio)
    il giorno XXX alle ore XXX traina il veicolo XXX conducente YYYY proprietario YYY e lo porta da YYY. Come avrai capito le YYYY sono tutte persone ma non è detto che ci siano sempre tutte. Per evitare di avere un record con alcuni campi vuoti vorrei costruire la struttura indicata. Altrimenti dovrei indicare Persona1, Persona2 e Persona3. La cosa non mi pare abbia grande senso ma stento a realizzarla. Soprattutto immaginando come fare per creare poi l'immissione dati per queste 3 persone.
  • Re: Tabella anagrafe (doppia ???)

    mazda91 ha scritto:


    circa il campo ruolo siccome le possibilità sono 4 conviene (come già dicevi tu) di farlo come tipo Numerico.
    La prassi progettuale prevede che le relazioni avvengano generalmente fra campo IDPK--->IDFK. Il primo Contatore, il secondo Numerico.
    Se preferisci ragionare sempre così per paura di sbagliare, che così sia. Allora prevedi un campo IDRuolo (numerico) e la tabella Ruoli con i campi:
    IDRuolo (contatore, chiave primaria)
    Ruolo (testo)
    Relazione Ruoli.IDRuolo uno-a-molti TabellaCongiunzione.IDRuolo

    Io, semplicemente, quando fiuto che un campo testo sarà certamente univoco, preferisco eleggerlo come chiave primaria direttamente.

    mazda91 ha scritto:


    Il db si riferisce a una ditta che fa soccorso stradale, quindi cosa succede (esempio)
    il giorno XXX alle ore XXX traina il veicolo XXX conducente YYYY proprietario YYY e lo porta da YYY. Come avrai capito le YYYY sono tutte persone ma non è detto che ci siano sempre tutte. Per evitare di avere un record con alcuni campi vuoti vorrei costruire la struttura indicata. Altrimenti dovrei indicare Persona1, Persona2 e Persona3.
    OK. Hai capito bene.
  • Re: Tabella anagrafe (doppia ???)

    Ora Osvaldo,
    ti chiedo (non mandandomi a quel paese) ... visto che la struttura è fatta, il passo successivo è creare la maschera Evento e fin qui tutto procede ma come vi aggiungo le persone ?
    Sottomaschera ?
    Tutto sommato se le tabelle non le popolo non mi è possibile capire se tutto gira per poi partire con la stampa unione.
    Ancora grazie e ciao
  • Re: Tabella anagrafe (doppia ???)

    Sottomaschera sicuramente.
    Forse intuisco una tua possibile preoccupazione progettuale. A te interessa partire da Eventi. Per ogni Evento vuoi vedere le 2-3-4 Persone con i Ruoli che vi hanno partecipato. Trattandosi di così pochi, vorresti anche vederli tutti insieme "se possibile".
    Quello che non ci dici è se maschera Eventi la vuoi come "maschera singola" oppure "maschera continua".
    Con maschera singola avresti la classica visualizzazione maschera/sottomaschera Eventi/Partecipanti: no problem.
    Con la maschera continua, tu vorresti vedere gli Eventi "quasi in verticale", "quasi elencati" e anche qui poter vedere al volo i 2-3-4- Partecipanti. In quest'ultimo caso prevedi dei record da maschera continua nè troppo stretti stile foglio dati se no non vedi i Partecipanti, nè troppo larga verticalmente, altrimenti perdi il senso della visualizzazione verticale.

    Come vedi la discussione sta dilagando su altri argomenti. Apri un nuovo thread.
  • Re: Tabella anagrafe (doppia ???)

    OK Osvaldo,
    sembra anche a me sia il caso di aprire un nuovo thread.
    Ciao
Devi accedere o registrarti per scrivere nel forum
12 risposte