PDA

View Full Version : [Sql - generico]uno a molti


RaouL_BennetH
03-08-2010, 11:01
Ciao a tutti :)

Vorrei il vostro parere su quanto segue:

Tabella Categorie Documenti:
id, descrizione (es.: carta d'identità, passaporto, etc..)

Tabella Persone
classici campi anagrafici.

Adesso, devo gestire il caso in cui una persona disponga di più documenti. Questo caso si verifica, ad esempio, quando questa persona fa una richiesta specifica, tipo:

-può chiedere che gli venga affidata un'autovettura (patente)
-può chiedere di fare delle trasferte all'estero (passaporto)
-può chiedere di avere accesso ad alcune sezioni di una libreria (carta di identità)

Ho pensato quindi di gestire una tabella "documentiPersona" con una relazione alla tabella Persone mediante l'id (persona) e alla tabella categorie documenti mediante la descrizione del documento, avendo quindi una tabella del genere:


personaId
documentoId


Quello che vi chiedo è: considerando che ovviamente in una tabella del genere mi troverò dei valori tipo:


personaId | documentoId
1 5
1 7
1 3


salvo l'estrazione lato GUI di questi dati, mi confermate che è una relazione uno a molti ?

grazie mille :)

RaouL.

anonimizzato
03-08-2010, 13:12
Si è corretto.

Futuregames
03-08-2010, 14:03
corretto tranquillo :)

MEMon
03-08-2010, 22:59
Oppure mettere l'id di persona nella tabella Categoria Documenti...

Albs77
04-08-2010, 10:41
Oppure mettere l'id di persona nella tabella Categoria Documenti...

infatti, meglio se metti la foreign key nella tabella documenti piuttosto che fare una seconda tabella di raccordo tra le due, non ha senso.

nella tabella documenti definisci la chiave primaria come idpersona + id documento.

nuovoUtente86
04-08-2010, 12:27
idpersona + id documento
in questo caso si va a creare, potenzialmente, una relazione molti a molti con ridondanza rispetto ai documenti.

RaouL_BennetH
05-08-2010, 08:59
Buongiorno a tutti :)


Mi spieghereste meglio come mai la disegnereste così come avete suggerito ?


Grazie mille :)

RaouL.

chano
05-08-2010, 23:29
ma scusate......... :confused: a meno che nella tabella persone ci sia una sola tupla quella che ha descritto lui è una relazione molti a molti, perchè anche lo stesso tipo di documento sarà abbinato a più persone, ovvero, più elementi dell'altra tabella...

e anche come l'ha "tradotta" lui nel modello relazionale è il classico tipo di relazione M:N che si realizza con la tabella "intermedia" che contiene gli id degli abbinamenti tra le altre due tabelle.

MEMon
05-08-2010, 23:31
ma scusate......... :confused: a meno che nella tabella persone ci sia una sola tupla quella che ha descritto lui è una relazione molti a molti, perchè anche lo stesso tipo di documento sarà abbinato a più persone, ovvero, più elementi dell'altra tabella...

e anche come l'ha "tradotta" lui nel modello relazionale è il classico tipo di relazione M:N che si realizza con la tabella "intermedia" che contiene gli id degli abbinamenti tra le altre due tabelle.

E' uno a molti: una persona -> molti documenti.

Il documento non è un "tipo di documento", ma è IL documento, quindi ogni record contiene le info di quel documento, che ovviamente è legato unicamente ad una persona.

MEMon
05-08-2010, 23:33
Buongiorno a tutti :)


Mi spieghereste meglio come mai la disegnereste così come avete suggerito ?


Grazie mille :)

RaouL.

La tabella intermedia è il classico esempio di molti a molti, invece te necessiti di una relazione uno a molti.

Con la tabella intermedia, come è già stato detto da nuovoUtente86 puoi ottenere che un documento è legato a più persone e viceversa una persona è legata a più documenti, è questo è potenzialmente pericoloso se non voluto.

chano
06-08-2010, 13:07
E' uno a molti: una persona -> molti documenti.

Il documento non è un "tipo di documento", ma è IL documento, quindi ogni record contiene le info di quel documento, che ovviamente è legato unicamente ad una persona.

aaaaaaaaaahhh avevo visto solo "id, descrizione" pensavo fossero i tipi... chiedo venia! :fagiano:

allora quoto sul mettere l'id della persona nella tabella dei documenti, senza la tabella "intermedia" :D