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

Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

Estas en el tema de Utilizar INSERT, UPDATE y DELETE en tablas relacionadas en el foro de Mysql en Foros del Web. Hola a todos, Tengo dudas acerca de el uso de tablas relacionadas. Resulta que estoy diseñando una web en la que se pueden registrar usuarios. ...
  #1 (permalink)  
Antiguo 07/01/2010, 16:56
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

Hola a todos,

Tengo dudas acerca de el uso de tablas relacionadas.
Resulta que estoy diseñando una web en la que se pueden registrar usuarios. Tengo dos tablas relacionadas:

-La primera incluye los datos personales.
-La segunda los idiomas que sabe. (Inglés, Español, etc...)

El usuario puede introducir los diferentes idiomas a través de checkbox (existen 12 idiomas disponibles)

La pregunta es:

-¿Cual sería la forma de añadir, modificar y borrar en tablas relacionadas?
-¿Si un usuario introduce sus datos personales y selecciona 10 idiomas diferentes como los añado, modifico o borro (estando las dos tablas relacionadas?

Un saludo y gracias de antemano!

  #2 (permalink)  
Antiguo 07/01/2010, 17: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: Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

No añades idiomas. Pones primero el usuario y luego en el campo de idioma (FK referida a idiomas) de la tabla de usuarios_idiomas el ID del idioma correspondiente junto al ID del usuario.
Esto significa que necesitas 3 tablas y no 2.
__________________
¿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 08/01/2010, 03:13
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Respuesta: Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

ok, lo tendré en cuenta, gracias por tu respuesta pero sigo con la misma duda:

-¿Cual sería la forma de añadir, modificar y borrar en tablas relacionadas?
-¿es el mismo proceso que sin tener relación, es decir, un insert/update/delete para cada tabla?

Saludos!!
  #4 (permalink)  
Antiguo 08/01/2010, 05:10
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: Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

El tener tablas relacionadas por FK tiene por objetivo mantener una integridad y consistencia de datos. Regulan en algún sentido ciertos pasos de inserción y/o actualización y borrado, pero es asunto del programador el respetar esa misma integridad y consistencia, ya que la base de datos la controla pero no realiza tareas que no estén programadas en sus recursso.
En el ejemplo que te he dado se desprende perfectamente cómo sería un proceso de inserción, si a eso es a lo que te refieres...

¿Qué duda te plantea?
__________________
¿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 08/01/2010, 09:09
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Respuesta: Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

Si, entiendo..

Yo, por ejemplo, en tiempos pasados hubiera creado una sola tabla con los campos siguientes:

"nombre","dirección","teléfono"...

y también con:

"ingles","francés","español","catalán"...

Y si el usuario escoge en la web el idioma ingles y frances pues marcaba con TRUE los campos "inglés" y "frances", entonces todo lo podia manejar con un solo insert, un solo update, etc...
Al tener relaciones con diferentes tablas esto supongo que no es posible, es decir, tengo que utilizar un insert/update/delete para cada tabla, verdad? o existen sentencias sql que permiten, mediante un solo insert/update/delete realizar todas las operaciones de golpe?

Gracias por tu ayuda y tu paciencia!

  #6 (permalink)  
Antiguo 08/01/2010, 09:43
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: Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

Cita:
Al tener relaciones con diferentes tablas esto supongo que no es posible, es decir, tengo que utilizar un insert/update/delete para cada tabla, verdad? o existen sentencias sql que permiten, mediante un solo insert/update/delete realizar todas las operaciones de golpe?
No, en cuanto a realizar inserciones en diferentes tablas.
Sí lo puedes hacer con múltiples registros usando la sintaxis de carga masiva:
Código MySQL:
Ver original
  1. INSERT INTO tabla(campos)
  2. VALUES(valores1), (valores2), ... (valoresN);
Lo que también puedes hacer es invocar stored procedures para realizar varias inserciones programándolas dentro de él, y esto implicaría una sola llamada (CALL...).
n cualquier caso es algo que hay que analizar de acuerdo al modelo de datos en cuestión y de los procesos de la aplicación que usa la base de datos.

Lo que sí quiero que se entienda es que en este tipo de modelado, las tablas que contienen los idiomas son tablas fijas o virtualmente fijas (tablas que se diseñan para contener un conjunto de datos fijos y que no se actualizan), ya que no tiene ningún sentido enviar "INGLÉS" todas las veces, cuando en realidad lo que necesitas es el ID que corresponde al idioma, de la tabla respectiva.

Por eso mencionaba lo de TRES tablas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/01/2010, 10:17
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Respuesta: Utilizar INSERT, UPDATE y DELETE en tablas relacionadas

Hola de nuevo,

Si, te entiendo..., es lógico tener una tercera tabla con valores "fijos", en este caso los idiomas.

Estoy pensando en crear 3 tablas:

1ª-datos_personales (datos personales)
2ª-idiomas_disponibles (tabla con una lista de todos los idiomas)
3ª-idiomas_elegidos (conectar el id de "datos_personales" con el id del "idiomas_disponibles")

Entonces para insertar datos:

Cuando el usuario inserte los datos personales usar insert para la tabla "datos_personales" y cuando elija los idiomas usar otro insert para insertar en la tabla "idiomas_elegidos" la id de "datos_ personales" y todas las id de "idioma_disponibles"

Para borrar datos:

Usar delete para borrar los datos personales mediante la id de la tabla "datos_personales" y usar otro delete para borrar los datos mediante el id de la tabla "idiomas_elegidos"

Seria correcto verdad?

Un saludo!

Última edición por davidj; 08/01/2010 a las 10:30

Etiquetas: delete, insert, relacionadas, tablas, update, utilidades
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 19:02.