Ejercicio - 3 - Resuelto - RENTING EN COLOR
Ejercicio - 3 - Resuelto - RENTING EN COLOR
Ejercicio - 3 - Resuelto - RENTING EN COLOR
/* tabla VEHICULOS */
DROP TABLE VEHICULOS;
CREATE TABLE VEHICULOS (
MATRICULA VARCHAR2(10) NOT NULL,
MARCA VARCHAR2(15) NOT NULL,
MODELO VARCHAR2(40) NOT NULL UNIQUE,
F_COMPRA DATE DEFAULT SYSDATE,
F_VENTA DATE,
CONSTRAINT VEH_MTR_PK PRIMARY KEY (MATRICULA),
CONSTRAINT VEH_MAR_CK CHECK ( MARCA = UPPER(MARCA) )
);
/* tabla ALQUILERES */
DROP TABLE ALQUILERES;
CREATE TABLE ALQUILERES (
MATRICULA VARCHAR2(10) NOT NULL,
TIPO VARCHAR2(1) NOT NULL,
NUMERO NUMBER(4,0) NOT NULL,
F_ALQUILER DATE DEFAULT SYSDATE NOT NULL ,
N_DIAS NUMBER(2,0) DEFAULT 0 ,
CONSTRAINT ALQ_CLV_PK PRIMARY KEY (MATRICULA, TIPO, NUMERO, F_ALQUILER),
CONSTRAINT ALQ_CCL_FK FOREIGN KEY (TIPO, NUMERO)
REFERENCES CLIENTES (TIPO, NUMERO)
ON DELETE CASCADE ,
CONSTRAINT ALQ_CMA_FK FOREIGN KEY (MATRICULA)
REFERENCES VEHICULOS (MATRICULA)
ON DELETE CASCADE );
Os indico una sentencia muy útil para ver las CONSTRAINTS (restricciones) de un
conjunto de tablas:
2. Añadir un nuevo campo “número de kilómetros” a la tabla alquileres teniendo en cuenta que solo
podrá contener valores enteros entre 10 y 1500 ambos incluidos.
ALTER TABLE ALQUILERES ADD N_KM NUMBER(4,0);
ALTER TABLE ALQUILERES ADD CONSTRAINT ALQ_NKM_CK
CHECK (N_KMS BETWEEN 10 AND 1500 );
(En una sola instrucción)
ALTER TABLE ALQUILERES ADD N_KM NUMBER(4,0) NOT NULL CONSTRAINTS
ALQ_NKM_CK CHECK (N_KMS BETWEEN 10 AND 1500 );
3. En la tabla vehículos, la fecha de venta no puede ser menor que la fecha de compra.
ALTER TABLE VEHICULOS ADD CONSTRAINT VEH_FCO_CK
CHECK ( F_COMPRA <= F_VENTA ) ;
4. Añadir una nueva clave en la tabla vehículos que esté formada por los campos marca y modelo.
ALTER TABLE VEHICULOS ADD CONSTRAINT VEH_MMO_KE UNIQUE (MARCA, MODELO ) ;
7. Elimina la restricción que controla los valores que puede tomar el atributo extranjero de la tabla
clientes.
ALTER TABLE CLIENTES DROP CONSTRAINT CLI_EXT_CK;
9. Crea un usuario con tu nombre y clave BD2 y dale todos los privilegios sobre la tabla VEHICULOS.
CREATE USER NOMBREDELALUMNO IDENTIFIED BY BD2;
GRANT ALL ON VEHICULOS TO NOMBREDELALUMNO;
En este caso el camino más directo es entrar desde el "Run SQL Command Line" con el siguiente comando:
SQL> conn sys as sysdba; (posteriormente te pide la password).
10. Ahora al usuario anterior déjale solo permiso para leer los datos de la tabla VEHICULOS. (Sólo podría
seleccionar sus datos, nada más).
REVOKE ALL ON VEHICULOS TO NOMBREDEALUMNO;
GRANT SELECT ON VEHICULOS FROM NOMBRE DE ALUMNO;