Vous êtes sur la page 1sur 9

Bases de datos.

Grupo 1. 28/09/2018
Rosales Almazán Laura Angélica.
Rosas Guerrero Félix.
Vázquez Landín Carlos Saúl.
Tema 5.1 Control de Transacciones
Ejercicio 15. Implementar el modelo lógico (relacional) del préstamo de libros.

SQL> CREATE TABLE LIBRO(


2 codLibro CHAR(4) CONSTRAINT pkLibro PRIMARY KEY,
3 ISBN VARCHAR(20) NOT NULL CONSTRAINT uqLibro UNIQUE,
4 titulo VARCHAR(40) NOT NULL,
5 numPag NUMBER(4),
6 editorial VARCHAR(15) NOT NULL
7 );

Table created.

SQL> CREATE TABLE AUTOR(


2 codAutor CHAR(4) CONSTRAINT pfAutor PRIMARY KEY,
3 nomAutor VARCHAR(10) NOT NULL,
4 patAutor VARCHAR(15) NOT NULL,
5 matAutor VARCHAR(15)
6 );

Table created.

SQL> CREATE TABLE LIBROAUTOR(


2 codLibro CHAR(4),
3 codAutor CHAR(4),
4 CONSTRAINT pkLibroAutor PRIMARY KEY(codLibro,codAutor),
5 CONSTRAINT fkLA FOREIGN KEY(codLibro)
6 REFERENCES LIBRO ON DELETE CASCADE,
7 CONSTRAINT fkLAb FOREIGN KEY(codAutor)
8 REFERENCES AUTOR ON DELETE CASCADE
9 );

Table created.

SQL> CREATE TABLE LIBROEJEM(


2 codLibro CHAR(4),
3 numEjem NUMBER(3),
4 edoConserv VARCHAR(30),
5 CONSTRAINT pkLibroEjem PRIMARY KEY(codLibro,numEjem),
6 CONSTRAINT fkLE FOREIGN KEY(codLibro)
7 REFERENCES LIBRO ON DELETE CASCADE
8 );

Table created.
SQL> CREATE TABLE USUARIO(
2 codUsu CHAR(4) CONSTRAINT pkUsuario PRIMARY KEY,
3 nomUsu VARCHAR(15) NOT NULL,
4 patUsu VARCHAR(15) NOT NULL,
5 matUsu VARCHAR(15)
6 );

Table created.

SQL> CREATE TABLE PRESTAMO(


2 codLibro CHAR(4),
3 numEjem NUMBER(3),
4 codUsu CHAR(4),
5 fechaPrest DATE DEFAULT SYSDATE,
6 fechaDev DATE DEFAULT SYSDATE+5
7 );

Table created.

SQL> ALTER TABLE PRESTAMO


2 ADD
3 CONSTRAINT fkPrestamo FOREIGN KEY(codLibro,numEjem)
4 REFERENCES LIBROEJEM ON DELETE CASCADE;

Table altered.

SQL> ALTER TABLE PRESTAMO


2 ADD
3 CONSTRAINT pkPrestamo PRIMARY KEY(codLibro,numEjem,codUsu,fechaPrest);

Table altered.
SQL> ALTER TABLE PRESTAMO
2 ADD
3 CONSTRAINT fkPrestamoUsu FOREING KEY(codUsu)
4 REFERENCES USUARIO ON DELETE CASCADE;
CONSTRAINT fkPrestamoUsu FOREING KEY(codUsu)
*
ERROR at line 3:
ORA-01735: opción ALTER TABLE no válida

SQL> ALTER TABLE PRESTAMO


2 ADD
3 CONSTRAINT fkPrestamoUsu FOREIGN KEY(codUsu)
4 REFERENCES USUARIO ON DELETE CASCADE;

Table altered.

SQL> SELECT TABLE_NAME


2 FROM USER_TABLES;

TABLE_NAME
------------------------------
DEPARTAMENTO
OFICINA
CLIENTE
TRABAJO
PROYECTO
BANCO
BANCOSUC
EMPLEADO
EMPCORREO
EMPTELEFONO
EMPPTO

TABLE_NAME
------------------------------
PUESTO
ESPECIALIDAD
PUESTOE
TRABAJO28
LIBRO
AUTOR
LIBROAUTOR
LIBROEJEM
USUARIO
PRESTAMO

21 rows selected.

SQL> DESCRIBE LIBRO


Name Null? Type
----------------------------------------- -------- ----------------------------
CODLIBRO NOT NULL CHAR(4)
ISBN NOT NULL VARCHAR2(20)
TITULO NOT NULL VARCHAR2(40)
NUMPAG NUMBER(4)
EDITORIAL NOT NULL VARCHAR2(15)

SQL> DESCRIBE AUTOR


Name Null? Type
----------------------------------------- -------- ----------------------------
CODAUTOR NOT NULL CHAR(4)
NOMAUTOR NOT NULL VARCHAR2(10)
PATAUTOR NOT NULL VARCHAR2(15)
MATAUTOR VARCHAR2(15)

SQL> DESCRIBE LIBROAUTOR


Name Null? Type
----------------------------------------- -------- ----------------------------
CODLIBRO NOT NULL CHAR(4)
CODAUTOR NOT NULL CHAR(4)

SQL> DESCRIBE LIBROEJEM


Name Null? Type
----------------------------------------- -------- ----------------------------
CODLIBRO NOT NULL CHAR(4)
NUMEJEM NOT NULL NUMBER(3)
EDOCONSERV VARCHAR2(30)

SQL> DESCRIBE USUARIO


Name Null? Type
----------------------------------------- -------- ----------------------------
CODUSU NOT NULL CHAR(4)
NOMUSU NOT NULL VARCHAR2(15)
PATUSU NOT NULL VARCHAR2(15)
MATUSU VARCHAR2(15)

SQL> DESCRIBE PRESTAMO


Name Null? Type
----------------------------------------- -------- ----------------------------
CODLIBRO NOT NULL CHAR(4)
NUMEJEM NOT NULL NUMBER(3)
CODUSU NOT NULL CHAR(4)
FECHAPREST NOT NULL DATE
FECHADEV DATE

SQL> --MOSTRANDO LOS CONSTRAINT


SQL> SELECT CONSTRAINT_NAME,
2 TABLE_NAME, CONSTRAINT_TYPE
3 FROM USER_CONSTRAINTS
4 WHERE (TABLE_NAME= 'LIBRO');

CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
SYS_C0011832 LIBRO C
SYS_C0011833 LIBRO C
SYS_C0011834 LIBRO C
PKLIBRO LIBRO P
UQLIBRO LIBRO U

SQL> SELECT CONSTRAINT_NAME,


2 TABLE_NAME, CONSTRAINT_TYPE
3 FROM USER_CONSTRAINTS
4 WHERE (TABLE_NAME= 'AUTOR');

CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
SYS_C0011837 AUTOR C
SYS_C0011838 AUTOR C
PFAUTOR AUTOR P

SQL> SELECT CONSTRAINT_NAME,


2 TABLE_NAME, CONSTRAINT_TYPE
3 FROM USER_CONSTRAINTS
4 WHERE (TABLE_NAME= 'LIBROAUTOR');

CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
PKLIBROAUTOR LIBROAUTOR P
FKLA LIBROAUTOR R
FKLAB LIBROAUTOR R

SQL> SELECT CONSTRAINT_NAME,


2 TABLE_NAME, CONSTRAINT_TYPE
3 FROM USER_CONSTRAINTS
4 WHERE (TABLE_NAME= 'LIBROEJEM');

CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
PKLIBROEJEM LIBROEJEM P
FKLE LIBROEJEM R

SQL> SELECT CONSTRAINT_NAME,


2 TABLE_NAME, CONSTRAINT_TYPE
3 FROM USER_CONSTRAINTS
4 WHERE (TABLE_NAME= 'USUARIO');

CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
SYS_C0011845 USUARIO C
SYS_C0011846 USUARIO C
PKUSUARIO USUARIO P

SQL> SELECT CONSTRAINT_NAME,


2 TABLE_NAME, CONSTRAINT_TYPE
3 FROM USER_CONSTRAINTS
4 WHERE (TABLE_NAME= 'PRESTAMO');

CONSTRAINT_NAME TABLE_NAME C
------------------------------ ------------------------------ -
FKPRESTAMO PRESTAMO R
PKPRESTAMO PRESTAMO P
FKPRESTAMOUSU PRESTAMO R

SQL>
SQL>
SQL>
SQL> spool off;