Come associare allo stesso campo piu'record?

martedì 22 luglio 2008 - 13.45

jacopominelli Profilo | Newbie

Un esempio rendera' piu facile la comprensione del mio problema:
Ho un persona alla quale voglio associare la lingua parlata. Ovviamente ciascuna persona potra parlare piu lingue. Come faccio?
Potrei fare lingua 1,2,3, ecc..ma poi construendo un form di ricerca avro problemi perche se uno cerchera Italiano come lingua 1, e questapero sara in lingua 2,non si otterra il risultato. Spero di essere stato chiaro, scusate il mio italiano e grazie a chiunque rispondera'.

lbenaglia Profilo | Guru

>Ho un persona alla quale voglio associare la lingua parlata.
>Ovviamente ciascuna persona potra parlare piu lingue. Come faccio?

Devi mettere in relazione molti-a-molti la tabella delle persone con quella delle lingue, definendo una tabella intermedia di correlazione la cui PK è data dalle PK delle due tabelle:

+-----------+ +---------------+ +-------------+ | Persone | | LinguaParlata | | Lingue | +-----------+ +---------------+ +-------------+ PK | PersonaID | -> PK | PersonaID | +-- PK | LinguaID | | Nome | PK | LinguaID | <--+ | Descrizione | | Cognome | +---------------+ +-------------+ | ... | +-----------+

>Potrei fare lingua 1,2,3, ecc..ma poi construendo un form di
>ricerca avro problemi perche se uno cerchera Italiano come lingua
>1, e questapero sara in lingua 2,non si otterra il risultato.
>Spero di essere stato chiaro, scusate il mio italiano e grazie
>a chiunque rispondera'.
Mi spiace, ma non ti seguo nel ragionamento

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Dainesi Profilo | Senior Member

Benaglia ti ha saggiamente indicato la via della normalizzazione dei dati. Inserire un campo Lingua1, 2, ecc. non risolve ma complica. Semmai, nella tabella "Lingue parlate" inserisci un campo bit "Madrelingua" ed eventualmente un indicatole di livello (5 per Ottimo, 4 per Buono, ecc...)

jacopominelli Profilo | Newbie

OK, molte grazie, sono riuscito, sei stato davvero utile.
Ad ogni modo, adesso ho un altro problema. La struttura, e' questa: ad ogni nome e'associato un ambito(che puo essere impresariale,accademico o politico)e poi diverse lingue(come mi hai insegnato tu). Vorrei, quando eseguo una ricerca da una form, che si producesse un risultato singolo per ogni nome, e non(nel caso sapesse tre lingue)3 record con lo stesso nome, come fare?

lbenaglia Profilo | Guru

>ad ogni nome e'associato un ambito(che puo essere impresariale,accademico
>o politico)e poi diverse lingue(come mi hai insegnato tu).
Quindi hai una relazione 1-a-molti tra le tabelle Ambiti e Persone?

>Vorrei, quando eseguo una ricerca da una form, che si producesse un risultato
>singolo per ogni nome, e non(nel caso sapesse tre lingue)3 record
>con lo stesso nome, come fare?
Eh, non puoi. Se vuoi interrogare anche le tabelle LinguaParlata e Lingue troverai 1 riga per ogni lingua parlata.
Se vuoi solo 1 riga devi decidere quale lingua considerare...

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5