Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Design de banco de dados:chave composta versus chave primária de uma coluna


Parece que você está coletando dados para uma lista telefônica. Você é? Por que os estados são importantes para você? A resposta a essa pergunta provavelmente determinará qual design de banco de dados funcionará melhor para você.

Você pode pensar que é óbvio o que é uma cidade. Não é. Depende do que você vai fazer com os dados. Nos EUA, existe essa unidade chamada MSA (Metropolitan Statistical Area). O Kansas City MSA abrange tanto Kansas City, Kansas e Kansas City, Missouri. Se a unidade MSA faz sentido ou não depende do uso pretendido dos dados. Se você usasse códigos de área nos EUA para determinar cidades, acabaria com um agrupamento muito diferente do MSAs. Novamente, depende do que você vai fazer com os dados.

Em geral, sempre que os padrões hierárquicos de subdivisões políticas se rompem, a solução mais geral é considerar a relação muitos-para-muitos. Você resolve esse problema da mesma forma que resolve outros problemas de muitos para muitos. Criando uma nova tabela, com duas chaves estrangeiras. Nesse caso, as chaves estrangeiras são IdAreacode e IdStates.

Agora você pode ter um código de área em vários estados e um estado abrangendo vários códigos de área. Parece uma pena aceitar essa sobrecarga extra para cobrir apenas uma exceção. Você sabe se a exceção que você descobriu é apenas a ponta do iceberg, e existem muitas exceções?