Domanda

ho notato che quando si progetta un database tendo a spostare qualsiasi set di dati che si ripetono in una tabella separata. Ad esempio, dire che ho avuto un tavolo di persone, con ogni persona che vive in uno stato. Avrei quindi spostare questi stati ripetuti in una tabella separata e farvi riferimento con chiavi esterne.

Tuttavia, quello che se non ero la memorizzazione di altri dati su Stati. Vorrei quindi una tabella con StateID e Stato in. Questo è l'azione corretta? Stato dipende dalla chiave primaria della tabella utenti, così fa spostando nella propria tabella di aiuto con qualsiasi cosa?

Grazie,

È stato utile?

Soluzione

Credo che la rimozione di sottoinsiemi di dati ripetuti all'interno di una tabella e metterli in tabelle di loro viene chiamato per nel processo di immissione di un tavolo in Seconda forma normale .

Spostare la sigla dello stato in una tabella a sé stante è come si dovrebbe normalizzare il database. Protegge il vostro tavolo “utente” da anomalie aggiornamento in cui diciamo di lasciare per qualche motivo l'abbreviazione “KY” per il Kentucky è stato aggiornato alla “KQ”. Inserendo una chiave esterna nella tabella utente che contiene la chiave primaria della tabella stati dovete solo fare un aggiornamento alla tabella Stati di correggere questa voce per tutti gli utenti.

Detto questo, mi sembra abbastanza ovvio che gli stati abbreviazioni non cambiano spesso. Quindi, se si sa per certo che il database non avrà mai bisogno di memorizzare più informazioni su uno stato, allora è logico e fondamentalmente sana a lasciare il campo di stato nella tabella utente. De-normalizzazione dei quali è comune. Esso aumenterà la leggibilità dei dati nella tabella degli utenti, e ridurre il sovraccarico di fare il join. E 'comunque la preferenza.

Altri suggerimenti

La tabella Stato dovrebbe avere alcuna relazione di chiave con la tabella degli utenti, dovrebbe contenere solo i dati circa gli stati.

Quello che si consiglia di fare per mantenere ogni tavolo il più semplice possibile sarebbe quella di mantenere i dati utente in una tabella utente, i dati relativi allo stato di una tabella di Stato, e poi costruire un join tabella che ha relazioni di chiave esterna ad entrambi le tabelle utente e statali.

Per quanto riguarda quale forma di normalizzazione che è, non sono sicuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top