[sql] Una chiave esterna può essere NULL e / o duplicata?


Answers

1 - Sì, almeno da SQL Server 2000.

2 - Sì, a condizione che non sia un vincolo UNIQUE o collegato a un indice univoco.

Question

Per favore chiarisci due cose per me:

  1. Una chiave esterna può essere NULL?
  2. Una chiave esterna può essere duplicata?

Per quanto io sappia, NULL non dovrebbe essere usato in chiavi esterne, ma in alcune mie applicazioni sono in grado di inserire NULL sia in Oracle che in SQL Server, e non so perché.




Penso che sia meglio considerare la possibile cardinalità che abbiamo nelle tabelle. Possiamo avere una cardinalità minima pari a zero. Quando è facoltativo, la minima partecipazione di tuple dalla tabella correlata potrebbe essere zero, Ora si deve affrontare la necessità che valori di chiavi esterne siano consentiti come null.

Ma la risposta è che tutto dipende dal Business.




Sì, la chiave esterna può essere nullo come detto sopra dai programmatori senior ... Vorrei aggiungere un altro scenario in cui la chiave esterna deve essere nullo .... supponiamo di avere commenti sulle tabelle, Immagini e video in un'applicazione che consente commenti sulle immagini e video. Nella tabella dei commenti possiamo avere due immagini esterne Keys e VideoId insieme alla chiave primaria CommentoId. Quindi, quando commentate un video, solo VideoId sarebbe richiesto e pictureId sarebbe nullo ... e se commentate un'immagine, sarebbe necessario PictureId e VideoId sarebbe nullo ...




Per impostazione predefinita non ci sono vincoli sulla chiave esterna, la chiave esterna può essere nullo e duplicato.

durante la creazione di una tabella / modifica della tabella, se si aggiunge un vincolo di unicità o non null, solo questo non consentirà i valori null / duplicati.




Related