Vous êtes sur la page 1sur 7

EJERCICIO 1:

Vamos a crear las tablas para un taller mecnico donde se reparan vehculos. Empezaremos creando con SQL las siguientes tablas:

Tabla MECNICOS recoger informacin sobre los mecnicos del taller: NIF, Nombre, Apellido1, Apellido2, Nmero de empleado, Direccin, Ttulo, Salario. Tabla PROPIETARIOS de los vehculos: NIF, Nombre, Apellido1, Apellido2, Direccin, Telfono, Cliente habitual del taller. Tabla VEHCULOS con los siguientes campos: Matrcula, Marca, Modelo, Tipo de vehculo, Nmero de kilmetros, Fecha de fabricacin, Fecha de reparacin, Propietario, Mecnico que lo repara.
1. Un vehculo slo puede pertenecer a un propietario. 2. Debes elegir los nombres ms adecuados para los atributos teniendo en cuenta las reglas. 3. Debes elegir los tipos de datos adecuados en funcin del contenido de los campos

Esquema base de datos taller mecnico


Vehiculos Matricula Marca Modelo TipoVehiculo Kilometros FechaFabrica FechaRepara Propietario Mecanico
Propietarios Mecanicos

Nif Nombre Apellido1 Apellido2 Direccion Telefono Habitual

IdEmpleado Nif Nombre Apellido1 Apellido2 Direccion Titulo Salario

Tabla MECNICOS recoger informacin sobre los mecnicos del taller: NIF, Nombre, Apellido1, Apellido2, Nmero de empleado, Direccin, Ttulo, Salario.

Creamos la tabla mecanicos


CREATE TABLE Mecanicos( IdEmpleado VARCHAR2(9) PRIMARY KEY, (Al ser clave Primaria es nica y Not Null, NO se pueden repetir dos IdEmpleado) Nif VARCHAR2(9) NOT NULL, Nombre VARCHAR2(20), Apellido VARCHAR2(20), Apellido2 VARCHAR2(20), Direccion VARCHAR2(50), Titulo VARCHAR2(20), (El dato Titulo es obligatorio por eso le decimos que no puede ser nulo) Salario NUMBER(6,2), CONSTRAINT Mec_Nif_UK UNIQUE(Nif) (Hacemos que el campo Nif sea UNICO y NO se repita) );

Tabla PROPIETARIOS de los vehculos: NIF, Nombre, Apellido1, Apellido2, Direccin, Telfono, Cliente habitual del taller.

Creamos la tabla propietarios


CREATE TABLE Propietarios( Nif VARCHAR2(9) PRIMARY KEY, (Al ser clave Primaria es nica y Not Null, NO se pueden repetir dos Nif) Nombre VARCHAR2(20), Apellido VARCHAR2(20), Apellido2 VARCHAR2(20), Direccion VARCHAR2(50), Telefono NUMBER(10), Habitual VARCHAR2(1), CONSTRAINT Pro_Hab_CK CHECK((Habitual='S') OR (Habitual='N')) (Chequeamos que sea S(si) o N(no)) );

Tabla VEHCULOS con los siguientes campos: Matrcula, Marca, Modelo, Tipo de vehculo, Nmero de kilmetros, Fecha de fabricacin, Fecha de reparacin, Propietario, Mecnico que lo repara.

Creamos la tabla vehiculos


CREATE TABLE Vehiculos( Matricula VARCHAR2(10) PRIMARY KEY, (Al ser clave Primaria es nica y Not Null, NO se pueden repetir dos Matrcula) Marca VARCHAR2(15), Modelo VARCHAR2(15), TipoVehiculo VARCHAR2(20) NOT NULL, (El dato TipoVehiculo es obligatorio por eso le decimos que no puede ser nulo) Kilometros NUMBER NOT NULL, (El dato Kilometros es obligatorio por eso le decimos que no puede ser nulo) FechaFabrica DATE NOT NULL, FechaReparacion DATE NOT NULL, Propietario VARCHAR(9) NOT NULL, Mecanico VARCHAR(9) NOT NULL, CONSTRAINT Fec_Vehi_CK CHECK(FechaReparacion>FechaFabrica), (Comprobamos que la fecha de reparacion sea mayor a fecha fabricacin) CONSTRAINT Veh_Pro_FK FOREIGN KEY (Propietario) REFERENCES Propietarios(Nif), (Creamos una clave foranea al campo Nif de la tabla Propietarios) CONSTRAINT Veh_Mec_FK FOREIGN KEY (Mecanico) REFERENCES Mecanicos(IdEmpleado) (Creamos una clave foranea al campo IdEmpleados de la tabla Mecanicos) );

4. Debes establecer las siguientes restricciones: A. Los vehculos deben ser asignados a un mecnico para que proceda a su reparacin y deben asociarse a su propietario antes de ser dado de alta.
Al crear las claves forneas creando relaciones con otras tablas con su clave principal estamos creando integridad referencial y asi estamos obligando a que en todas las tablas relacionadas deben asignarse los datos correspondientes siendo la tabla padre la tabla Vehculos e hijas las tablas Propietarios y Mecnicos

B. En un vehculo, el nmero de kilmetros es un dato que no puede faltar, es obligatorio que contenga informacin.
Kilometros NUMBER NOT NULL, (El dato Kilmetros es obligatorio por eso le decimos que no puede ser nulo)

C. MECNICOS, el atributo Ttulo no puede estar vaco.

En la tabla

Titulo VARCHAR2(20), (El dato Titulo es obligatorio por eso le decimos que no puede ser nulo)

D. VEHCULOS, el atributo Tipo no puede estar vaco.

En la tabla

TipoVehiculo VARCHAR2(20) NOT NULL, (El dato TipoVehiculo es obligatorio por eso le decimos que no puede ser nulo)

E. pueden tener el mismo nmero de empleado.

Dos mecnicos no

IdEmpleado VARCHAR2(9) PRIMARY KEY, (Al ser clave Primaria es nica y Not Null, NO se pueden repetir dos IdEmpleado)

F. Podremos diferenciar las tuplas de la tabla VEHCULOS por la matrcula del vehculo.
Matricula VARCHAR2(10) PRIMARY KEY, (Al ser clave Primaria es nica y Not Null, NO se pueden repetir dos Matrcula tambin al ser clave primaria es ndice para las bsquedas)

G. Podremos diferenciar las tuplas de la tabla MECNICOS y PROPIETARIOS por el NIF.


CONSTRAINT Mec_Nif_UK UNIQUE(Nif) (Hacemos que el campo Nif sea UNICO y NO se repita al ser nica ya estamos creando un ndice para las bsquedas) Nif VARCHAR2(9) PRIMARY KEY, (Al ser clave Primaria es nica y Not Null, NO se pueden repetir dos Nif tambin al ser clave primaria es ndice para las bsquedas)

H. La fecha de reparacin del vehculo nunca puede ser menor que la fecha de fabricacin del mismo.
CONSTRAINT Fec_Vehi_CK CHECK(FechaReparacion>FechaFabrica), (Comprobamos que la fecha de reparacin sea mayor a fecha fabricacin)

I. cliente habitual del taller es S (s) y N (no).

El dominio del atributo

CONSTRAINT Pro_Hab_CK CHECK((Habitual='S') OR (Habitual='N')) (Chequeamos que sea S(si) o N(no))

J. de integridad referencial.

Se debe cumplir la regla

CONSTRAINT Veh_Pro_FK FOREIGN KEY (Propietario) REFERENCES Propietarios(Nif), (Creamos una clave fornea al campo Nif de la tabla Propietarios) CONSTRAINT Veh_Mec_FK FOREIGN KEY (Mecanico) REFERENCES Mecanicos(IdEmpleado) (Creamos una clave fornea al campo IdEmpleados de la tabla Mecnicos) Al se claves forneas creando relaciones con otras tablas con su clave principal estamos creando integridad referencial

EJERCICIO 2:
Vamos a modificar las tablas que hemos creado en el apartado anterior: 1. Crea un nuevo atributo llamado Poblacin en la tabla PROPIETARIOS.
ALTER TABLE Propietarios ADD (Poblacion VARCHAR2(20));

Aade las siguientes restricciones: 2. Modifica el campo Tipo de vehculo de VEHCULOS para que slo pueda tomar los valores C (Coche) o M (Moto).
ALTER TABLE Vehiculos MODIFY TipoVehiculo VARCHAR(1); (Modificamos el tamao del campo de VACHAR2(20) a VARCHAR2(1) para que admita los valores C o M ) ALTER TABLE Vehiculos ADD CONSTRAINT Veh_Tip_CK CHECK((TipoVehiculo ='C') OR (TipoVehiculo ='M')); (Chequeamos que sea C(Coche) o M(Moto))

3. Modifica el campo Salario del MECNICO de manera que est comprendido entre 900 y 1700 euros.
ALTER TABLE Mecanicos ADD CONSTRAINT Mec_Sal_CK CHECK (Salario BETWEEN 900 AND 1700); Aadimos una restriccin nueva al campo para que el salario este comprendido entre 900 y 1700

4. No podemos aadir un vehculo si su nmero de kilmetros es inferior a 0.


ALTER TABLE Vehiculos ADD CONSTRAINT Veh_Kil_CK CHECK (Kilometros>0); Aadimos una restriccin nueva al campo para que los kilmetros sean mayores de cero

5. Elimina la restriccin que controla los valores que puede tomar el atributo Cliente habitual.
ALTER TABLE Propietarios DROP CONSTRAINT Pro_Hab_CK; Eliminamos la restriccin al campo Habitual la cual se llamaba Pro_Hab_CK la cual chequeaba que fuese S oN

6. Elimina la columna Ttulo de la tabla MECNICOS.

ALTER TABLE Mecanicos DROP (Titulo); Eliminamos la columna Titulo

7. Cambia la clave primaria de la tabla MECNICOS por Nombre y Apellidos de empleado.


Primero eliminamos la clave primaria la cual al ser fornea necesitamos el comando CASCADE ALTER TABLE Mecanicos DROP PRIMARY KEY CASCADE; Segundo creamos la clave primaria la cual esta formada por varios campos ALTER TABLE Mecanicos ADD CONSTRAINT Mec_Cla_PK PRIMARY KEY (Nombre,Apellido,Apellido2);

8. Renombra la tabla PROPIETARIOS por CLIENTES.


RENAME Propietarios TO Clientes

9. Elimina la tabla VEHCULOS.


Como tiene claves forneas hacia la tabla Propietarios debemos utilizar la instruccin CASCADE CONSTRAINTS DROP TABLE Vehiculos CASCADE CONSTRAINTS;

10. Crea un usuario con tu nombre y clave BD02 y dale todos los privilegios sobre la tabla MECANICOS.
Creamos el usuario Jos con claveBD02 CREATE USER Jose IDENTIFIED BY BD02; Le damos todos los permisos sobre la tabla Mecnicos GRANT ALL ON Mecanicos TO Jose;

11. Ahora al usuario anterior qutale permisos para modificar o actualizar la tabla MECNICOS.
Quitamos los privilegios que puedan hacer modificar o actualizar la tabla. REVOKE ALTER,DELETE,INSERT,UPDATE ON Mecanicos FROM Jose;

Vous aimerez peut-être aussi