sql >> Base de Datos >  >> RDS >> Mysql

Diseño de base de datos:clave compuesta frente a clave principal de una columna

Parece que está recopilando datos para una guía telefónica. ¿Eres tú? ¿Por qué los estados son importantes para ti? La respuesta a esta pregunta probablemente determinará qué diseño de base de datos funcionará mejor para usted.

Puedes pensar que es obvio lo que es una ciudad. No es. Depende de lo que vayas a hacer con los datos. En los Estados Unidos, existe esta unidad llamada MSA (Área Estadística Metropolitana). Kansas City MSA abarca tanto Kansas City, Kansas como Kansas City, Missouri. Si la unidad MSA tiene sentido o no depende del uso previsto de los datos. Si usó códigos de área en EE. UU. para determinar ciudades, terminaría con una agrupación muy diferente a la de MSA. Una vez más, depende de lo que vaya a hacer con los datos.

En general, cuando los patrones jerárquicos de las subdivisiones políticas se rompen, la solución más general es considerar la relación de muchos a muchos. Resuelve este problema de la misma manera que resuelve otros problemas de muchos a muchos. Creando una nueva tabla, con dos claves foráneas. En este caso las claves foráneas son IdAreacode e IdStates.

Ahora puede tener un código de área en muchos estados y un estado que abarque muchos códigos de área. Parece una pena aceptar estos gastos generales adicionales para cubrir solo una excepción. ¿Sabe si la excepción que ha descubierto es solo la punta del iceberg, y si hay muchas de esas excepciones?