2010-03-18 18 views
19

¿Cuál es la mejor manera de estructurar una tabla MySQL para almacenar la configuración de administrador?¿Cómo debería estructurar mi tabla de configuraciones con MySQL?

como esta?

Setting _|_ Value 
setting1 | a 
setting2 | b 
setting3 | c 
setting4 | d 
setting5 | e 

¿Te gusta esto?

|--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_| 
Settings | a  | b  | c  | d  | e  | 

¿O tal vez de alguna otra manera?

Respuesta

20

Nombre de tabla = 'configuración'

name | varchar <-- primary key 
value | varchar 

A continuación, se puede consultar la siguiente manera:

SELECT * FROM settings WHERE name = 'default_printer'; 

Esta opción es agradable y fácil y funcionará bien con 10 o 10.000 configuraciones. Con la otra opción, tendrá que agregar una nueva columna, lo que sería una pérdida de tiempo completamente inútil.

Editar

Después de su primera observación se podía elegir varios valores de la siguiente manera:

SELECT * FROM settings WHERE name IN ('default_printer','default_page_size'); 

:-)

+0

1 para señalar explícitamente que necesitaba una primaria clave, ya que lo olvidé en mi publicación original;) ​​... Se ve bastante bien. Me gusta especialmente que, usando esta configuración, podría hacer una función que me permita seleccionar una configuración (o varias configuraciones a la vez), que sería muy útil. – Cam

+2

Estoy de acuerdo, he agregado otra declaración de SQL posible, utilizamos este método en nuestro sistema ERP, tiene muchas configuraciones. :-) –

+0

¿Qué ocurre si desea almacenar diferentes tipos en "Valor", ¿es aceptable hacer el molde en su código más tarde al tipo esperado? Si tiene muy pocas configuraciones y todas son de tipos diferentes, es decir, string, int, float, ¿tendría más sentido usar el segundo esquema? – radtek

0

Como de costumbre, depende. La solución 1 es más simple. Sol # 2 se integra fácilmente con los ORM, pero puede afectar las limitaciones de tamaño de fila de DB. Google para OTLT (como en el problema de One True Lookup Table) ¿Cuántas configuraciones tiene (pocas? Docenas? Cientos?) ¿Con qué frecuencia las necesitará?

+0

Docenas. Es posible que necesite algunos de ellos tan a menudo como cada página vista. Es decir, una configuración de administrador puede afectar la vista de ciertas páginas cada vez que se muestran. Como ejemplo, una de las configuraciones sería el nombre de un producto destacado, y otra configuración sería el nombre de archivo de la imagen gif de dicho producto. – Cam

3

Considere la primera opción (Setting, Value) como columnas. Sino también considerar la adición de columnas adicionales, meta, así como Description (sería muy útil si usted tiene un montón de ajustes ambiguos), PreviousValue, LastUpdated, UpdatedBy, etc.

+1

Bonito consejo para agregar meta columnas – afarazit

Cuestiones relacionadas