Newsgroup: it.comp.software.database
Titolo: Domandina da neofita... (postgres)

Ciao a tutti
Scusate, avrei una domanda da fare, purtroppo i tempi corrono e non ho tempo 
per approfondire da solo quindi spero nel vostro buon cuore :)
una reference key puo' assumere valore null senza violare l'integrita' 
referenziale? č buona usanza o no?
Grazie! 

 referenziale? č buona usanza o no?
Una chiave ha SEMPRE il vincolo NOT NULL :-)
Al limite, se č un char, puň essere uguale a "" (che non č NULL)
-- 
Fabrizio "Hermooz" Ermini

 Una chiave ha SEMPRE il vincolo NOT NULL :-)
volevo dire foreign key, quindi non una chiave primaria... vale lo stesso il 
discorso? 

 discorso? 
Una foreign key č un riferimento a una chiave di un'altra tabella... la 
quale, se č chiave, dovrą essere not null :-)
Ergo anche la foreign key non potrą essere null...
(NB: sto parlando di teoria, non di limitazioni tecniche...)
-- 
Fabrizio "Hermooz" Ermini

(NB: sto parlando di teoria, non di limitazioni tecniche...)
Infatti in pratica puo' essere NULL.
Tra l'altro, come riportato nella documentazione di CREATE TABLE,
una delle possibili azioni in ON DELETE e' SET NULL.
Poi, sempre per la gestione dei valori NULL, ci sono i comandi
MATCH FULL e MATCH SIMPLE.
Saluti  Manlio Perillo

 Ergo anche la foreign key non potrà essere null...
Perchè? Io uso una fk quando voglio che in quell'attributo ci siano solo 
valori che si referenzino ad un altra tabella (in cui appunto quella chiave 
è primaria), ma se tale valore è null (nella tab in cui è fk ovviamente) in 
teoria non rompo nessun vincolo di integrita' referenziale, o sbaglio? 

 (NB: sto parlando di teoria, non di limitazioni tecniche...)
Anche in teoria: la fk viene verificata solo se valorizzata, se non 
valorizzata significa che non c'è nulla da verificare. Ricordo che NULL 
non è un valore.

 non è un valore.
Ma il mio dubbio è: ha senso mettere su un campo una FK e poi ammettere 
che assuma valori nulli?
Onde evitare equivoci mi ripeto: non sto parlando di stretta osservanza 
delle grammatiche, ma di "best practice"...
-- 
Fabrizio "Hermooz" Ermini

 che assuma valori nulli?
Certo, perchč no? Per tutti i casi in cui l'attributo in fk non č 
obbligatorio. Mi pare una esigenza abbastanza comune.

 obbligatorio. Mi pare una esigenza abbastanza comune.
Ribadisco ancora che non voglio far polemica, ma solo scambiare 
esperienze (saro' palloso, ma sugli NG capita fin troppo spesso di 
scatenare flame non volute ;-)), però non riesco a capire quando può 
essere davvero vantaggioso fare così. Io di solito se ho un campo del 
quale non posso controllare i valori (tipo se è importato da un altro 
DB, da un file, ecc.) allore piuttosto evito direttamente di definirlo 
FK; se è un campo che invece per un motivo o per l'altro devo 
assicurarmi che rispetti l'integrità referenziale, semplicemente 
aggiungo alla lista delle chiavi puntate dalla FK un valore da 
utilizzare esplicitamente per i casi in cui non c'e' un corrispettivo 
"normale" (aka la classica opzione "altro" nelle caselle a discesa, 
insomma).
Tanto per capire, a quali casistiche ti riferisci come esempi per cui 
modellare una FK con valori null è opportuno?
-- 
Fabrizio "Hermooz" Ermini

 modellare una FK con valori null è opportuno?
Scusa, ma sinceramente tutto cio' mi fa capire che tu non sia molto pratico 
nella materia. E purtroppo te lo dice
uno poco esperto come me.
Esempio: ho una tabella "facolta'" con la lista di tutti i tipi di facolta' 
di una universita': giurisprudenza, ingegneria etc
Ho un altra tabella "professori" che ha come attributo la facolta' a cui 
appartiene, che sara' chiaramente una fk alla tabella "facolta'".
Ora, nel caso un professore sia "esterno", o "mercenario" o qualsiasi altra 
cosa, tale fk avra' valore null, ma cio' non toglie che se deve assumere un 
valore non null deve rispettare l'integrita' referenziale e riferirsi ad una 
facolta' presente nella tabella ononima.
Cmq se dico cazzate correggetemi, come ho detto non sono esperto 

 uno poco esperto come me.
Beh, c'e' sempre da imparare, no?
Poi quando verrà il giorno che si potranno fare discussioni tecniche su 
Usenet senza sentire il bisogno di inferire conclusioni sulla levatezza 
degli interlocutori, probabilmente casherà il mondo ;-E
-- 
Fabrizio "Hermooz" Ermini

 ha scritto nel messaggio 
news:3iil6mF...@individual.net...

Hai ragione, sono stato a dir poco scortese... è che oggi mi girano le 
palle...
Ti faccio le mie scuse, non avevo il diritto di insinuare niente, senza 
rancore spero!
:(
Ciao ciao 

 palle...
Nessunissimo problema, figurati. A rileggerci a presto su questi schermi ;-)
-- 
Fabrizio "Hermooz" Ermini