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

Insert en tablas intermedias

Estas en el tema de Insert en tablas intermedias en el foro de Mysql en Foros del Web. Hola a todos. He credado una base de datos para mi despacho como abogado. Para ese fin hecreado tres tablas (todas funcionan con motor innodb) ...
  #1 (permalink)  
Antiguo 02/03/2012, 09:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Insert en tablas intermedias

Hola a todos.
He credado una base de datos para mi despacho como abogado. Para ese fin hecreado tres tablas (todas funcionan con motor innodb)
La primera tabla, llamada asunto, almacena los casos de que me ocupo y contiene, como más importantes, los siguientes campos:
asunto_id INT, AUTO_INCREMENT
cuantia FLOAT,
materia VARCHAR(200)
PRIMARY KEY asunto_id

La segunda tabla se llama "persona" y allí pretendo almacenar todas las personas con las que me relaciono por razones profesionales y que intervinen o han intervenido en distintos asunto. Esta tabla tiene los siguientes campos:
persona_id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(200),
primer_apellido VARCHAR(200),
segundo_apellido VARCHAR(200)
Las personas guardadas en "persona" pueden haberlo sido porque: o fueran clientes o contrarios o testigos o peritos en un asunto.
Por eso credo una tabla llamada "rol" con los siguientes campos:
rol_id INT AUTO_INCREMENT PRIMARY KEY,
descripcion ENUM('cliente', ''contrario', 'testigo', 'perito')
Como una misma persona, a lo largo del tiempo, aunque no es frecuente, puede desempeñar roles distintos y, a su vez, roles distintos pueden ser desempeñados por varias personas creo una tabla intermedia para solucionar esta relación muchos a muchos que llamo "persona_rol" que tiene como campos:
persona_id PK,
rol_id PK
También creo otra tabla que relaciona personas y sus respectivos roles con un determinado procedimiento. A esta tabla la llamo personas_asunto y contiene los siguientes campos:
asunto_id INT PRIMARY KEY,
persona_id INT PRIMARY KEY,
rol_id INT PRIMARY KEY.
Pues bien, lo que me gustaría saber es: ¿de qué modo puedo automatizar la tarea de insertar datos en las tablas intermedias que no me obligue después de introducir una persona y un nuevo asunto a ir a la tabla rol_persona a especificar el rol_id que le corresponde y luego a persona_asunto a añadir los de persona_id, rol_id y asunto_id.
He intentado hacerlo con TRIGGERS pero el resultado no ha sido satisfactorio quizás por lo poco que los he utilizado hasta ahora.
Si alguien supiera como hacer INSERTS en tablas intermedias ahorrándome todos esos pasos o solucionar el problema con otro diseño de la base le estaría muy agradecido
  #2 (permalink)  
Antiguo 04/03/2012, 02:59
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Insert en tablas intermedias

¿de qué modo puedo automatizar la tarea de insertar datos en las tablas intermedias que no me obligue después de introducir una persona y un nuevo asunto a ir a la tabla rol_persona a especificar el rol_id que le corresponde y luego a persona_asunto a añadir los de persona_id, rol_id y asunto_id. No hay un forma automática, tienes que hacerlo por código, sean procedimientos almacenados en la db o el lenguaje de programación que utilices.
He intentado hacerlo con TRIGGERS pero el resultado no ha sido satisfactorio quizás por lo poco que los he utilizado hasta ahora. Si no estás usando otro lenguage como PHP o Java, es la única solución, si no te ha dado resultado es porque necesitas aprender, pero desde luego que funcionan y bastante bien. http://barcoavenus.blog.com/2010/12/...ados-en-mysql/
En tu caso, lo que planteas en una aplicación típica de crear, editar, borrar elementos, lo normal sería que lo hagas en PHP o similar. Creo que Dreamweaver tiene una utilidad que te ayuda a crear programas basados en tablas.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 05/03/2012, 02:49
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Insert en tablas intermedias

Gracias por tu respuesta. Seguiré estudiando el tema. Cuando dije que el trigger no me funcionaba es porque, por ejemplo, en la tabla intermedia persona_asunto cuando le decía que se actualizase así que se incluía un nuevo rol y persona en la tabla persona_rol me salía un WARNING diciendo que asunto_id no tenía un valor por defecto. Por ese motivo en la tabla persona_asunto el trigger únicamente actualizaba persona_id pero no ni el rol_id ni el asunto_id.
En fin, gracias por tu respuesta y tu enlace que leeré con mucho gusto.
Saludos

Etiquetas: insert, intermedias, tablas, trigger
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 18:47.