[Php-avanzado] Normalizar MUCHOS productos

Gerardo Valiani gerardovaliani en gmail.com
Lun Jul 12 10:30:31 ART 2010


>
> Hola Gerardo!
>
>        seguro que hay una solución normalizada para esto.
>        Con el asunto de que la normalización sigue a un modelo
> matemático, todo conjunto de datos es normalizable.
>
>        Para normalizarlo, tenés que partir de la lista de todas las
> cosas a guardar: tenés esa lista armada???
>

No. No tengo esa lista. Con lo cual, me doy cuenta que quiero hacer algo que
es imposible. El problema es que ni el cliente conoce todos sus productos.

>
>        Las tablas resultantes dependen únicamente de los datos a
> guardar...
>
>        Generalmente esas soluciones para el caso que planteás, en el
> peor escenario, quedan de la forma:
>
> Artículos:
> id
> cod
> des
>
> Atributos:
> id
> atributo
>
> AtributosArticulos:
> id
> id_articulo
> id_atributo
> medida
>
>        ... es decir, una relación muchos a muchos entre los Artículos y
> sus Atributos.
>        Fijate que ahora para el atributo "largo" usado en el tornillo,
> pondrás los mm de la longitud, y para el atributo "apertura" usada en la
> pinza pondrás cuanto abre.
>

Que sencillo! No me habia dado cuenta.
Pero me surgen dos problemas:
* Algunos valores necesito normalizarlos tambien. Por ejemplo: si estoy
cargando los destornilladores, solo quiero que carguen de tipo paleta o de
tipo phillip. Y que no me carguen chato, comun, de cruz... o lo que se lo
ocurrio al chango en ese momento. Para esto se me ocurrio agregar otra tabla
"valores" con los campos: id, valor. Y cambiar en la tabla
AtributosArticulos el campo medida, por id_valor.
* Con esta normalizacion el campo medida o valor, sera siempre del mismo
tipo, varchar. Creo que seria el mas adecuado. No podre variar con integer,
float, etc. En si, en la gran mayoria de los atributos, no voy a hacer
calculos. Por lo que el tipo varchar creo que estaria bien. Que opinan al
respecto?

Por otro lado, tengo algunos atributos que comparten todos. Como la marca,
el origen, packaging y contenido. Todos ellos los pongo en la tabla
Articulos? O que se graben igual que aquellos atributos que no comparten, es
decir usando la tablas Atributos?

>
>        Luego, las interfaces con el usuario de las relaciones muchos a
> muchos son un fastidio, pero esa es otra historia.
>
>        Por otra parte, esto no tiene nada, pero nada que ver con el
> modelo de Objetos que uses, que sé que es el paradigma con el cuál estás
> diseñando esto.
>         Una ventaja de modelar esto en objetos que podés poner las
> unidades de medida como parte de las reglas de negocio y validarlas, en
> lugar de necesitar una tabla más, porque, mi querido Gerardo, esto
> requiere un Objeto por cada Atributo, que posiblemente sean todos de la
> misma clase o al menos tengan un ancestro cercano en común.
>

Por el momento no me sente a diseñar los objetos referentes a los productos.

Saludos y gracias!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20100712/6c0cd078/attachment.htm 


Más información sobre la lista de distribución Php-avanzado