Codice descrizione

venerdì 14 novembre 2008 - 10.26

seanmhall Profilo | Newbie

Ciao gente,
cercavo approfondimenti (senza esito positivo) su un argomento semplice, ma importante: come struttura in maniera intelligente in un database una tabella generica per la gestione dei codice/descrizione che poi serviranno in tutte le altre tabelle.

Es (solo perchè mi spiego male)

una tabella utenti con un campo idTipoUtente
una tabella articolo con un campo idTipoArticolo

ecco vorrei una tabella unica per gesitre i vari idTipo/descrizione

idee?

grazie,
Sean

alx_81 Profilo | Guru

>Ciao gente,
Ciao!

>cercavo approfondimenti (senza esito positivo) su un argomento
>semplice, ma importante: come struttura in maniera intelligente
>in un database una tabella generica per la gestione dei codice/descrizione
>che poi serviranno in tutte le altre tabelle.
>idee?
Posso dirti la strada che di solito seguo io.
Innanzitutto, tutto quello che definisce un tipo (un dominio di valori ammessi per una particolare colonna) è una tabella con una chiave surrogata. E quindi ID - DESCRIZIONE.
L'id NON è autoincrementante, poichè molto spesso corrisponde all'indice di un ENUM che userò a livello applicativo.
Prendi l'esempio degli stati di un ordine:

Evaso = 1
Impegnato = 2
InAttesa = 3
...

ID - DESCRIZIONE in tabella
e Enum relativo nel mio CSharp..

Poi, potresti seguire due strade per la scelta del nome dei campi:

1) Usare sempre gli stessi per generarti un template e manutenere più facilmente il codice delle tue Stored Procedure / Query.

ID
Descrizione

2) Usare nomi esplicativi per dare più chiarezza

IDStato
Stato

Con lo stesso nome, il codice è più ripetibile, ma servono alias per capire meglio il codice.
Con nome parlante, il codice è già di suo parlante..

>grazie,
Di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

seanmhall Profilo | Newbie

Forse non ho capito il tuo messaggio del tutto. Ma allora tu crei tante tabelle quanti sono gli elenchi chiave/descrizione che ti serviranno?

ed tabella statiOrdine, tabella tipiUtente etc?

Io vorrei qualcosa di più elastico e svincolato dal codice, sempre che non abbia frainteso la tua risposta...

Grazie,
Sean

p.s. lo scopo ultimo di questo mio sistema è fare in modo che gli elenchi siano N e si possano usare in N tabelle su N campi data per buona l'esistenza di una tabella di incroci (non penso di poterne fare a meno) fra tabelle, campi ed elenchi...spero di essere stato chiaro, ma ho i miei dubbi :-)

alx_81 Profilo | Guru

>Forse non ho capito il tuo messaggio del tutto. Ma allora tu
>crei tante tabelle quanti sono gli elenchi chiave/descrizione
>che ti serviranno?
Certo! Normalizzazione

>Io vorrei qualcosa di più elastico e svincolato dal codice, sempre
>che non abbia frainteso la tua risposta...
Gli ultimi sistemi a domini multipli su di una tabella, li ho visti su AS400..
E su un sql mi sembra bruttino farlo.. alcuni database di cms sono costretti a seguire quella via..
Ma se puoi modellare, sinceramente terrei separato il tutto..
Mi viene comoda l'associazione con l'entità che poi utilizzerà anche l'applicazione...

>p.s. lo scopo ultimo di questo mio sistema è fare in modo che
>gli elenchi siano N e si possano usare in N tabelle su N campi
>data per buona l'esistenza di una tabella di incroci (non penso
>di poterne fare a meno) fra tabelle, campi ed elenchi...spero
>di essere stato chiaro, ma ho i miei dubbi :-)
Eh se sei costretto a farti un tabellone, fattelo pure..
Dipende anche dal sistema che devi implementare.
Ripeto, se puoi modellare è meglio..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

seanmhall Profilo | Newbie

Grazie mille, mi serviva un altro punto di vista e hai colto nel segno!

Grazie,
Sean
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5