Comandos básicos en MySQL (III)


En esta tercera entrega veremos un ejemplo de creación de tablas en MySQL.

Se nos pide añadir a nuestra base de datos “sanidad” dos nuevas tablas: una referente a los Cursos de Especialización para el personal de los hospitales, donde se reflejarán los datos de cada curso ofrecido.

Y otra sobre la realización de estos cursos. En qué hospital se dan, que doctor imparte la clase y cuándo se realizan.

Se nos dan unos valores que tendremos que respetar y que definimos en la declaración de valores.

CURSOS_ESPECIALITZACIO

CodCurs: codigo del curs de formación

Valores de tipo0 entero i positivo. Clave primaria

NomCurs: nombre del curso de formación

Cadena de caracteres, màxim 60, valor obligatorio

descripcioCurs: descripción del curso

Cadena de caracteres, máxim 60

REALITZA_CURS

CodCurs: código del curso de formación

Valores de tipo entero y positivo. Clave primaria. Clave externa que referencia a la tabla CURSOS_ESPECIALITZACIÓ

HOSPITAL_COD: código del hospital

Valores de tipo entero y positivo. Clave externa que referencia a la tabla DOCTOR

DOCTOR_NO: código del doctor

Valores de tipo entero y positivo. Clave externa que referencia a la tabla DOCTOR

dataCurs: fecha inicio curso

Formato valor fecha, valor obligatorio.

 

CREATE TABLE IF NOT EXISTS CURSOS_ESPECIALITZACIO (
CODCURS            SMALLINT (4) UNSIGNED PRIMARY KEY,
NOMCURS            VARCHAR (60) NOT NULL,
DESCRIPCIO_CURS     VARCHAR (60)
);
 
CREATE TABLE IF NOT EXISTS REALITZA_CURS (
CODCURS        SMALLINT (4) unsigned,
HOSPITAL_COD    TINYINT(2),
DOCTOR_NO        SMALLINT(3),
DATA_CURS        date NOT NULL,
PRIMARY KEY (CODCURS, HOSPITAL_COD, DOCTOR_NO),
FOREIGN KEY (CODCURS) REFERENCES sanitat.CURSOS_ESPECIALITZACIO (CODCURS),
FOREIGN KEY (HOSPITAL_COD, DOCTOR_NO) REFERENCES sanitat.DOCTOR (HOSPITAL_COD, DOCTOR_NO)
);

La dificultad de este ejercicio, en mi opinión, radica en la inclusión de las claves foráneas.

Debemos referenciarlas usando FOREIGN KEY (valor1, valor2…) REFERENCES Tabla (valor1, valor2…) Hay que tener cuidado de que los valores entre ambos sean EXACTAMENTE del mismo tipo. Por ejemplo, para CODCURS deberemos asegurarnos que en todas las tablas en las que aparece CODCURS SMALLINT(4) UNSIGNED. Si no, nos dará el fatídico error 1215.