Necesito un poco de ayuda con esto, ya que aun no puedo encontrar una solucion que sea elegante
Empeze teniendo estas tablas y relacionandolas...
(Uso InnoDB)
Tabla Servicios
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id_servicio | int(255) | NO | PRI | NULL | auto_increment |
| id_usuario | int(255) | NO | MUL | NULL | |
| id_gameserver | int(255) | NO | MUL | NULL | |
| id_pago | int(255) | NO | MUL | NULL | |
| fechacreacion | varchar(255) | NO | | NULL | |
| fechainicio | varchar(255) | NO | | NULL | |
| fechatermino | varchar(255) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
Tabla GameServers
+---------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+---------+----------------+
| id_gameserver | int(255) | NO | PRI | NULL | auto_increment |
| id_juego | int(255) | NO | MUL | NULL | |
| slots | int(255) | NO | | NULL | |
| tiposervidor | enum('0','1') | NO | | NULL | |
| hostname | varchar(255) | NO | | NULL | |
| rcon | varchar(255) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
| addons | enum('0','1') | NO | | NULL | |
| id_server | int(255) | NO | MUL | NULL | |
| puerto | int(255) | NO | | NULL | |
| estado | int(1) | NO | | NULL | |
+---------------+---------------+------+-----+---------+----------------+
Tabla Pagos
+----------------+-------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------------+------+-----+---------+----------------+
| id_pago | int(255) | NO | PRI | NULL | auto_increment |
| cantidad | varchar(255) | NO | | NULL | |
| id_comprobante | varchar(255) | NO | | NULL | |
| fechadepago | varchar(255) | NO | | NULL | |
| estado | enum('0','1','2') | NO | | NULL | |
+----------------+-------------------+------+-----+---------+----------------+
Bueno en la tabla servicios necesito los id_gameserver de la tabla gameservers y el id_pago de la tabla pagos...
Lo primero que realice fue relacionarlos
dejando en cada tabla como primary key los id (id_gameserver y id_pagos)
y en la tabla servicios dejarlos como Index, luego los fui a relacionar dejandolos con ON DELETE CASCADE ON UPDATE CASCADE...
Realizaba los siguientes pasos...
Insertaba fila en GameServers obtenia el ID creado.
Insertaba fila en Pagos obtenia el ID creado.
Insertaba fila en Servicios con los IDs obtenidos de las otras tablas.
Bueno todo pense que andaba bien y estaban bien relacionados...
Pero me di cuenta que al eliminar la fila en servicio, las filas en las otras tablas seguian existiendo...
Por lo que cree un nuevo campo llamada id_servicio en las tablas GameServers y Pagos y las relacione con el campo id_servicio de la tabla de servicios..
Pero con esto ya no puedo insertar primero las filas en las tablas gameservers ni en pagos ya que me piden que exista la fila id_servicio en la tabla servicios...
Decido cambiar los pasos insertando primero en servicios por lo tanto no puedo mantener la relacion con id_gameservers ni con id_pago porque no se han insertado...
Bueno aun asi lo pruebo sin tener relacionado esos campos y claro funciona perfectamente ahora eliminando la fila en servicios se borra en pagos y en gameservers pero no tengo referencia en la tabla servicios del id_gameserver y el id_pago...
quedando asi...
TABLA SERVICIOS
TABLA PAGOS
TABLA GAMESERVERS
Me cuesta un poco plantear esto ya que no llevo mucho tiempo en esto...
¿Hay alguna forma de mostrar las tablas con sus relaciones?, porque lo unico que conosco es describe nombretabla;
Espero que me puedan ayudar, se los agradeceria un monton...
SALUDOS
FERNANDO FIGUEROA