Il più grande svantaggio è che sono necessari 5 valori per identificare una riga. Se la tua applicazione utilizza un layer O / RM (Object / Relation Mapping), allora avrai adattamenti per mappare queste righe di database agli oggetti in un linguaggio di programmazione. O / RM sono più facili da configurare quando ogni tabella ha una chiave primaria a singola colonna.
Una volta entrati nei framework delle applicazioni web, gli URL nel browser spesso includono una sorta di identificatore per i dati nel database e si presuppone che ci sia solo un pezzo di dati necessari per identificare una risorsa, ad es. una chiave primaria a singola colonna. Ciò rende più difficile l'utilizzo dei moderni framework di applicazioni Web (Ruby on Rails, ASP.NET MVC di Microsoft per nominarne alcuni).
Programmazione a parte, e se in futuro dovessi aggiungere una colonna che insieme agli altri 5 dovrebbe essere unica? Ora stai modificando la tua chiave composita. Basta che sia semplice. Utilizzare una chiave primaria a singola colonna. Se hai bisogno che queste 5 colonne siano univoche, considera l'aggiunta di un vincolo univoco o un indice univoco a quelle colonne.
Lo svantaggio successivo delle chiavi composite in generale, e in particolare delle chiavi composite che richiedono questo numero di colonne, è che tutti questi dati devono essere specificati e copiati nelle tabelle figlio per poter stabilire relazioni appropriate tra le tabelle.
- Le modifiche alle regole aziendali in futuro potrebbero imporre la duplicazione di questi valori. Come verranno identificati i dati, quindi?
- I valori vengono duplicati tra le tabelle quando sono necessari riferimenti a chiavi esterne
- O / RM sono più difficili da configurare
- I framework di applicazioni Web Modern MVC sono più difficili da configurare per includere le chiavi composite
Nient'altro che svantaggi per me.
Il più grande mal di testa che ho incontrato con gli sviluppatori è che assumono che "unicità dei dati" equivale a "identificare una riga nel database". Questo è raramente il caso. Ho trovato applicazioni e database molto più semplici da mantenere e facili da compilare, impostando le chiavi primarie a singola colonna e utilizzando le chiavi composite come eccezione alla regola, quindi rafforzando l'univocità dei dati utilizzando vincoli o indici univoci su tali colonne. / p>