Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbankdesign:Zusammengesetzter Schlüssel vs. Primärschlüssel mit einer Spalte

Es klingt, als würden Sie Daten für ein Telefonbuch sammeln. Sind Sie? Warum sind Staaten wichtig für Sie? Die Antwort auf diese Frage wird wahrscheinlich bestimmen, welches Datenbankdesign für Sie am besten geeignet ist.

Sie denken vielleicht, dass es offensichtlich ist, was eine Stadt ist. Es ist nicht. Es hängt davon ab, was Sie mit den Daten tun werden. In den USA gibt es diese Einheit namens MSA (Metropolitan Statistical Area). Die Kansas City MSA umfasst sowohl Kansas City, Kansas als auch Kansas City, Missouri. Ob die MSA-Einheit sinnvoll ist oder nicht, hängt von der beabsichtigten Verwendung der Daten ab. Wenn Sie Vorwahlen in den USA verwenden würden, um Städte zu bestimmen, würden Sie am Ende eine ganz andere Gruppierung als MSAs erhalten. Auch hier hängt es davon ab, was Sie mit den Daten machen werden.

Im Allgemeinen besteht die allgemeinste Lösung immer dann darin, wenn hierarchische Muster politischer Unterteilungen zusammenbrechen, die Viele-zu-Viele-Beziehung zu betrachten. Sie lösen dieses Problem auf die gleiche Weise wie andere Many-to-Many-Probleme. Durch Erstellen einer neuen Tabelle mit zwei Fremdschlüsseln. In diesem Fall sind die Fremdschlüssel IdAreacode und IdStates.

Jetzt können Sie einen Arecode in vielen Staaten und einen Staat haben, der viele Vorwahlen umfasst. Es scheint eine Schande, diesen zusätzlichen Overhead in Kauf zu nehmen, um nur eine Ausnahme abzudecken. Wissen Sie, ob die von Ihnen aufgedeckte Ausnahme nur die Spitze des Eisbergs ist und es viele solcher Ausnahmen gibt?