Domanda da neofita : rubrica con diverse tipologia contatto

pitopito

Nuovo Utente
25 Lug 2012
4
0
0
Buongiorno a tutti,

dovrei creare un DB Rubrica in cui alcuni tipi di informazioni, per ogni persona inserita varia come a seconda della tipologia della persona inserita. Vi saranno quindi dei campi "comuni" come nome, cognome, data di nascita etc ma altre informazioni saranno specifiche e afferenti alla TIPOLOGIA ed esempio amico, collega, collega E amico, cliente, per cui se la persona e' Cliente ci dovranno essere informazioni tipo "Azienda", "Partita IVA" etc se e' collega altre informazioni tipo "Piano", "Livello", "reparto" etc.

Orbene. Come posso creare un DataBase progettato secondo i "sacri crismi" e quindi (suppongo) senza creare 3 diverse tabelle amico, collega e cliente?
Devo creare una tabella di "minima" (ad esempio "persona") e poi mettere un campo con "tipologia" e poi relazionrla con tabelle specifiche con i dati di "amico", "collega" e "cliente"? se si mi potete fare un esempi di come fare?

Grazie mille!
 
Dipende da quello che vuoi fare tu in seguito.
Un qualcosa di ben organizzato sarebbe fare:
1 tabella RUBRICA (id, nome, cognome, Data_nascita);
1 tabella TIPOLOGIA Collegata a rubrica con l'id della tipologia. Essa è collegata ad altre 3 tabelle:
AMICI, COLLEGHI, CLIENTI. In ognuna di queste ci sono i campi specifici di ogni categoria.

Un altro modo sarebbe quello di fare Un'unica tabella RUBRICA nella quale metti tutti i campi possibili ma non obbligatori. Quindi tu, in base alla tipologia di contatto (amico, cliente o collega) fai compilare un form diverso. Ovviamente ci deve essere un campo 'tipologia' in questa tabella dove vai a salvare il tipo di contatto.

Personalmente io farei come nel secondo modo. Aspettiamo altre risposte che non vengano da un sonnambulo come me :)
 
ciao
facendo col metodo che consigli (tabella unica) perdi i vantaggi di un db relazionale (es mysql) e rischi di avere una tabella ridondante.
senza contare i possibili errori es. se la tabella unica è
id | nome | tipologia
quando fai l'inserimento può capitare (molto possibile)
1 | pinco | amico
2 | pallino | amico
....
203 | sempronio | amio
....
se cerchi i tipi amico, sempronio non verrà mai fuori
quindi è meglio come minimo due tabelle
tab. tipologia
id | tipo | altri campi se necessari

tab. elenco
id | id_tipo | nome | cognome ecc...

quindi quando si pensa ad un db (tabelle) es:
1. quali sono i dati che devo inserire? da cui i campi possibili
2. il record che si genera ha campi ridondanti?
2.1. SI : faccio due tabelle (affinando poi possono diventare tre, quattro....)
2.2. NO : posso fare una tabella unica

p.s.
carta e matita sono, per me, due strumenti essenziali da usare prima di costruire le tabelle di un db
 
Infatti il mio intento e' proprio quello di impratichirmi a stabilire le relazioni tra le tabelle, piu' che avere la rubrica...

A livello concettuale le tabelle dovrebbero essere :
- Anagrafica (ID, Nome, Cognome, etc)
- Tipologia (ID, Tipo) in cui inserire amico, collega, etc

Poi 2 tabelle (se consideriamo solo la tipologia amico e collega) in cui specifichiamo il tipo di info "utili" :
- Info_amico (ID, TipoInfo) in cui inserire ad esempio "squadra_del_cuore, Film_Preferito etc"
- Info_Collega (ID, TipoInfo) in cui inserire ad esempio "reparto, piano etc"

e poi una tabella in cui vengono raccolte tutte le info, relative alla persona e che si riferisce ovviamente alla chiave primaria ID dell'anagrafica.

Secondo voi ha senso?
 
Dipende da quello che vuoi fare tu in seguito.
Un qualcosa di ben organizzato sarebbe fare:
1 tabella RUBRICA (id, nome, cognome, Data_nascita);
1 tabella TIPOLOGIA Collegata a rubrica con l'id della tipologia. Essa è collegata ad altre 3 tabelle:
AMICI, COLLEGHI, CLIENTI. In ognuna di queste ci sono i campi specifici di ogni categoria.

Un altro modo sarebbe quello di fare Un'unica tabella RUBRICA nella quale metti tutti i campi possibili ma non obbligatori. Quindi tu, in base alla tipologia di contatto (amico, cliente o collega) fai compilare un form diverso. Ovviamente ci deve essere un campo 'tipologia' in questa tabella dove vai a salvare il tipo di contatto.

Personalmente io farei come nel secondo modo. Aspettiamo altre risposte che non vengano da un sonnambulo come me :)
La prima soluzione mi sembra la piu' "pulita" anche se un po' piu' ostica ed e' quella che mi piacerebbe implementare...proprio per impratichirmi com le relazioni e la progettazione "su carta" :)
pero' nel primo caso...per memorizzare i dati relativi a quella entry nella rubrica, devo creare un'altra tabella ad es. INFO collegata alla tabella RUBRICA vero?
 
Edit:
Avevo fatto un ragionamento in quanto pensavo di ver trovato ridondanza alla prima soluzione per poi rendermi conto che era sbagliato.

Riguardo l'ulteriore tabella per inserire altre info sull'utente mi sembra inutile in quanto puoi mettere i campi in Anagrafica.
 
Ultima modifica:

Discussioni simili