Wygląda na to, że zbierasz dane do książki telefonicznej. Czy jesteś? Dlaczego stany są dla Ciebie ważne? Odpowiedź na to pytanie prawdopodobnie określi, który projekt bazy danych będzie dla Ciebie najlepszy.
Możesz pomyśleć, że to oczywiste, czym jest miasto. To nie jest. To zależy od tego, co zamierzasz zrobić z danymi. W USA istnieje taka jednostka o nazwie MSA (Metropolitan Statistical Area). Kansas City MSA obejmuje zarówno Kansas City, Kansas, jak i Kansas City w stanie Missouri. To, czy jednostka MSA ma sens, czy nie, zależy od zamierzonego wykorzystania danych. Jeśli używasz numerów kierunkowych w USA do określenia miast, otrzymasz zupełnie inną grupę niż MSA. Ponownie, zależy to od tego, co zamierzasz zrobić z danymi.
Ogólnie rzecz biorąc, ilekroć załamują się hierarchiczne wzorce podziałów politycznych, najogólniejszym rozwiązaniem jest rozważenie relacji „wielu do wielu”. Rozwiązujesz ten problem w ten sam sposób, w jaki rozwiązujesz inne problemy typu „wiele do wielu”. Tworząc nową tabelę z dwoma kluczami obcymi. W tym przypadku klucze obce to IdAreacode i IdStates.
Teraz możesz mieć jeden kod arecode w wielu stanach i jeden stan obejmujący wiele numerów kierunkowych. Wydaje się, że wstyd jest zaakceptować ten dodatkowy koszt, aby pokryć tylko jeden wyjątek. Czy wiesz, czy wyjątek, który odkryłeś, to tylko wierzchołek góry lodowej, a takich wyjątków jest wiele?