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

[SOLUCIONADO] Relaciones de las tablas en Mysql

Estas en el tema de Relaciones de las tablas en Mysql en el foro de Mysql en Foros del Web. Saludos... Tengo una relación de tablas de la siguiente manera: proveedores(idproveedor(PK), idprovincia,idciudad(FK)) provincia(idprovincia(PK), nombre) ciudad(idciudad(PK), idprovincia(FK),nombre) Mi pregunta es cual debo relacionar con la tabla ...
  #1 (permalink)  
Antiguo 19/02/2016, 11:09
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Relaciones de las tablas en Mysql

Saludos...
Tengo una relación de tablas de la siguiente manera:
proveedores(idproveedor(PK), idprovincia,idciudad(FK))
provincia(idprovincia(PK), nombre)
ciudad(idciudad(PK), idprovincia(FK),nombre)

Mi pregunta es cual debo relacionar con la tabla proveedores la tabla provincia o la tabla ciudades, porque la tabla ciudad ya esta relacionada con la tabla provincia...

Espero me ayuden con esto porque me estoy confundiendo en esta parte...
  #2 (permalink)  
Antiguo 19/02/2016, 11:24
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: Relaciones de las tablas en Mysql

Cita:
Mi pregunta es cual debo relacionar con la tabla proveedores la tabla provincia o la tabla ciudades, porque la tabla ciudad ya esta relacionada con la tabla provincia...
Creo que la respuesta es medio obvia: Un Proveedor reside en una CIUDAD, es la ciudad la que PERTENECE a una PROVINCIA.
__________________
¿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 19/02/2016, 11:36
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Relaciones de las tablas en Mysql

Bueno si esa parte si pero al momento ya de hacer en el formulario debo ingresar la provincia y la ciudad o solo la ciudad y la provincia ya se puede obtener o no, en esta parte me estoy confundiendo...
  #4 (permalink)  
Antiguo 19/02/2016, 12:40
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: Relaciones de las tablas en Mysql

Cita:
Iniciado por Mauricio89 Ver Mensaje
Bueno si esa parte si pero al momento ya de hacer en el formulario debo ingresar la provincia y la ciudad o solo la ciudad y la provincia ya se puede obtener o no, en esta parte me estoy confundiendo...
LO que hagas en el formulario es irrelevante para la relación de los datos en la base.
Eso es un problema de programación. LO tienes que preguntar en el foro correspondiente al lenguaje.

En esencia, deberás consultar y obtener los datos para completar el formulario en base a las acciones del usuario. Dependerán de ellas las consultas o secuencias de consutlas a la base. Si elige ciudad primero, filtrarás por la ciudad la provincia a la que pertenece. Si elige primero la provincia, tendrás que mostrarle las ciudades de esa provincia para que seleccione la correspondiente.
Nada de eso le importa a la base.

No mires la base como si fuese un reflejo de la aplicación . Bases de datos y procesos de aplicaciones no son la misma cosa. De hecho, toda la estructura de clases de una aplicación no está necesariamente representada en un modelo de tablas exactamente igual. La base de datos tiene un esquema de normalizaciones que no existen en el modelo de clases.
Una clase de la aplciación podría ser una tabla en la base, pero también podría estar repartida en cincuenta tablas diferentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/02/2016, 13:42
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Relaciones de las tablas en Mysql

Gracias por esa explicación con eso me aclaraste muchas cosas....

Y otra pregunta si tengo una tabla formada con un PK compuesta asi
bodegas(idbodega(PK),idempresa(PK),nombre)
y la relaciono con otra tabla así
ventas(idventa(PK),idempresa(PK)(FK), idbodega(FK),cliente,etc...)

si lo puedo hacer esto o esta mal estructurado mis tablas con las PK compuestas, y tambien si en la integridad utilizo on delete y on update cascade y si borro un registro de la bodega que estoy utilizadno en ventas se me borra tambien la venta o me da problemas y no me borra el registro..

Gracias por la ayuda....
  #6 (permalink)  
Antiguo 19/02/2016, 14:30
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Relaciones de las tablas en Mysql

En el esquema que manejas la relacion con la tabla bodegas seria:

bodegas(idbodega(PK),idempresa(PK),nombre)

ventas(idventa(PK),idbodega(FK),cliente,etc...)

Se supone que la empresa ya esta en la bodega asi que no necesitarias ponerla como llave de la venta
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 19/02/2016, 14:50
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Relaciones de las tablas en Mysql

Pero cuando se utiliza las PK compuestas tambien las FK deben ser del mismo tamaño o en tal caso compuesta misma o no...
mis tablas son:
empresas(idempresa(PK),nombre,etc...)
bodegas(idbodega(PK),idempresa(PK),nombre)
clientes(ruc(PK),idempresa(PK),nombre,etc..)
ventas(idventa(PK),idempresa(FK), idbodega(FK),ruc(FK),etc...)

la tabla empresa es padre de las bodegas y clientes pero esas tablas a su vez se relaciona con la tabla ventas, no se si pueda hacer eso o estoy haciendo mal....
  #8 (permalink)  
Antiguo 19/02/2016, 14:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Relaciones de las tablas en Mysql

Para evitarte las llaves compuestas podrias hacer tablas intermedias algo asi:

empresas(idempresa(PK),nombre,etc...)
bodegas(id_bodega(pK), nombre)
bodegas_empresas( id(PK) id_bodega(fk), id_empresa(fk))
clientes(ruc(PK), id_empresa(fk),nombre)
ventas(id_venta8pk), id_bodega_empresa(fk), ruc(fk))
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 19/02/2016, 15:04
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: Relaciones de las tablas en Mysql

Las claves compuestas solo existen por necesidades de diseño, o por requerimiento de clave unica.
En tu caso la PK de la bodega, desde el momento en que dedicas un campo específico a un identificador único (idbodega), no debería ser clave compuesta. El ID de la empresa debería ser FK y no parte de la PK de esa tabla.

Lo mismo sucede con las ventas, donde la bodega debería ser FK, al igual que la empresa.

Tienes algunos problemas con los conceptos del modelo relacional...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 19/02/2016, 15:16
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Relaciones de las tablas en Mysql

Bueno eso si algunas cosas se me complican al momento de relacionar y en algunos casos si seria el requerimiento de una PK compuesta para que no se repita pero la idea del usuario Libras creo que no esta mal para poder reestructurar mis tablas gracias por la ayuda me voy a poner a revisar algunos conceptos.....gracias

Etiquetas: relaciones, tabla, tablas
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 17:35.