Story Transcript
Ejemplo de Base de Datos de la Universidad
creaBD_UZ.sql /* @creaBD_UZ.sql */ /* Crear las tablas y añadir algunas restricciones, de varias maneras */ CREATE TABLE clvDpto codDpto nombDpto
Departamento ( number(3) CONSTRAINT clvDpto_PK char(10) CONSTRAINT codDpto_UN char(20) CONSTRAINT nombDpto_NN
CREATE TABLE clvArea codArea nombArea clvDpto CONSTRAINT
AreaConoc ( number(3) CONSTRAINT char(10) CONSTRAINT char(30) CONSTRAINT number(3), clvDptoArea_FK FOREIGN
CREATE TABLE clvProf codProf nombProf clvArea CONSTRAINT
Profesor ( number(3) CONSTRAINT clvProf_PK PRIMARY KEY, char(10) CONSTRAINT codProf_UN UNIQUE, char(30) CONSTRAINT nombProf_NN NOT NULL, number(3) CONSTRAINT areaProf_NN NOT NULL, clvAreaProf_FK FOREIGN KEY (clvArea) REFERENCES AreaConoc(clvArea) );
CREATE TABLE clvAsign codAsign nombAsign tt_HT tt_HP clvArea CONSTRAINT CONSTRAINT CONSTRAINT
Asignatura ( number(3) CONSTRAINT clvAsign_PK PRIMARY KEY, char(10) CONSTRAINT codAsign_UN UNIQUE, char(30) CONSTRAINT nombAsign_NN NOT NULL, number(3), number(3), number(3) CONSTRAINT areaAsig_NN NOT NULL, clvAreaAsig_FK FOREIGN KEY (clvArea) REFERENCES AreaConoc(clvArea), A_horasNoNeg CHECK ( tt_HT >= 0 AND tt_HP >= 0 ), A_horasMas_0 CHECK ( tt_HT + tt_HP > 0 ));
CREATE TABLE clvTitulo codTitulo nombTitulo
Titulacion ( number(3) CONSTRAINT clvTitulo_PK PRIMARY KEY, char(10) CONSTRAINT codTitulo_UN UNIQUE, char(20) CONSTRAINT nombTitulo_NN NOT NULL);
CREATE TABLE clvProf clvAsign HT HP CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT
ImparteAsign ( number(3), number(3), number(4), number(4), imparteAsign_PK PRIMARY KEY clvProfImpAsg_FK FOREIGN KEY clvAsigImpAsg_FK FOREIGN KEY IA_horasNoNeg CHECK ( HT >= 0 IA_horasMas_0 CHECK ( HT + HP
CREATE TABLE clvAsign clvTitulo CONSTRAINT CONSTRAINT CONSTRAINT
AsignTitulo ( number(3), number(3), AsignTitulo_PK clvAsgAsigTit_FK clvTitAsigTit_FK
clvArea_PK codArea_UN nombArea_NN
PRIMARY KEY, UNIQUE, NOT NULL); PRIMARY KEY, UNIQUE, NOT NULL,
KEY (clvDpto) REFERENCES Departamento(clvDpto) );
(clvProf, clvAsign), (clvProf) REFERENCES Profesor(clvProf), (clvAsign) REFERENCES Asignatura(clvAsign), AND HP >= 0 ), > 0 ));
PRIMARY KEY (clvAsign, clvTitulo), FOREIGN KEY (clvAsign) REFERENCES Asignatura(clvAsign), FOREIGN KEY (clvTitulo) REFERENCES Titulacion(clvTitulo) );
/* mostrar la información básica de las tablas y vistas */ @infoBD_UZ.sql
pág. 1 de 6
S.Velilla_IIS_Univ.Zaragoza
martes 24 de mayo de 2005
Ejemplo de Base de Datos de la Universidad
infoBD_UZ.sql /* @infoBD_UZ.sql */ SET linesize 80 SET pagesize 128 SET echo ON column Nombre
heading "columna"
format a30;
/* mostrar la información básica de las tablas y vistas */ SELECT * FROM CAT; DESCRIBE Departamento; DESCRIBE AreaConoc; DESCRIBE Profesor; DESCRIBE Asignatura; DESCRIBE Titulacion; DESCRIBE ImparteAsign; DESCRIBE AsignTitulo; DESCRIBE user_constraints; SET linesize 255 column column column column column column
OWNER TABLE_NAME CONSTRAINT_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME
heading heading heading heading heading heading
"dueño" "tabla" "namRestric" "cond.busq." "dueñoRef" "namRestricRef"
format format format format format format
a10; a14; a16; a26; a10; a16;
SELECT * FROM user_constraints WHERE INITCAP(table_name) IN ('Departamento', 'Areaconoc', 'Profesor', 'Asignatura', 'Titulacion', 'Imparteasign', 'Asigntitulo'); SET linesize 80
elimBD_UZ.sql /* @borraBD_UZ.sql */ /* Eliminar las tablas y todas las restricciones ligadas, de tal modo que solo se borre una tabla cuando sus atributos no son referenciados */ ALTER TABLE AreaConoc DROP CONSTRAINT clvDptoArea_FK; ALTER TABLE Profesor DROP CONSTRAINT clvAreaProf_FK; ALTER TABLE Asignatura DROP CONSTRAINT clvAreaAsig_FK; ALTER TABLE ImparteAsign DROP CONSTRAINT clvProfImpAsg_FK; ALTER TABLE ImparteAsign DROP CONSTRAINT clvAsigImpAsg_FK; ALTER TABLE AsignTitulo DROP CONSTRAINT clvAsgAsigTit_FK; ALTER TABLE AsignTitulo DROP CONSTRAINT clvTitAsigTit_FK; DROP DROP DROP DROP DROP DROP DROP
TABLE TABLE TABLE TABLE TABLE TABLE TABLE
ImparteAsign; AsignTitulo; Asignatura; Profesor; AreaConoc; Departamento; Titulacion;
/* mostrar la información básica de las tablas y vistas */ @infoBD_UZ.sql
pág. 2 de 6
S.Velilla_IIS_Univ.Zaragoza
martes 24 de mayo de 2005
Ejemplo de Base de Datos de la Universidad
ponDat_UZ.sql /* @ponDat_UZ.sql */ SET ECHO ON /* eliminar los datos existentes en las tablas */ @elimDat_UZ.sql /* añadir algunos datos a las tablas, para */ SET ECHO OFF INSERT INTO Departamento VALUES (1, 'D_1', INSERT INTO Departamento VALUES (2, 'D_2', INSERT INTO Departamento VALUES (3, 'D_3', INSERT INTO Departamento VALUES (4, 'D_4', INSERT INSERT INSERT INSERT INSERT
INTO INTO INTO INTO INTO
AreaConoc AreaConoc AreaConoc AreaConoc AreaConoc
VALUES VALUES VALUES VALUES VALUES
(1, (2, (3, (4, (5,
'AC_1', 'AC_2', 'AC_3', 'AC_4', 'AC_5',
probar 'ING.MECANICA'); 'MATEMATICAS'); 'INFORMATICA'); 'VIRTUAL');
'C.MATERIALES', 1); 'EXPR.GRAF.', 1); 'MAT.APL.', 2); 'ARQ.COMP.', 3); 'LENGUAJES', 3);
INSERT INTO Titulacion VALUES (1, 'T_1', 'ING. Informatica'); INSERT INTO Titulacion VALUES (2, 'T_2', 'Ing. Industrial'); INSERT INTO Titulacion VALUES (3, 'T_3', 'Arquitectura'); INSERT INSERT INSERT INSERT INSERT INSERT
INTO INTO INTO INTO INTO INTO
Profesor Profesor Profesor Profesor Profesor Profesor
VALUES VALUES VALUES VALUES VALUES VALUES
INSERT INSERT INSERT INSERT INSERT INSERT
INTO INTO INTO INTO INTO INTO
Asignatura Asignatura Asignatura Asignatura Asignatura Asignatura
INSERT INSERT INSERT INSERT INSERT INSERT INSERT
INTO INTO INTO INTO INTO INTO INTO
ImparteAsign ImparteAsign ImparteAsign ImparteAsign ImparteAsign ImparteAsign ImparteAsign
INSERT INSERT INSERT INSERT INSERT INSERT
INTO INTO INTO INTO INTO INTO
AsignTitulo AsignTitulo AsignTitulo AsignTitulo AsignTitulo AsignTitulo
(1, (2, (3, (4, (5, (6,
VALUES VALUES VALUES VALUES VALUES VALUES
(1, (2, (3, (4, (5, (6,
VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES
'P_1', 'P_2', 'P_3', 'P_4', 'P_5', 'P_6',
'profesor_1', 'profesor_2', 'profesor_3', 'profesor_4', 'profesor_5', 'profesor_6',
'A_1', 'A_2', 'A_3', 'A_4', 'A_5', 'A_6',
(1, (1, (2, (3, (3, (4, (6, (1, (2, (4, (4, (5, (6,
2, 6, 6, 1, 4, 1, 2,
1); 1); 2); 4); 4); 4);
'microprocesadores', 10, 10, 4); 'redes', 20, 20, 4); 'calculo numérico', 40, 20, 3); 'descriptiva', 40, 10, 2); 'dibujo', 60, 0, 2); 'estructuras', 40, 20, 1);
5, 20); 15, 15); 15, 15); 5, 6); 40, 10); 0, 4); 15, 0);
1); 1); 1); 2); 1); 2);
SET ECHO ON /* mostrar los datos de las tablas */ @lstDat_UZ.sql
pág. 3 de 6
S.Velilla_IIS_Univ.Zaragoza
martes 24 de mayo de 2005
Ejemplo de Base de Datos de la Universidad
lstDat_UZ.sql /* @lstDat_UZ.sql */ column column column column column column column column column column column column column column column column column column column
clvDpto codDpto nombDpto clvProf codProf nombProf clvArea codArea nombArea HT HP clvAsign codAsign nombAsign tt_HT tt_HP clvTitulo codTitulo nombTitulo
heading heading heading heading heading heading heading heading heading heading heading heading heading heading heading heading heading heading heading
"idDpto" "acrDpto" "Departamento" "idProf" "acrProf" "Profesor" "idArea" "acrArea" "Area Conoc." "Teoría" "Probl." "idAsig" "acrAsign" "Asignatura" "H.T." "H.P." "idTit" "acrTitul" "Titulación"
format format format format format format format format format format format format format format format format format format format
999; a6 trunc; a20 trunc; 999; a6 trunc; a20 trunc; 9999; a6 trunc; a20 trunc; 999; 999; 999; a6 trunc; a20 trunc; 999; 999; 999; a6 trunc; a20 trunc;
SELECT COUNT(*) "nº Dptos" FROM Departamento; SELECT * FROM Departamento; SELECT COUNT(*) "nº areas" FROM AreaConoc; SELECT * FROM AreaConoc; SELECT COUNT(*) "nº Prof" FROM Profesor; SELECT * FROM Profesor; SELECT COUNT(*) "nº Asign" FROM Asignatura; SELECT * FROM Asignatura; SELECT COUNT(*) "nº Titul" FROM Titulacion; SELECT * FROM Titulacion; SELECT COUNT(*) "nº ImpAsg" FROM ImparteAsign; SELECT * FROM ImparteAsign; SELECT COUNT(*) "nº AsgTit" FROM AsignTitulo; SELECT * FROM AsignTitulo;
elimDat_UZ.sql /* @elimDat_UZ.sql */ DELETE DELETE DELETE DELETE DELETE DELETE DELETE
FROM FROM FROM FROM FROM FROM FROM
ImparteAsign; AsignTitulo; Asignatura; Profesor; AreaConoc; Titulacion; Departamento;
/* mostrar los datos de las tablas */ @lstDat_UZ.sql
pág. 4 de 6
S.Velilla_IIS_Univ.Zaragoza
martes 24 de mayo de 2005
pág. 5 de 6
P6
P5
P4
P3
P2
P1
(15,15)
AC2
(0,4)
(5,6)
S.Velilla_IIS_Univ.Zaragoza
(15,0)
(5,20)
AC1
D1
(15,15)
AC3
D2
AC5
D4
martes 24 de mayo de 2005
(40,10)
AC4
D3
Ejemplo de Base de Datos de la Universidad
A6
A5
A4
A3
A2
A1
(40,20)
(60,0)
(40,10)
(40,20)
(20,20)
(10,10)
T3
T2
T1
pág. 6 de 6
NN
UN, NN
S.Velilla_IIS_Univ.Zaragoza
clvArea
nombProf
clvProf codProf
PROFESOR
clvDpto
nombArea
AREACONOC clvArea codArea
clvArea
nombDpto
codDpto
clvDpto UN, NN
DEPARTAMENTO
nombTitulo UN, NN
codTitulo
clvTitulo
TITULACION
martes 24 de mayo de 2005
NN
UN, NN
NN
tt_HT
HP tt_HP
nombAsign
HT
UN, NN
clvAsign
clvAsign codAsign clvTitulo
AsignTitulo
ASIGNATURA
ImparteAsign clvProf clvAsign
diagrama relacional de la B.D. Universidad
Ejemplo de Base de Datos de la Universidad