Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Quanto pesano i default constraint?
martedì 26 agosto 2008 - 15.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Fabrizio70
Profilo
| Newbie
17
messaggi | Data Invio:
mar 26 ago 2008 - 15:23
Tanto, visto che sono nuovo, ciao a tutti e complimenti!
Secondo voi quanto pesano i constraint nell'economia di un database? Cioè a senso inserire un vincolo per attribuire un valore di default a qualunque campo della base dati in modo da eliminare "l'antipatico" problema del null, sopratutto quando si lavora con una base dati di più di 10.000 campi?
In azienda c'è chi spinge verso questa strada, che non mi convince per molto...
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 26 ago 2008 - 21:22
>Tanto, visto che sono nuovo, ciao a tutti e complimenti!
Ciao Fabrizio,
Benvenuto sui forum di DNH
>Secondo voi quanto pesano i constraint nell'economia di un database?
>Cioè a senso inserire un vincolo per attribuire un valore di
>default a qualunque campo della base dati in modo da eliminare
>"l'antipatico" problema del null, sopratutto quando si lavora
>con una base dati di più di 10.000 campi?
Per quanto riguarda il "peso" in senso stretto, ti posso dire che in pratica non pesano niente dato che vengono chiamati in causa esclusivamente nelle operazioni di INSERT quando non viene specificato alcun valore per una colonna; se invece parliamo di eliminare "l'antipatico" problema del null, i default servono a poco in quanto è sufficiente specificare esplicitamente NULL oppure eseguire un successivo UPDATE per vanificare tutti i tuoi sforzi
L'unico modo per rendere una colonna immune dalla possibilità di essere valorizzata a NULL, è... definirla NOT NULL
>In azienda c'è chi spinge verso questa strada, che non mi convince
>per molto...
Neanche me
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Fabrizio70
Profilo
| Newbie
17
messaggi | Data Invio:
mer 27 ago 2008 - 09:10
Grazie molte.
Fabrizio70
Profilo
| Newbie
17
messaggi | Data Invio:
mar 2 set 2008 - 10:42
>>Tanto, visto che sono nuovo, ciao a tutti e complimenti!
>
>Ciao Fabrizio,
>
>Benvenuto sui forum di DNH
>
>>Secondo voi quanto pesano i constraint nell'economia di un database?
>>Cioè a senso inserire un vincolo per attribuire un valore di
>>default a qualunque campo della base dati in modo da eliminare
>>"l'antipatico" problema del null, sopratutto quando si lavora
>>con una base dati di più di 10.000 campi?
>Per quanto riguarda il "peso" in senso stretto, ti posso dire
>che in pratica non pesano niente dato che vengono chiamati in
>causa esclusivamente nelle operazioni di INSERT quando non viene
>specificato alcun valore per una colonna; se invece parliamo
>di eliminare "l'antipatico" problema del null, i default servono
>a poco in quanto è sufficiente specificare esplicitamente NULL
>oppure eseguire un successivo UPDATE per vanificare tutti i tuoi
>sforzi
>L'unico modo per rendere una colonna immune dalla possibilità
>di essere valorizzata a NULL, è... definirla NOT NULL
>
>>In azienda c'è chi spinge verso questa strada, che non mi convince
>>per molto...
>Neanche me
>
>>Grazie
>Prego.
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>
http://blogs.dotnethell.it/lorenzo/
>
http://italy.mvps.org
Scusa se ti rompo... ma visto che scrivi che neppure a te convince molto la scelta di portare i constraint su tutta la base dati... che argomentazioni porteresti?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 2 set 2008 - 10:53
>Scusa se ti rompo... ma visto che scrivi che neppure a te convince
>molto la scelta di portare i constraint su tutta la base dati...
>che argomentazioni porteresti?
Non ho affermato questo, ho semplicemente detto che i default non risolvono il problema della nullability delle colonne.
Mi è parso di aver capito che i default fossero stati proposti come "soluzione" al problema
Ripeto, se non volete gestire il NULL, definite la colonne come NOT NULL, altrimenti gestitelo lato client come è giusto che sia.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Fabrizio70
Profilo
| Newbie
17
messaggi | Data Invio:
mar 2 set 2008 - 11:01
allora sono io che ho capito male
E' evidente che le strade sono due. Se la colonna è definita NOT NULL o inserisci un constraint o gestisci il NULL lato applicativo.
Qui il punto è che si vuole utilizzare un constraint per dimenticarsi il NULL lato applicativo, con l'accortezza di attribuire un valore di default a tutto il pregresso di dati cioè, ai vecchi dati viene tolto il NULL con una query, a quelli nuovi ci pensa il constraint.
Quello che a me non convince è il NULL su tutti i dati...
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 2 set 2008 - 11:11
>E' evidente che le strade sono due. Se la colonna è definita
>NOT NULL o inserisci un constraint o gestisci il NULL lato applicativo.
Se la colonna è definita come NOT NULL non potrà mai assumere il (non)valore NULL, quindi non serve gestire il NULL applicativamente.
I default puoi metterli o non metterli (nel caso in cui in fase di INSERT specifichi sempre un valore).
>Qui il punto è che si vuole utilizzare un constraint per dimenticarsi
>il NULL lato applicativo, con l'accortezza di attribuire un valore
>di default a tutto il pregresso di dati cioè, ai vecchi dati
>viene tolto il NULL con una query, a quelli nuovi ci pensa il
>constraint.
E se un comando di INSERT o UPDATE va a valorizzare esplicitamente la colonna a NULL? Il default viene allegramente "bypassato"
>Quello che a me non convince è il NULL su tutti i dati...
Questo è un discorso di progettazione della base dati. Alcuni puristi definiscono tutto NOT NULL, io cerco di usare la ragione: se in una tabella ho un numero *limitato* di colonne che possono non essere valorizzate (che ne so, tipo gli Interessi in una anagrafica) non assegno un default (stringa nulla o altro) ma le definisco come NULL.
Lato applicativo dovrò gestire opportunamente il NULL per tali colonne.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !