Una tabella senza chiave primaria è normalizzata?


9

Durante una lezione, il mio professore ci mostrò un tavolo senza chiave primaria. Su interrogatorio, ha detto che in 3NF quando si rimuovono le dipendenze transitive va bene avere una tabella senza una chiave primaria.

Tuttavia, nessuna chiave primaria implica che non vi siano dipendenze funzionali, ma 3NF è la rimozione delle dipendenze transitive e mi è stato insegnato che ogni tabella deve avere una chiave primaria per la normalizzazione poiché si tratta di dipendenze funzionali.

So che è possibile creare una tabella senza una chiave primaria, ma quel database è considerato normalizzato se esiste quella tabella?

Dovrei aggiungere, la tabella non ha alcuna "chiave univoca", né primaria, né composita, né estranea.

La tabella mostrata ha tre attributi senza nessuno dei quali etichettati come primari o unici. Ho chiesto se fosse un errore e mi ha detto che va bene non averne uno. Ho messo in dubbio l'osservazione in quanto nessuna delle informazioni nella tabella può essere identificata in modo univoco e ha affermato che va bene essere così. Questo va contro ciò che mi è stato insegnato sulla normalizzazione.

Risposte:


15

Se una relazione non ha una chiave candidata (e la chiave primaria è solo una delle chiavi candidate), allora può avere righe duplicate, quindi in realtà non è una relazione! (poiché le relazioni sono sempre impostate).

In tal caso, è più corretto chiamarlo una tabella, non una relazione, come hai fatto nella tua domanda, e notare che diversi RDBMS in effetti possono gestire le non-relazioni, consentendo le tabelle senza alcun vincolo di unicità, anche se questo caso è molto raro e produce problemi (anomalie) quando si opera sui dati.

Ma in questo caso parlare di forme normali non è appropriato: tutta la teoria della normalizzazione si basa sul presupposto fondamentale che gli oggetti di interesse siano relazioni , non multiset. In realtà questa teoria si basa sull'assunto (un po 'discusso) di relazione universale, che presuppone che tutte le relazioni di un database siano un sottoinsieme di una proiezione di tale relazione, che contiene tutti gli attributi in ogni relazione. E quell'oggetto è in realtà una relazione (cioè un insieme), non un multiset.

Il fatto che, quando si parla di dati del Modello di dati relazionali, a volte scambiamo i due termini, tabelle e relazioni, non significa che siano in realtà sinonimo, e questa differenza è fondamentale quando parliamo di teoria della normalizzazione. Ricorda che nei libri, quando viene introdotta una forma normale, si dice sempre qualcosa del tipo:

Una relazione è in forma normale xxx se ...


Un multiset non è isomorfo in un set in cui aggiungi un countattributo aggiuntivo agli elementi?
Barmar

3
@Barmar sì, ma poi aggiungi una chiave candidata e tutte le relative dipendenze funzionali, quindi dal punto di vista della teoria della normalizzazione sei in un caso completamente diverso.
Renzo

1
Quando le persone eseguono operazioni relazionali su tabelle non relazionali, si aspettano risultati relazionali. Quando non li ottengono, questi appaiono anomali.
Walter Mitty,

0

3NF fa riferimento a una tabella conforme alle prime 3 regole di normalizzazione dei dati.

  1. Eliminazione di gruppi ripetuti
  2. Eliminazione di dati ridondanti
  3. Eliminazione di colonne non dipendenti dalla chiave

La terza regola richiede una chiave. Hai ragione, il tavolo del docente non era 3NF.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.