Hola!!! Estoy ampliando mi ecommerce por un encargo a medido.
Es de elaboración propia y está echo con: html; asp; mysql; CSS3
Me ha surgido el inconveniente de que los distintos clientes pueden necesitar campos específicos para cada uno en función de su negocio, pero estos campos no tienen sentido que existan para otros.
Por eso he pensado en crear un sistema de campos parametrizables por el usuario sin tener que hacer uso de ALTER TABLE, ya que quiero que la estructura de la DB sea la misma para todas las tiendas que monto.
En este caso en concreto para este cliente, en la cabecera del pedido te hace falta un campo memo que sea : texto del anuncio y en la ficha del comprador un campo que sea : Número de cuenta bancaria.
No quiero añadir campos por añadir cuando a algún cliente le haga falta algo muy concreto y he pensado esto:
Crear dos tablas, la primera guardaría los datos del campo parametrizable:
tabla Campos_Parametrizables:
Id : Clave única
Módulo : a qué módulo o formulario pertenece (pedidos, ficha user...)
Nombre : Nombre visible a mostrar en los form.
Requerido : sí o no
Tipo: Txt, memo, lógico...
NombreForm: Nombre interno para el form.
Y en la segunda los valores:
Tabla Campos_Parametrizables_Dat
Id: Clave única
Id-campo-param: id de la tabla anterior
Id-registro: Sin relación, será por ejemplo el id del pedido o de la ficha del user
Dato-memo
Dato-txt
Dato-lógico
De estos tres últimos sólo se rellenaría uno según el valor del campo tipo de la tabla de cabecera.
Una vez hecho esto, este sería el procedimiento en el código, para los pedidos por ejemplo:
En sección configuración pedidos creo los campos nuevos que quiero pedir al finalizar el pedido, los que quiera indicando el tipo de campo para el form y los guardo en la tabla Campos_Param indicando que el módulo es pedidos.
Cuando se hace un pedido, compruebo si tengo tengo campos parametrizados y los muestro en el form.
Después, al hacer el insert o el update recojo estos campos y los guardo en la tabla campos_param_dat y a través de los campos módulo e Id sé a quién pertenece.
Esta es la idea, antes de empezar a teclear nada quiero que me digáis si el concepto es el correcto o hay otros métodos, gracias.