Está en la página 1de 5

-- CREACIÓN DE LA BASE DE DATOS

-- Eliminamos base de datos 'Facultad' si existe

DROP DATABASE IF EXISTS Facultad;

-- Creamos base de datos 'Facultad'

CREATE DATABASE Facultad;

-- Designamos 'Facultad' como base de datos actual, a la que se hará referencia en el


resto del código

USE Facultad;

-- CREACIÓN DE LAS TABLAS

/* Borramos las tablas si existen.

Esto no es totalmente necesario ya que anteriormente se eliminó y creó de nuevo la base de


datos.

Por lo tanto, las tablas también quedaron eliminadas*/

DROP TABLE IF EXISTS curso;

DROP TABLE IF EXISTS profesor;

DROP TABLE IF EXISTS tlfContactoProf;

DROP TABLE IF EXISTS asignatura;

DROP TABLE IF EXISTS alumno;

DROP TABLE IF EXISTS matricula;

DROP TABLE IF EXISTS impartir;

-- Creación de tablas

CREATE TABLE curso(

idCurso numeric(2),

nombreDescriptivo text(10) not null,

nAsignaturas numeric(3) not null,

PRIMARY KEY(idCurso)

);

CREATE TABLE profesor(


idProfesor char(5),

NIF char(9) unique,

nombre varchar(50) not null,

apellido1 varchar(50) not null,

apellido2 varchar(50),

email varchar (50) unique,

direccion varchar(100) not null,

codigoPostal numeric(5) not null,

municipio text(50) not null,

provincia text(50) not null,

categoria enum('Catedráticos de Universidad', 'Titulares Universidad', 'Catedráticos de


Escuela Universitaria',

'Titulares de Escuela Universitaria', 'Eméritos', 'Contratados Doctores', 'Contratados


Doctores Interinos',

'Asociados', 'Asociado Interino', 'Ayudantes Doctores', 'Otros Investigadores Doctores', 'PDI


predoctoral'),

PRIMARY KEY(idProfesor)

);

CREATE TABLE tlfContactoProf(

idProfesor char(5) not null,

telefono numeric(9) not null,

FOREIGN KEY(idProfesor) REFERENCES profesor(idProfesor)

ON DELETE cascade -- Eliminando un profesor se eliminarán automáticamente sus teléfonos


de contacto

);

CREATE TABLE asignatura(

curso numeric(2) not null,

idAsignatura char(5) not null,

nombre varchar(150) unique,

cuatrimestre enum('1', '2'),


creditos real not null,

caracter enum('obligatoria', 'optativa') not null,

coordinador char(5) not null,

PRIMARY KEY(idAsignatura),

FOREIGN KEY(curso) REFERENCES curso(idCurso),

FOREIGN KEY(coordinador) REFERENCES profesor(idProfesor)

);

CREATE TABLE alumno(

idAlumno char(5) not null,

NIF char(9)unique, -- NIF es una cadena de caracteres de longitud fija de 9 y un valor único

nombre text(50) not null,

apellido1 text(50) not null,

apellido2 text(50),

email varchar(50) unique,

direccion varchar(100) not null,

codigoPostal numeric(5) not null,

municipio text(50) not null,

provincia text(50) not null,

PRIMARY KEY(idAlumno)

);

CREATE TABLE matricula(

idAlumno char(5) not null,

idAsignatura char(5) not null,

nota real not null,

FOREIGN KEY(idAlumno) REFERENCES alumno(idAlumno),

FOREIGN KEY(idAsignatura) REFERENCES asignatura(idAsignatura),

CHECK (nota > 0)

);
CREATE TABLE impartir(

idProfesor char(5) not null,

idAsignatura char(5) not null,

FOREIGN KEY(idProfesor) REFERENCES profesor(idProfesor),

FOREIGN KEY(idAsignatura) REFERENCES asignatura(idAsignatura)

);

-- Olvidé incluir el campo beca en alumno. Lo incluiremos con alter table

ALTER TABLE alumno

ADD beca char(2) not null;

-- CARGA DE DATOS

/*Carga con inserción manual datos curso. Únicamente introduciremos los datos de
idCurso y nombreDescriptivo

ya que nASignaturas depende del sumatorio de las asignaturas pertenecientes a otra tabla
*/

INSERT INTO curso VALUES(1, 'Primero', 10);

INSERT INTO curso VALUES(2, 'Segundo', 10);

INSERT INTO curso VALUES(3, 'Terceo', 10);

INSERT INTO curso VALUES(4, 'Cuarto', 53);

INSERT INTO curso VALUES(5, 'Master', 11);

INSERT INTO curso VALUES(6, 'Doctorado', 6);

-- Solicitamos el directorio donde donde alojar los archivos que querramos importar

SELECT @@GLOBAL.secure_file_priv;

/*Importamos el archivo alumnos.txt en la tabla alumno estableciendo ";" como separador

entre campos y "\n", significa salto de linea, para definir que cada

registro acaba al haber salto de linea*/

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/alumnos.txt'

INTO TABLE alumno


FIELDS TERMINATED BY ';'

LINES terminated by '\n'

ignore 1 rows;

-- Carga con inserción manual de datos profesor

INSERT INTO profesor VALUES('PR001','34417139B','Juan'

Importamos los teléfonos de contacto de profesores como archivo .CSV

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server


8.0/Uploads/telefonosContacto.csv'

INTO TABLE tlfContactoProf

FIELDS TERMINATED BY ';'

LINES terminated by '\n'

ignore 1 rows;

-- Carga con inserción manual de datos asignatura

INSERT INTO asignatura VALUES (1,'AS001','Algebra lineal','2',6,'obligatoria','PR001');

INSERT INTO asignatura VALUES (1,'AS002','Análisis exploratorio de


datos','1',6,'obligatoria','PR002');

También podría gustarte