[Php-avanzado] Consultas normalización de tablas
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Lun Abr 20 23:29:26 ART 2015
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
Más información sobre la lista de distribución Php-avanzado