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

Relacion de campos MySQL

Estas en el tema de Relacion de campos MySQL en el foro de Bases de Datos General en Foros del Web. Buenas tardes. Tengo cierto problema, debo realizar un pequeño sistema para control de productos y la verdad es mi primera vez en MySQL y tambien ...
  #1 (permalink)  
Antiguo 22/03/2016, 14:02
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Relacion de campos MySQL

Buenas tardes. Tengo cierto problema, debo realizar un pequeño sistema para control de productos y la verdad es mi primera vez en MySQL y tambien hace mucho no toco una base de datos...

Quisiera una ayuda esto es lo que tengo

Código SQL:
Ver original
  1. ***********************************************************
  2. CREATE DATABASE Sistema;
  3.  
  4. CREATE TABLE sistema.productos(
  5. Cod_Prod INT NOT NULL,
  6. Nom_Prod VARCHAR(50),
  7. Cod_Prov INT,
  8. Pre_Vent NUMERIC,
  9. Pre_Cost NUMERIC
  10. );
  11.  
  12. CREATE TABLE Sistema.Proveedores(
  13. Cod_Prov INT NOT NULL,
  14. Nom_Prod VARCHAR(60),
  15. Dir_Prov VARCHAR(200),
  16. Tel_Prov NUMERIC(15)
  17. );
  18.  
  19. *********************************************************

Lo que busco es relacionar el Cod_Prov de Sistema.Proveedores con Cod_Prov de Sistema.Productos

Última edición por gnzsoloyo; 22/03/2016 a las 14:54 Razón: Legibilidad de codig.
  #2 (permalink)  
Antiguo 22/03/2016, 14:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Relacion de campos MySQL

Cita:
Lo que busco es relacionar el Cod_Prov de Sistema.Proveedores con Cod_Prov de Sistema.Productos
No tienes ni claves primarias ni claves úncias en esas tablas, por lo que no peudes hacer ningun tipo de relaciones.
Por otro lado, debes definir primer qué tipo de relación hay.
Si cada producto sólo es provisto por un único proveedor, pero el mismo proveedor puede proveer mñas de un producto, es una relación 1:N y requiere una FK en producto.
Si algun producto puede ser provisto por varios proveedores, y cada proveedor puede proveer varios productos, la relación es N:M y obligatoriamente requiere crear una tercera tabla para adminsitrar las relaciones entre productos y proveedores.
Es inevtable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/03/2016, 17:48
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Relacion de campos MySQL

Gracias, en este caso seria cada producto tiene un solo proveedor y este provee varios productos, si te llevo la idea, creo que quedaria de la siguiente manera

Código SQL:
Ver original
  1. *******************************************************
  2. CREATE TABLE sistema.productos(Cod_Prod INT NOT NULL PRIMARY KEY,
  3.                            Nom_Prod VARCHAR(50),
  4.                            Cod_Prov INT,
  5.                                                    Pre_Vent NUMERIC,
  6.                                                    Pre_Cost NUMERIC
  7.                           );
  8. CREATE TABLE Sistema.Proveedores(Cod_Prov INT NOT NULL PRIMARY KEY,
  9.                                    Nom_Prov VARCHAR(60),
  10.                                                        Dir_Prov VARCHAR(200),
  11.                                                        Tel_Prov NUMERIC(15),
  12.                                                        Cod_Prod INT,
  13.                             FOREIGN KEY (Cod_Prod) REFERENCES Sistema.productos(Cod_Prod)
  14.                                                      );
  15. ********************************************************

Última edición por gnzsoloyo; 22/03/2016 a las 18:11

Etiquetas: campos, mysql
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 02:08.