Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Duda en Base de Datos (Diseño)

Estas en el tema de Duda en Base de Datos (Diseño) en el foro de Bases de Datos General en Foros del Web. Hola Gente, Bueno tengo una Duda en el diseño que estoy haciendo y tengo lo Siguiente: persona: idpersona nombre apellido direccion cliente idpersona dni vendedor ...
  #1 (permalink)  
Antiguo 18/11/2011, 13:20
 
Fecha de Ingreso: noviembre-2009
Ubicación: Chimbote
Mensajes: 60
Antigüedad: 15 años
Puntos: 5
Duda en Base de Datos (Diseño)

Hola Gente, Bueno tengo una Duda en el diseño que estoy haciendo y tengo lo Siguiente:

persona:idpersona
nombre
apellido
direccion

clienteidpersona
dni

vendedor
idpersona

Tanto Cliente como vendedor heredan de persona sus Atributos. Y bueno mi duda va a esto, tengo una tabla venta

venta
ventaid
fechaventa

yo lo que quiero es relacionar la tabla venta con el cliente y con el vendedor ya que necesito saber quien es el cliente y quien realiza la venta, pero si relaciono se duplicara el idpersona tanto del cliente como del vendedor.

Lo que tenia en mente, pero no se si es dable; es crear un campo mas tanto en vendedor y cliente que se llame clienteid y vendedorid y al momento de relacionar que solamente llamen a las claves PK clienteid y vendedorid. No se si se podra ya que al momento de relacionarlo automaticamente me baja tambien el idpersona (SGBD MySQL y Workbench como Herramienta CASE).

Y una ultima Duda.

Tengo una Tabla Proveedor, Cada proveedor tiene uno o muchos representante de venta (Que tiene los Mismo campos que Persona), Pero es aqui en donde vuelo, Si heredar de persona sus atributos por medio de una relacion a la tabla represententa y de la tabla representante hacer una relacion a la tabla proveedor sabiendo que el campo en comun sera idpersona.

Espero que me puedan ayudar. Gracias.
__________________
Para llegar a algo se debe de empezar barriendo o pateando Lata!! XD
  #2 (permalink)  
Antiguo 18/11/2011, 13:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Duda en Base de Datos (Diseño)

venta
ventaid
fechaventa
id_cliente(id_persona, FK de persona)
id_vendedor(id_persona, FK de vendedor)

Con esto relacionarias tus tablas, y porque dices que se duplicaria el id_persona???

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/11/2011, 09:56
 
Fecha de Ingreso: noviembre-2009
Ubicación: Chimbote
Mensajes: 60
Antigüedad: 15 años
Puntos: 5
Respuesta: Duda en Base de Datos (Diseño)

jejeje, es que no lo tenia bien en claro, ayer practicando me di que pueden ser el mismo nombre pero la relacion serian diferentes tablas. Salu2 y Gracias ahora lo tengo un Poco mas en Claro, Pero espero que me puedas ayudar con la tabla Proveedor. Gracias
__________________
Para llegar a algo se debe de empezar barriendo o pateando Lata!! XD
  #4 (permalink)  
Antiguo 22/11/2011, 16:01
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Respuesta: Duda en Base de Datos (Diseño)

Puedes definir la relación entre proveedor y representante con una tabla más, por ejemplo:

proveedor
id_persona (FK persona)

representante
id_persona (FK persona)

representante_proveedor (relación 1..N entre proveedor y representante)
id_representante_proveedor
id_proveedor (FK persona)
id_representante (FK persona)
(con un campo adicional id_representante_proveedor como PK)

o bien

representante_proveedor (relación 1..N entre proveedor y representante)
id_proveedor (FK persona)
id_representante (FK persona)
(con los campos existentes id_proveedor,id_representante como PK compuesta)

Saludos

Etiquetas: bd, mysql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.