Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conception de la base de données :clé composite vs clé primaire à une colonne

On dirait que vous collectez des données pour un annuaire téléphonique. Êtes-vous? Pourquoi les états sont-ils importants pour vous ? La réponse à cette question déterminera probablement la conception de la base de données qui vous conviendra le mieux.

Vous pouvez penser que c'est évident ce qu'est une ville. Ce n'est pas. Cela dépend de ce que vous allez faire avec les données. Aux États-Unis, il existe cette unité appelée MSA (Metropolitan Statistical Area). La MSA de Kansas City couvre à la fois Kansas City, Kansas et Kansas City, Missouri. Que l'unité MSA ait un sens ou non dépend de l'utilisation prévue des données. Si vous utilisiez des indicatifs régionaux aux États-Unis pour déterminer les villes, vous vous retrouveriez avec un groupement très différent de celui des MSA. Encore une fois, cela dépend de ce que vous allez faire avec les données.

En général, chaque fois que les schémas hiérarchiques des subdivisions politiques s'effondrent, la solution la plus générale consiste à considérer la relation plusieurs à plusieurs. Vous résolvez ce problème de la même manière que vous résolvez d'autres problèmes plusieurs-à-plusieurs. En créant une nouvelle table, avec deux clés étrangères. Dans ce cas, les clés étrangères sont IdAreacode et IdStates.

Maintenant, vous pouvez avoir un indicatif régional dans plusieurs États et un État couvrant plusieurs indicatifs régionaux. Il semble dommage d'accepter ces frais généraux supplémentaires pour couvrir une seule exception. Savez-vous si l'exception que vous avez découverte n'est que la pointe de l'iceberg, et il existe de nombreuses exceptions de ce type ?