[Php-avanzado] Consultas normalización de tablas

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Abr 21 09:31:13 ART 2015


Hola Rodrigo!

El mar, 21-04-2015 a las 00:19 -0300, Rodrigo Fernandez escribió:
> Gracias Leo, me había olvidado de la relación N-N je. 
> 
> 
> Es para un mayorista de alambres que vende distintos productos a
> distintos distribuidores y vendedores con casi una lista de precios
> distinta para cada uno... una joda bárbara.

	Mmmm... entonces, hay un modelo normalizado mejor: que vendedores y
distribuidores sean "clientes" y que tengan un "tipo de cliente" que
será vendedor o distribuidor.
	Luego, por el tipo de cliente, determinás la lista de precios...

	Los datos de ambos son los mismos, ya que basta poner "apellido o razón
social" en la etiqueta del campo.

> Software de licencia de música y video ? No estoy muy familiarizado
> con el concepto. Se sigue vendiendo música y video ?

	Muchísimo! Te dería que cada vez más, aunque los medios y tipos de
licenciamiento van cambiando. Te preguntaba porque me sonaba de otras
consultas, en que las distribuidoras eran las discográficas y los
vendedores las tiendas.

	Saludos!


> El 20 de abril de 2015, 23:29, Leonardo Tadei - Pegasus Tech Supply
> <leonardot en pegasusnet.com.ar> escribió:
>         Hola Rodrigo,
>         
>                 entonces, para esa descripción del problema, las
>         tablas quedarían:
>         
>         
>         Accesos: id, usuario, contraseña, nivel.
>         
>         Vendedores: id, nom, ape, mail, tel, doc, id_acceso.
>         
>         Distribuidores: id, rsoc, mail, tel, cuit, id_acceso.
>         
>         Productos: id, nombre.
>         
>         Productos_Vendedores: id, id_vendedor, id_producto
>         
>         Productos_Distribuidores: id, id_distribuidor, id_producto
>         
>         
>                 Al tener los distribuidores y vendedores más de un
>         producto, la
>         Normalización dice que los tenés que pasar a otra tabla y
>         establecer una
>         relación N a N.
>                 Se puede hacer una chanchada asquerosa que sería tener
>         dos
>         "id_producto" en Vendedores y en Distribuidores para
>         "ahorrarte" las
>         relaciones N-N, pero tiene tantas contras luego que de veras
>         no vale la
>         pena... además de lo feo que queda cuando alguien que evalúe
>         tu trabajo
>         vea tu código.
>         
>                 Para el problema de los accesos, no hay nada
>         particular salvo haber
>         Normalizado.
>         
>                 Saludos cordiales!
>         
>         
>         PD: es para un software de distribución de licencias de música
>         o videos?
>         
>         
>         
>         El lun, 20-04-2015 a las 21:39 -0300, Rodrigo Fernandez
>         escribió:
>         > Los vendedores venden dos productos distintos y los
>         distribuidores
>         > también dos.
>         >
>         >
>         > Si, la tabla productos es id y des que seria la descripción
>         o el
>         > nombre de producto
>         >
>         > El 20 de abril de 2015, 21:35, Leonardo Tadei - Pegasus Tech
>         Supply
>         > <leonardot en pegasusnet.com.ar> escribió:
>         >         Los vendedores venden un solo producto?
>         >
>         >         Los distribuidores distribuyen un solo producto?
>         >
>         >         La tabla Productos tiene además un ID?
>         >
>         >
>         >         El lun, 20-04-2015 a las 21:09 -0300, Rodrigo
>         Fernandez
>         >         escribió:
>         >         > Tablas:
>         >         >
>         >         >
>         >         > Accesos: usuario, contraseña, nivel, id_producto,
>         (id_vd,
>         >         vd) ->estas
>         >         > últimas  no irian
>         >         >
>         >         >
>         >         > Vendedores: nom, ape, mail, tel, doc, id_prod
>         >         >
>         >         >
>         >         > Distribuidores: rsoc, mail, tel, cuit, id_prod
>         >         >
>         >         >
>         >         > Productos: nombre.
>         >         >
>         >         >
>         >         > No es complicado, pero algo no anda bien con la
>         tabla
>         >         accesos.
>         >         > Es decir, cómo sé desde la tabla accesos si es
>         distribuidor
>         >         o vendedor
>         >         > y que los id no se me superpongan en las
>         respectivas
>         >         tablas...
>         >         >
>         >         >
>         >         >
>         >         > El 20 de abril de 2015, 16:30, Leonardo Tadei -
>         Pegasus Tech
>         >         Supply
>         >         > <leonardot en pegasusnet.com.ar> escribió:
>         >         >         Rodrigo,
>         >         >
>         >         >                 parece que estás frente a un
>         problema de
>         >         >         Normalización.
>         >         >                 Enviá todos los datos que haya que
>         guardar y
>         >         tus
>         >         >         tablas tentativas para
>         >         >         revisarlo... sospecho que surgirán 1 o 2
>         tablas
>         >         nuevas luego
>         >         >         de llevado
>         >         >         a 3ra Forma Normal.
>         >         >
>         >         >                 saludos!
>         >         >
>         >         >
>         >         >         El lun, 20-04-2015 a las 15:37 -0300,
>         Rodrigo
>         >         Fernandez
>         >         >         escribió:
>         >         >         > Que tal tanto tiempo.
>         >         >         >
>         >         >         >
>         >         >         >     Tengo un problema con unas tablas.
>         >         >         >
>         >         >         >
>         >         >         > Pasa lo siguente: En un sistema tengo
>         vendedores y
>         >         >         distribuidores (V y
>         >         >         > D)... a su vez ambos comercializan dos
>         productos
>         >         distintos
>         >         >         (1 y 2)
>         >         >         > Por lo que tengo V1, V2, D1, D2.
>         >         >         >
>         >         >         >
>         >         >         > Lo que hice fue hacer dos tablas una de
>         >         distribuidores y
>         >         >         otra de
>         >         >         > vendedores. Cada una con un id_producto
>         para
>         >         diferenciar el
>         >         >         producto
>         >         >         > que venden.
>         >         >         >
>         >         >         >
>         >         >         > El problema es que yo guardo los datos
>         de usuario,
>         >         >         contraseña, etc en
>         >         >         > una tabla de  "accesos" y se me complica
>         a la
>         >         ahora de
>         >         >         relacionar
>         >         >         > tabla con las otras dos. Si yo en esa
>         tabla
>         >         "accesos" guarde
>         >         >         el id del
>         >         >         > vendedor para relacionarlo a los datos
>         del mismo,
>         >         se me
>         >         >         puede
>         >         >         > superponer con un id igual de un
>         distribuidor.
>         >         ¿Cómo hago
>         >         >         para
>         >         >         > distinguirlos?
>         >         >         >
>         >         >         >
>         >         >         > Por lo que termine haciendo una
>         mamarrachada de
>         >         con una "v"
>         >         >         o una "d"
>         >         >         > distingo si es vendedor o distribuidor
>         para
>         >         después con un
>         >         >         campo id_vd
>         >         >         > que me dice el id del que sea.
>         >         >         >
>         >         >         >
>         >         >         > Pensé también en pasar todo a una misma
>         tabla
>         >         "clientes" y
>         >         >         usar un
>         >         >         > campo tipo v/d para distinguir si es
>         vendedor o
>         >         distribuidor
>         >         >         pero me
>         >         >         > parece que no es LA solución correcta.
>         >         >         > Los datos que guardo de ambos son casi
>         los mismos.
>         >         Uno es
>         >         >         dni y el
>         >         >         > otro cuit, uno es nom y ape, el otro
>         razon
>         >         social...
>         >         >         >
>         >         >         >
>         >         >         >
>         >         >         > No se si se entiende bien el problema.
>         >         >         >
>         >         >         >
>         >         >         > Porai me estoy complicando de gusto y
>         uds me dan
>         >         alguna
>         >         >         solución.
>         >         >         >
>         >         >         >
>         >         >         > Si necesitan que aclare algo me dicen...
>         >         >         >
>         >         >         >
>         >         >         > Saludos !
>         >         >         >
>         >         >         >
>         >         >
>         >         >         >
>         _______________________________________________
>         >         >         > Lista de correo: Php-avanzado
>         >         >         > Mensajes a la lista:
>         >         Php-avanzado en pato2.fi.mdp.edu.ar
>         >         >         > Administración Web:
>         >         >
>         >
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         >         >         > Desubscripción:
>         >         >
>         >
>         php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>         >         >
>         >         >         --
>         >         >         Leonardo Tadei
>         >         >         leonardot en pegasusnet.com.ar
>         >         >         Web: http://leonardo.tadei.com.ar
>         >         >         Firma pública:
>         >         >
>         >
>         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>         >         >
>         >         >
>          _______________________________________________
>         >         >         Lista de correo: Php-avanzado
>         >         >         Mensajes a la lista:
>         >         Php-avanzado en pato2.fi.mdp.edu.ar
>         >         >         Administración Web:
>         >         >
>         >
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         >         >         Desubscripción:
>         >         >
>         >
>         php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>         >         >
>         >         >
>         >         >
>         >         > _______________________________________________
>         >         > Lista de correo: Php-avanzado
>         >         > Mensajes a la lista:
>         Php-avanzado en pato2.fi.mdp.edu.ar
>         >         > Administración Web:
>         >
>          http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         >         > Desubscripción:
>         >
>          php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>         >
>         >         --
>         >
>         >         Leonardo Tadei
>         >         leonardot en pegasusnet.com.ar
>         >
>         >         Pegasus Tech Supply
>         >         Tel: (+54)(+223) 471-2880
>         >         La Salle 1131 - Mar del Plata - Argentina
>         >         http://www.pegasusnet.com.ar
>         >         http://www.grupopegasus.com
>         >         Firma pública:
>         >
>          http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>         >
>         >         _______________________________________________
>         >         Lista de correo: Php-avanzado
>         >         Mensajes a la lista:
>         Php-avanzado en pato2.fi.mdp.edu.ar
>         >         Administración Web:
>         >
>          http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         >         Desubscripción:
>         >
>          php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>         >
>         >
>         >
>         > _______________________________________________
>         > Lista de correo: Php-avanzado
>         > Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
>         > Administración Web:
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         > Desubscripción:
>         php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>         
>         --
>         Leonardo Tadei
>         leonardot en pegasusnet.com.ar
>         Web: http://leonardo.tadei.com.ar
>         Firma pública:
>         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>         
>         _______________________________________________
>         Lista de correo: Php-avanzado
>         Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
>         Administración Web:
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         Desubscripción:
>         php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>         
> 
> 
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción: php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



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