Enunciado #
Una red de clínicas de cirugía atiende a pacientes adultos y menores. Un paciente puede acudir a distintas clínicas y repetir visitas a una misma clínica. Cada visita constituye un episodio quirúrgico en el que pueden intervenir varios médicos.
Datos que debes almacenar #
El documento deja abiertos los atributos descriptivos de pacientes, clínicas y médicos. Para concretar la solución, usa:
- Paciente:
id_paciente(entero, identificador),nombre(texto),apellidos(texto) yfecha_nacimiento(fecha). El identificador interno permite registrar también menores sin DNI. - Clinica:
id_clinica(entero, identificador),nombre(texto) ydireccion(texto). - Medico:
id_medico(entero, identificador),nombre(texto),apellidos(texto) yespecialidad(texto). - Episodio:
id_paciente(entero),id_clinica(entero),fecha_hora_ingreso(fechahora),fecha_hora_alta(fechahora, opcional hasta el alta),diagnostico(texto) yobservaciones(texto, opcional). - Intervencion:
id_paciente(entero),id_clinica(entero),fecha_hora_ingreso(fechahora),id_medico(entero),tarea(texto),tiempo_minutos(entero) yresultado(texto, opcional).
Reglas del negocio #
- La PK de
Episodioes exactamente(id_paciente, id_clinica, fecha_hora_ingreso). No añadas un identificador artificial. - Un episodio pertenece a un paciente y a una clínica. La fecha de ingreso permite repetir visitas del mismo paciente a la misma clínica.
- La relación entre
MedicoyEpisodioes N:N. La PK deIntervencioncontiene los tres campos del episodio yid_medico. - Para concretar el alcance, se registra una participación por médico y episodio;
tarearesume su trabajo. Si hubiera que guardar varias actuaciones separadas del mismo médico en ese episodio, haría falta ampliar la clave o añadir otra tabla. - Los tres campos del episodio en
Intervencionforman una única FK compuesta haciaEpisodio. No los conectes directamente conPacienteoClinica: debe existir el episodio completo que se referencia. - No se exige que un médico trabaje habitualmente en la clínica donde interviene; esa ampliación opcional del documento queda fuera de este challenge.
Restricción temporal #
En el campo Episodio.fecha_hora_alta, escribe exactamente este CHECK:
1fecha_hora_alta IS NULL OR fecha_hora_alta >= fecha_hora_ingreso
Así se permite un episodio abierto y se impide un alta anterior al ingreso. El tiempo dedicado debe ser positivo; su rango se validaría al implementar la base de datos.
Diseña las cinco tablas y representa todos los componentes de la FK compuesta.
Criterios para el challenge #
Conserva los nombres de tablas y campos indicados; los nombres de campos están escritos sin tildes y con guiones bajos. Los tipos entre paréntesis corresponden a las opciones del editor. Todos los campos son obligatorios (NN), salvo los marcados como opcionales; marca las claves primarias (PK), foráneas (FK) y las restricciones de unicidad que se deducen de las reglas.
Deja desactivados autoincremento, clave alternativa e índice. Deja vacíos el valor por defecto, las acciones ON DELETE y ON UPDATE y, salvo que se indique expresamente, CHECK. Usa los extremos 1 y n, o 1 y 1, en las conexiones; una FK opcional tiene NN desmarcado.
Una PK compuesta identifica por la combinación de sus campos: no marques cada componente como único por separado. Si una FK referencia una PK compuesta, dibuja una conexión por cada pareja de campos; todas juntas representan una única referencia a la misma fila. En una implementación SQL se debe declarar una sola FOREIGN KEY con todas esas columnas, no varias referencias independientes. El editor no comprueba por sí solo las reglas sobre varias filas ni todas las restricciones compuestas.