Mysql
 sql >> Database >  >> RDS >> Mysql

Progettazione del database:chiave composita rispetto a una chiave primaria di una colonna

Sembra che tu stia raccogliendo dati per un elenco telefonico. Tu sei? Perché gli stati sono importanti per te? La risposta a questa domanda probabilmente determinerà quale progettazione di database funzionerà meglio per te.

Potresti pensare che sia ovvio cosa sia una città. Non è. Dipende da cosa farai con i dati. Negli Stati Uniti esiste questa unità chiamata MSA (Metropolitan Statistical Area). L'MSA di Kansas City si estende sia a Kansas City, Kansas, che a Kansas City, Missouri. Il fatto che l'unità MSA abbia un senso o meno dipende dall'uso previsto dei dati. Se hai utilizzato i prefissi negli Stati Uniti per determinare le città, ti ritroveresti con un raggruppamento molto diverso rispetto agli MSA. Ancora una volta, dipende da cosa farai con i dati.

In generale, ogni volta che i modelli gerarchici di suddivisione politica si rompono, la soluzione più generale è considerare il rapporto molti-a-molti. Risolvi questo problema nello stesso modo in cui risolvi altri problemi molti-a-molti. Creando una nuova tabella, con due chiavi esterne. In questo caso le chiavi esterne sono IdAreacode e IdStates.

Ora puoi avere un codice di area in molti stati e uno stato che copre molti codici di area. Sembra un peccato accettare questo sovraccarico extra per coprire solo un'eccezione. Sai se l'eccezione che hai scoperto è solo la punta dell'iceberg e ci sono molte di queste eccezioni?