rem ----------------------------------------------------------------------------------------------- rem Elimina restos base de datos anterior DROP TABLE DetalleMatricula; DROP TABLE Asignatura; DROP TABLE Pago; DROP TABLE Matricula; DROP TABLE Alumno; DROP TABLE Profesor; DROP TABLE Persona; DROP SEQUENCE SecPID; DROP SEQUENCE SecMID; DROP SEQUENCE SecPAG; rem ----------------------------------------------------------------------------------------------- rem Creamos la base de datos nueva CREATE TABLE Persona ( PID INTEGER PRIMARY KEY, /*Identificador de persona*/ nombre VARCHAR(15) NOT NULL, /*Nombre de la persona*/ apellido1 VARCHAR(15) NOT NULL, /*Primer apellido de la persona*/ apellido2 VARCHAR(15), /*Segundo apellido de la persona*/ direccion VARCHAR(30) NOT NULL, /*Direccion de la persona, calle, plaza, piso, puerta, escalera, portal, etc.*/ cp VARCHAR(5), /*Codigo postal de la direccion de una persona*/ localidad VARCHAR(30) NOT NULL, /*Localidad de la direccion de una persona*/ provincia VARCHAR(20) NOT NULL, /*Provincia de la direccion de una persona*/ telefono VARCHAR(15), /*Telefono de contacto de una persona*/ email VARCHAR(30), /*Correo electronico de una persona*/ lugarNacimiento VARCHAR(30), /*Lugar de nacimiento de una persona*/ fechaNacimiento DATE, /*Fecha de nacimento de una persona*/ NIF VARCHAR(9), /*Numero de Identificacion Fiscal (DNI+ letra)*/ sexo CHAR(1) NOT NULL CHECK (sexo IN ('H','M')), /*Sexo de la persona: Hombre (H) o mujer (M)*/ nacionalidad VARCHAR(15) NOT NULL /*Nacionalidad de una persona*/ ); CREATE TABLE Profesor ( PID INTEGER PRIMARY KEY REFERENCES Persona, /*Identificador de persona*/ login VARCHAR(15) NOT NULL, /*Nombre de usuario para accder al sistema*/ password VARCHAR(15) NOT NULL, /*Contraseņa para acceder al sistema*/ categoria VARCHAR(15), /*Categoria del profesor: catedratico, contratado, ayudante, etc.*/ fechaAlta DATE NOT NULL, /*Fecha de alta como profesor*/ departamento VARCHAR(30), /*Departamento al que pertence el profesor*/ despacho VARCHAR(6), /*Despacho del profesor*/ telefonoDpcho VARCHAR(15) NOT NULL /*Telefono del despacho de un profesor*/ ); CREATE TABLE Alumno ( PID INTEGER PRIMARY KEY REFERENCES Persona, /*Identificador de persona*/ login VARCHAR(15) NOT NULL, /*Nombre de usuario para accder al sistema*/ password VARCHAR(15) NOT NULL, /*Contraseņa para acceder al sistema*/ familiaNumerosa CHAR(1) NOT NULL CHECK (familiaNumerosa IN ('S','N')), /*Si es familia numerosa (S) o no(N)*/ centroProcedencia VARCHAR(30), /*Centro de procedencia del alumno*/ acceso NUMBER(4,0), /*Aņo de acceso del alumno*/ notaAcceso REAL /*Nota de acceso del alumno*/ ); CREATE TABLE Asignatura ( nombre VARCHAR(50) PRIMARY KEY, /*Nombre de la asignatura*/ creditosTeoricos NUMBER(2,1) NOT NULL, /*Numero de creditos de teoria de la asignatura*/ creditosPracticos NUMBER(2,1) NOT NULL, /*Numero de creditos de practicas de la asignatura*/ tipo CHAR(1) NOT NULL CHECK (tipo IN ('O','T','P','L')), /*Tipo de asignatura: obligatoria (O), Troncal (T), Optativa(P), Libre configuracion(L)*/ cuatrimestre NUMBER(1) ); CREATE TABLE Matricula ( IDMatricula INTEGER PRIMARY KEY, /*Identificador de la matricula*/ IDAlumno INTEGER REFERENCES Alumno(PID), /*Identificador del alumno*/ tipo CHAR(1) NOT NULL CHECK (tipo IN ('O','L','U')), /*Tipo de asignatura: ordinaria (O), libre (L), Personal Universidad(U)*/ numeroPlazos NUMBER(1,0) NOT NULL, /*Numero de plazos de la matricula (1 o 2)*/ fechaExpedicion DATE, /*Fecha de expedidion de la matricula*/ curso NUMBER(4) /*Curso mas alto del que se matricula*/ ); CREATE TABLE DetalleMatricula ( IDMatricula INTEGER REFERENCES Matricula, /*Identificador de la matricula*/ nombre VARCHAR(50) REFERENCES Asignatura, /*Identificador de asignatura*/ Primary Key(IDMatricula,nombre) ); CREATE TABLE Pago ( IDPago INTEGER PRIMARY KEY, /*Identificador del pago*/ cantidad NUMBER(7,0) NOT NULL, /*Cantidad que hay que pagar*/ abonado NUMBER(1,0) NOT NULL CHECK (abonado IN (0,1)), /*Si el pago esta hecho (1) o no (0)*/ fechaPago DATE, /*Fecha en la que se ha realizado el pago*/ IDMatricula INTEGER REFERENCES Matricula /*Identificador de la matricula a la que pertenece el pago*/ ); CREATE SEQUENCE SecPID START WITH 1 INCREMENT BY 1 /* Secuencia para identificadores de personas*/; CREATE SEQUENCE SecMID START WITH 1 INCREMENT BY 1 /* Secuencia para identificadores de matriculas*/; CREATE SEQUENCE SecPAG START WITH 1 INCREMENT BY 1 /* Secuencia para identificadores de pagos*/; commit;