university accommodation office diseÑo fÍsico

Post on 01-Jun-2015

1.663 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Se describe como diseñar el modelo físico de la base de datos University Accommodation Office

TRANSCRIPT

Wednesday, April 12, 2023 2

Empleados(#Empleado, NombreE, ApellidoE, DireccionE, Telf, DOB, sexo, categoria, salario)

Estudiantes(cedula, NombreEst, ApellidoEst, DireccionEst, Telf, Sexo, DOB, categoriaEst, estado, Fumador, tipoAlojamiento, duracionAlojamiento, idCurso)

Departamento(#Dep, NombreD, DireccionD, Telf, noEmp, #HabitacionesD, tipoD)

Habitacion(idHabitacion, #Habitacion, costo, #Dep)

Facturas(#Factura, Semestre, FechaEmision, FechaPago, #Contrato, idPago)

Wednesday, April 12, 2023 3

Pago(idPago, tipoPago)

Contratos(#Contrato, FechaInicio, FechaSalida, cedula, idHabitacion)

Cursos(idCurso, TituloCurso, Instructor, #Telf, idHabitacion)

Parientes(cedulaPar, NombrePar, RelacionEst, DireccionPar, #Telf, cedulaEst)

InspeccionDepartamento(#Dep, fechaInsp, comentario, estado, #Emp)

Wednesday, April 12, 2023 4

CREATE TABLE Estudiante(cedula NUMBER(11) NOT NULL, NombreEst VARCHAR2(30) NOT NULL, ApellidoEst VARCHAR2(30) NOT NULL,DireccionEst VARCHAR2(40) NOT NULL, Telf VARCHAR2(20),sexo CHAR NOT NULL, DOB DATE NOT NULL, CategoriaEst CHAR NOT NULL, estado CHAR NOT NULL, fumador CHAR NOT NULL, tipo CHAR NOT NULL,idCurso NUMBER(8), PRIMARY KEY (cedula),CONSTRAINT cursoToma FOREIGN KEY (idCurso) REFERENCES Curso(idCurso) ON UPDATE CASCADE ON DELETE NO ACTION

);

CREATE TABLE Departamento(NoDep NUMBER(8) NOT NULL, nombreD VARCHAR2(20) NOT NULL, direccionD VARCHAR2(80) NOT NULL,noHabitaciones NUMBER(2), telf NUMBER(10),tipoD VARCHAR2(15) NOT NULL,PRIMARY KEY (NoDep)

);

CREATE TABLE Empleados (NoEmpleado NUMBER(10) NOT NULL, NombreE VARCHAR2(30) NOT NULL, ApellidoE VARCHAR2(30) NOT NULL, DireccionE VARCHAR2(80) NOT NULL, Telf VARCHAR2(20) NOT NULL, DOB DATE NOT NULL, sexo CHAR NOT NULL,Categoria VARCHAR2(20) NOT NULL, salario NUMBER(8,2) NOT NULL, PRIMARY KEY (NoEmpleado)

);

CREATE TABLE InspeccionDepartamento(NoDep NUMBER(8) NOT NULL, fechaInsp DATE NOT NULL, comentario VARCHAR2(40) NOT NULL, estado CHAR NOT NULL, NoEmpleado NUMBER(8) NOT NULL, PRIMARY KEY (noDep, fechaInsp),CONSTRAINT NoDep FOREIGN KEY (NoDep) REFERENCES Departamento(NoDep) ON UPDATE CASCADE ON DELETE NO ACTION,CONSTRAINT numeroEmpleado FOREIGN KEY (NoEmpleado) REFERENCES Empleados(NoEmpleado) ON UPDATE CASCADE ON DELETE NO ACTION

);

CREATE TABLE Curso(idCurso NUMBER(8) NOT NULL, tituloCurso VARCHAR2(30), instructor VARCHAR2(20), telefonoCurso NUMBER(10), idHabitacion NUMBER(8) , PRIMARY KEY (idCurso),CONSTRAINT numeroHabitacion FOREIGN KEY

(idHabitacion) REFERENCES Habitacion(idHabitacion) ON UPDATE CASCADE ON DELETE NO ACTION

);

CREATE TABLE TipoPago (idPago NUMBER(2) NOT NULL,

tipoPago VARCHAR2(40) NOT NULL,PRIMARY KEY (idPago)

);

CREATE TABLE Habitacion(idHabitacion NUMBER(8) NOT NULL, NoHabitacion NUMBER(8) NOT NULL, costo NUMBER(6, 2) NOT NULL, NoDep NUMBER(8) NOT NULL, PRIMARY KEY (idHabitacion),CONSTRAINT NumeroDepartamento FOREIGN KEY (NoDep) REFERENCES Departamento(Nodep) ON

UPDATE CASCADE ON DELETE NO ACTION);

CREATE TABLE Contrato(NoContrato NUMBER(8) NOT NULL, fechaInicio DATE NOT NULL, fechaSalida DATE NOT NULL, cedula NUMBER(11) NOT NULL, idHabitacion NUMBER(8) NOT NULL,PRIMARY KEY (NoContrato), CONSTRAINT estudiante FOREIGN KEY (cedula) REFERENCES Estudiante(cedula) ON UPDATE CASCADE ON DELETE NO

ACTION,CONSTRAINT idHabitacion FOREIGN KEY (idHabitacion)

REFERENCES Habitacion(idHabitacion) ON UPDATE CASCADE ON DELETE NO ACTION);

CREATE TABLE Factura( NoFactura NUMBER(8) NOT NULL, semestre CHAR NOT NULL, fechaEmision DATE NOT NULL, fechaPago DATE, NoContrato NUMBER(8) NOT NULL, idPago NUMBER(2) NOT NULL,

monto NUMBER(6, 2) NOT NULL,PRIMARY KEY (NoFactura),CONSTRAINT numeroContrato FOREIGN KEY (NoContrato)REFERENCES Contrato(NoContrato),CONSTRAINT metodoPago FOREIGN KEY (idPago)

REFERENCES TipoPago(idPago));

CREATE TABLE Pariente(cedulaP NUMBER(11) NOT NULL, relacionEst VARCHAR2(30), direccionP VARCHAR2(25),

telefonoP NUMBER(10), cedulaEst NUMBER(11), PRIMARY KEY (cedulaP),CONSTRAINT cedEstudiante FOREIGN KEY

(cedulaEst) REFERENCES Estudiante(cedula) ON UPDATE CASCADE ON DELETE NO ACTION);

a) Presentar un informe que indique el nombre y el número de matricula de todos los estudiantes, junto con los detalles relativos a sus contratos de alquiler.

b) Mostrar los detalles de los contratos de alquiler que estén vigentes el semestre de verano.

c) Mostrar los detalles relativos al alquiler total pagado por un cierto estudiante.

d) Presentar un informe sobre los estudiantes que no hayan pagado sus facturas en una fecha determinada.

 

Wednesday, April 12, 2023 16

I L A B I L A B I L A B I L A B

EmpleadosEstudiantes x x x

DepartamentosHabitación x

Facturas x x x x

Pago x

Contratos x x

Cursos ParientesInspeccionDepartamentoI = Inserción L = LecturaA = ActualizadoB = Borrado

(A) (B) (C)

Transacción/Relación(D)

SELECT e.cedula, e.nombreEst, e.apellidoEst, f.NoFactura AS NUMERO_FACTURA, c.noContrato, c.fechaInicio, c.fechaSalida, c.idHabitacion

FROM Estudiante e, Contrato c, Factura f WHERE (e.cedula = c.cedula) and c.noContrato =

f.noContrato;

SELECT e.cedula, e.nombreEst, e.apellidoEst, f.monto AS AlquilerTotal

FROM Estudiante e, Contrato c, Factura fWHERE (e.cedula = c.cedula) and c.noContrato =

f.noContrato;

SELECT e.cedula, e.nombreEst, e.apellidoEst, f.NoFactura AS NUMERO_FACTURA, c.noContrato, c.fechaInicio, c.fechaSalida, c.idHabitacion

FROM Estudiante e, Contrato c, Factura fWHERE (e.cedula = c.cedula) and c.noContrato =

f.noContrato;

SELECT * FROM Contrato CWHERE NoContrato = (SELECT NoContrato FROM Factura F WHERE C.NoContrato = F.NoContrato and

F.semestre = 'V');

CREATE UNIQUE INDEX NombreEstudiantes ON Estudiante(nombreEst);

CREATE UNIQUE INDEX ApellidoEstudiantes ON Estudiante(apellidoEst);

CREATE UNIQUE INDEX NombreDepartamento ON Departamento(nombreD);

CREATE UNIQUE INDEX DireccionDepartamento ON Departamento(direccionD);

CREATE UNIQUE INDEX NombreEmpleado ON Empleado(nombreE);

CREATE UNIQUE INDEX ApellidoEmpleado ON Empleado(apellidoE);

Tabla Índice

EstudianteNombreEst

Apellido Est

Departamento nombreD

direcciónD

Empleado nombreE

direcciónE

CREATE VIEW DIRECTOR ASSELECT * FROM EstudianteWHERE estado = 'A';

CREATE VIEW EstudianteV ASSELECT e.cedula, e.nombreEst, e.apellidoEst, c.noContrato, c.fechaInicio, c.fechaSalida, c.idHabitacionFROM Estudiante e, Contrato c, Factura fWHERE (e.cedula = c.cedula) and c.noContrato = f.noContrato;

top related