Вы находитесь на странице: 1из 6

Bases de Datos

Tareas Tema 2
EJERCICIO 1:

Vamos a crear las tablas para una Academia donde se imparten distintos
cursos de informtica. Empezaremos creando con SQL las siguientes tablas:

Tabla ALUMNOS recoger informacin sobre el alumnado: Nombre,


Apellido1, Apellido2, NIF, Direccin, Sexo, Fecha de Nacimiento y
Curso en el que se matricula.
Tabla CURSOS con los siguientes campos: Nombre del Curso, Cdigo
del Curso que lo identifica, NIF del Profesor, Mximo nmero de
alumnos/as recomendado, Fecha de inicio, Fecha final, Nmero de
horas totales del curso. Los alumnos/as no pueden compaginar varios
cursos a la vez.
Tabla PROFESORES con los siguientes campos: Nombre, Apellido1,
Apellido2, NIF, Direccin, Titulacin, Salario.

a. Debes elegir los nombres ms adecuados para los atributos teniendo


en cuenta las reglas.
b. Debes elegir los tipos de datos adecuados en funcin del contenido de
los campos.

Creamos las tablas:

CREATE TABLE TEMA2.ALUMNOS


(
NOMBRE VARCHAR2(10 BYTE),
APELLIDO1 VARCHAR2(10 BYTE),
APELLIDO2 VARCHAR2(10 BYTE),
NIF VARCHAR2(10 BYTE) NOT NULL,
DIRECCIN VARCHAR2(15 BYTE),
SEXO CHAR(1 BYTE),
FECHA_NACIMIENTO DATE,
CURSO VARCHAR2(20 BYTE) NOT NULL
);

CREATE TABLE TEMA2.CURSOS


(
NOMBRE VARCHAR2(15),
CDIGO NUMBER NOT NULL,
NIF_PROFESOR VARCHAR2(10),
MAX_NUM_ALUM NUMBER,
FECHA_INICIO DATE,
FECHA_FIN DATE,
HORAS_TOTALES NUMBER
)

CREATE TABLE TEMA2.PROFESORES


(
NOMBRE VARCHAR2(10 BYTE),
APELLIDO1 VARCHAR2(10 BYTE),
APELLIDO2 VARCHAR2(10 BYTE),
NIF VARCHAR2(10 BYTE) NOT NULL,
DIRECCIN VARCHAR2(10 BYTE),
TITULACIN VARCHAR2(10 BYTE),
SALARIO NUMBER NOT NULL
)

Debes establecer las siguientes restricciones:

1- El alumno o alumna debe matricularse en un curso antes de que se le


pueda dar de alta.

ALTER TABLE TEMA2.ALUMNOS ADD


CONSTRAINT Curso_unico_UK
UNIQUE (CURSO)

ALTER TABLE TEMA2.ALUMNOS ADD CONSTRAINT


Cursos_RepetidosFK FOREIGN KEY (CURSO)
REFERENCES TEMA2.CURSOS (Nombre)

- Al crear la tabla en el campo CURSO de la tabla ALUMNOS he aadido un


Not null, por que si el valor es nulo si es posible aadir la lnea, se salta la
FOREIGN KEY, no tengo muy claro a que se debe.

CURSO VARCHAR2(20 BYTE) NOT NULL

2- En un curso, el nmero de horas es un dato que no puede faltar, es


obligatorio que contenga informacin.

ALTER TABLE TEMA2.CURSOS ADD CONSTRAINT Horas_nonuloFK


check ( HORAS_TOTALES is not null)

3- En la tabla PROFESORES, el atributo Salario no puede estar vaco.


He aadido la restriccin al crear la tabla.

SALARIO NUMBER NOT NULL

4- Dos cursos no pueden llamarse de la misma forma.

ALTER TABLE TEMA2.CURSOS ADD CONSTRAINT Nombre_unico_UK


UNIQUE (Nombre)

5- Dos profesores no pueden llamarse igual.

ALTER TABLE TEMA2.PROFESORES ADD


CONSTRAINT Nombre_UK
UNIQUE (NOMBRE, APELLIDO1, APELLIDO2)

6- Podremos diferenciar las tuplas de la tabla CURSOS por el Cdigo del


Curso.

ALTER TABLE TEMA2.CURSOS ADD CONSTRAINT CURSOS_PK


PRIMARY KEY (Cdigo)

He aadido la restriccin NOT NULL al crear la tabla, supona que al declararla


como clave principal directamente se agregaba la restriccin de NOT NULL
pero no es as.

CDIGO NUMBER NOT NULL

7- Podremos diferenciar las tuplas de la tabla PROFESORES y ALUMNOS


por el NIF.

Este apartado no lo tengo claro, yo entiendo que se refiere a crear una clave
nica para el Nif en ambas tablas pero en realidad los Nif pueden estar
duplicados por suerte no es corriente pero es mi caso.
Lo he hecho as pero no estoy seguro de si estar bien.

ALTER TABLE TEMA2.ALUMNOS ADD CONSTRAINT NifAlum_PK


PRIMARY KEY (NIF)

ALTER TABLE TEMA2.PROFESORES ADD CONSTRAINT Profesores_PK


PRIMARY KEY (NIF)
8- La fecha de comienzo del curso nunca puede ser menor que la fecha de
finalizacin.

ALTER TABLE TEMA2.CURSOS ADD CONSTRAINT Fecha_Menor_C01


CHECK (Fecha_Inicio < Fecha_Fin)

9- El dominio del atributo sexo es M (mujer) y H (hombre).

ALTER TABLE TEMA2.ALUMNOS ADD CONSTRAINT


CK_SEXO_HOMBRE_MUJER CHECK (Sexo='H' or Sexo='M')

EJERCICIO2:
Vamos a modificar las tablas que hemos creado en el apartado anterior:

1- Crea un nuevo atributo llamado Edad de tipo numrico a la tabla


ALUMNOS.

ALTER TABLE TEMA2.ALUMNOS ADD EDAD number(4);

Aade las siguientes restricciones:

2- Modifica el campo que has creado anteriormente para que la edad del
alumno o alumna est comprendida entre 14 y 65 aos.

ALTER TABLE TEMA2.ALUMNOS ADD CONSTRAINT Rango_Edad_C02


CHECK (edad >=14 AND edad <=65)

3- Modifica el campo Nmero de horas del CURSO de manera que solo


pueda haber cursos con 30, 40 o 60 horas.

ALTER TABLE TEMA2.CURSOS ADD CONSTRAINT Rango_Horas_C02


CHECK (HORAS_TOTALES = 30 OR HORAS_TOTALES = 40
OR HORAS_TOTALES = 60)

HORAS_TOTALES IN (30,40,60)).

4- No podemos aadir un curso si su nmero mximo de alumnos es inferior


a 15.

ALTER TABLE TEMA2.CURSOS ADD CONSTRAINT Rango_Alumnos_C03


CHECK (MAX_NUM_ALUM >= 15)
5- Elimina la restriccin que controla los valores que puede tomar el
atributo Sexo.

ALTER TABLE TEMA2.ALUMNOS DROP CONSTRAINT


CK_SEXO_HOMBRE_MUJER

6- Elimina la columna Direccin de la tabla PROFESORES.

ALTER TABLE TEMA2.PROFESORES DROP COLUMN DIRECCIN

7- Cambia la clave primaria de la tabla PROFESORES por Nombre y


Apellidos.

ALTER TABLE TEMA2.PROFESORES DROP


CONSTRAINT Profesores_PK CASCADE

ALTER TABLE PROFESORES ADD CONSTRAINT pro_nif_PK PRIMARY


KEY(NOMBRE, APELLIDO1, APELLIDO2);

8- Renombra la tabla PROFESORES por TUTORES.

ALTER TABLE TEMA2.PROFESORES RENAME TO TUTORES

9- Elimina la tabla ALUMNOS.

DROP TABLE TEMA2.ALUMNOS CASCADE CONSTRAINT

10- Crea un usuario con tu nombre y clave BD02 y dale todos los privilegios
sobre la tabla CURSOS.

CREATE USER RAUL IDENTIFIED BY BD02

CREATE ROLE EJERCICIO2

GRANT SELECT,INSERT,UPDATE,DELETE ON TEMA2.CURSOS


TO EJERCICIO2

GRANT EJERCICIO2 TO RAUL

GRANT ALL ON TEMA2.CURSOS TO RAUL


11- Ahora al usuario anterior qutale permisos para modificar o actualizar la
tabla CURSOS.

REVOKE UPDATE, ALTER ON TEMA2.CURSOS


FROM EJERCICIO2 CASCADE CONSTRAINTS

Вам также может понравиться