2012-09-14 16 views
8

¿Cómo debo almacenar estados y países?¿Debo almacenar estados de EE. UU. En mi base de datos o una matriz de PHP?

Opción 1) Podría crear una tabla de base de datos llamada estados, y tener 'id', 'state' y 'state_abbr'. Podría hacer referencia a eso por 'id' en la tabla de usuarios.

Opción 2) Podría crear una matriz de PHP y usarla para rellenar el menú desplegable de estados, y evitar consultar la base de datos por completo. La clave para la matriz sería el valor insertado en la base de datos para ese usuario.

Los estados no cambian, por lo que los datos deben ser estáticos. ¿Cuál es la mejor manera de almacenar esta información y por qué? ¿No sería una matriz de PHP más rápida? ¿Por qué parece que la base de datos es la mejor manera de almacenarlo entonces?

¿Pensamientos?

+0

Uso una matriz de PHP ... lo que sea. – jeremy

+2

Si los estados también se guardan como parte de otros registros en la base de datos, entonces * yes * - * con * las restricciones referenciales apropiadas. Si no, entonces no veo ninguna ventaja particular de un enfoque sobre el otro. No me preocuparía la "velocidad" aquí. Hay otros mecanismos para tratar con eso, si es necesario. –

+0

Almacenarlo en una matriz funcionaría más rápido, pero usar una base de datos es más versátil y permite una fácil exportación e importación de datos, así como su manipulación. – Ynhockey

Respuesta

9

Un sabio diseñador de bases de datos me dijo una vez, "Todo lo que sabe sobre los códigos de estado es incorrecto".

  • Estos son códigos de dos letras, no abreviaturas. (The abbreviation for California es "Calif." Y la abreviatura de Ohio es "Ohio").
  • There are more than 50 of them.
  • No todos los códigos de dos letras se refieren a estados. También se refieren a "posesiones" como "Estados Federados de Micronesia" y "Palau".
  • No son únicos. Un código de dos letras, AE, se refiere a cuatro diferentes "estados" militares (Fuerzas Armadas de Europa, Fuerzas Armadas de Canadá, Fuerzas Armadas de Medio Oriente y Fuerzas Armadas de África).
  • Los códigos militares de "estado" pueden cambiar a medida que cambia la fuerza de la tropa. Envía algunos cientos de miles de tropas a África, y es probable que veas que el código para las Fuerzas Armadas de África cambia de "AE" a "AF".
  • Hay aproximadamente una docena de territorios que aún no están en esta lista. Algunos de estos son de interés estratégico (Wake Island, Midway Islands, etc.) y su estado podría cambiar fácilmente.

Dado que no es probable que sepa todas estas cosas tan comunes como los códigos de estado de USPS, tiene más sentido almacenarlos en una tabla. Las tablas son más fáciles de mantener en tiempo de ejecución que una matriz PHP.

5

Porque la base de datos es la mejor manera de almacenarlo.

¿Qué pasa si el año que viene su empresa decide internacionalizarse? Así que ahora necesita países y un menú desplegable dependiente para los estados.

Así que debe agregar Europa, luego África ... Eso es una TONELADA de países, junto con una tonelada de estados. Necesitarás una gran matriz.

Luego su jefe quiere un informe por país.

Mucho más fácil de administrar si lo tiene todo en una base de datos.

Cuestiones relacionadas