Relacionar con claves varias tablas.

Soy novato en esto de las bases de datos y php. Me gustaría que me indicaras como puedo relacionar con claves varias tablas.
Por ejemplo:
Una tabla
CREATE TABLE paciente(
pacienteID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(pacienteID),
Nombre varchar(15),
Apellidos varchar(15),
Teléfono int,
Email varchar(15))


Y otra tabla
CREATE TABLE cita(
citaID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(citaID),
Fecha date,
Hora time,
Nota varchar(200),
pacienteID int NOT NULL )
Como podría crear la relación de claves para cuando genere los registros, en pacienteID de tabla paciente sea automáticamente el mismo que pacienteID de tabla cita.

1 Respuesta

Respuesta
1

Veamos.

PacienteID es clave primaria en tabla paciente y clave foránea en tabla cita.

Esto significa que ningún paciente tendrá el mismo valor PacienteID que otro, o sea, nunca se repetirá, en tanto que puede haber ninguna, una o muchas citas con el mismo PacienteID, dependiendo de las veces que haya concurrido el mismo paciente.

El valor de PacienteID en cita servirá para referenciar el registro del paciente y obtener sus datos.

Entonces, no parece tener sentido la pregunta tal como se escribe: "como podría crear la relación de claves para cuando genere los registros, en pacienteID de tabla paciente sea automáticamente el mismo que pacienteID de tabla cita" debido a que no hay un valor automático, sino que el usuario debe elegir el paciente.

Te dejo tres posibles respuestas:

1) Para que sea obligatorio, al guardar una cita, que esta contenga el PacienteID de un paciente existente, esto se controla mediante integridad referencial. En MySQL requiere que las tablas sean del tipo InnoDB y que haya un índice definido sobre el campo que es clave foránea (además del índice sobre la clave primaria en la otra tabla). Si tienes preguntas sobre Integridad Referencial abre una nueva consulta. La IR es solamente para crear reglas, no graba ni lee ni nada parecido.

2) Para obtener un número de PacienteID correcto y a elección del usuario, debe usarse PHP y tal vez un poco de AJAX para permitirle hacer la elección. Una vez que se tiene el número de PacienteID, se guarda como una cita junto con los demás datos. El paciente debe existir previamente en la tabla.

3) Para leer una cita y que junto con ella vengan los datos del paciente, se hace así:

SELECT cita.*, paciente.*

FROM cita, paciente

WHERE paciente.pacienteid=cita.pacienteid;

Esto te traerá todos los datos de la tabla cita y todos los datos asociados al paciente que se referencia en el registro de cita. Luego usas PHP para mostrar los datos que desees mostrar.

Espero haberte comprendido y que me comprendas, si aún no arribamos a la solución te invito a seguir preguntando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas