You are on page 1of 3

Tarea 2.

EJERCICIO 1:

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

Tabla ALUMNOS recoger� informaci�n sobre el alumnado: Nombre, Apellido1,


Apellido2, NIF, Direcci�n, Sexo, Fecha de Nacimiento y Curso en el que se
matricula.
Tabla CURSOS con los siguientes campos: Nombre del Curso, C�digo del Curso que
lo identifica, NIF del Profesor, M�ximo n�mero de alumnos/as recomendado, Fecha de
inicio, Fecha final, N�mero 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,
Direcci�n, Titulaci�n, Salario.

Debes elegir los nombres m�s adecuados para los atributos teniendo en cuenta
las reglas.
Debes elegir los tipos de datos adecuados en funci�n del contenido de los
campos.
Debes establecer las siguientes restricciones:
El alumno o alumna debe matricularse en un curso en el momento de darse dar
de alta.
En un curso, el n�mero de horas es un dato que no puede faltar, es
obligatorio que contenga informaci�n.
En la tabla PROFESORES, el atributo Salario no puede estar vac�o.
Dos cursos no pueden llamarse de la misma forma.
Dos profesores no pueden llamarse igual.
Podremos diferenciar las tuplas de la tabla CURSOS por el C�digo del Curso.
Podremos diferenciar las tuplas de la tabla PROFESORES y ALUMNOS por el
NIF.
La fecha de comienzo del curso debe ser menor que la fecha de finalizaci�n.
El dominio del atributo sexo es M (mujer) y H (hombre).
Se debe cumplir la regla de integridad referencial.

En esta primera parte de la tarea debes utilizar la orden �create� de tal manera
que todas las restricciones descritas, anteriormente, aparezcan dentro de ella.

Eso s�, para que se cumpla el concepto de integridad referencial estudiado en la


unidad (clave ajena) piensa primero en qu� orden deben crearse las tres tablas.

EJERCICIO2:

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

Crea un nuevo atributo llamado Edad de tipo num�rico a la tabla ALUMNOS.

A�ade las siguientes restricciones:


Modifica el campo que has creado anteriormente para que la edad del alumno o
alumna est� comprendida entre 14 y 65 a�os.
Modifica el campo N�mero de horas del CURSO de manera que solo pueda haber
cursos con 30, 40 o 60 horas.
No podemos a�adir un curso si su n�mero m�ximo de alumnos es inferior a 15.
Elimina la restricci�n que controla los valores que puede tomar el atributo
Sexo.
Elimina la columna Direcci�n de la tabla PROFESORES.
Cambia la clave primaria de la tabla PROFESORES por Nombre y Apellidos.
Renombra la tabla PROFESORES por TUTORES.
Elimina la tabla ALUMNOS.
Crea un usuario con tu nombre y clave BD02 y dale todos los privilegios sobre
la tabla CURSOS.
Ahora al usuario anterior qu�tale permisos para modificar o actualizar la tabla
CURSOS.

Criterios de puntuaci�n. Total 10 puntos.

Ejercicio 1: 4,5 puntos

Sintaxis correcta 1,5 puntos. Nota: Al ejecutar en el editor de SQL debe


funcionar.
Elecci�n adecuada de los tipos de datos 1,5 puntos.
Dise�o adecuado de las restricciones. 1,5 puntos.

Ejercicio 2: 5,5 puntos

Cada apartado 0,5 punto.


CREATE DATABASE Academia;

CREATE TABLE profesores (


DNI VARCHAR (9) PRIMARY KEY,
Nombre VARCHAR2 (30) UNIQUE,
Apellido1 VARCHAR2 (30),
Apellido2 VARCHAR2 (30),
Direccion VARCHAR2 (30),
Titulacion VARCHAR2 (30),
Salario NUMBER (5) NOT NULL );

CREATE TABLE cursos (


Cod_Curso NUMBER (5) PRIMARY KEY,
DNI VARCHAR (9) REFERENCES Profesores,
Nom_Curso VARCHAR2 (30) UNIQUE,
Max_Alumnos NUMBER (5),
Hor_totales NUMBER (5) NOT NULL,
Direccion VARCHAR2 (30),
Fec_Ini DATE,
Fec_Fin DATE, CONSTRAINT CUR_FEC_CK CHECK (Fec_Fin > Fec_Ini));

CREATE TABLE alumnos (


DNI VARCHAR (9) PRIMARY KEY,
Nombre VARCHAR2 (30),
Apellido1 VARCHAR2 (30),
Apellido2 VARCHAR2 (30),
Direccion VARCHAR2 (30),
Sexo VARCHAR (1), CONSTRAINT alu_sexo_CK CHECK (Sexo IN('H','M')),
Curso VARCHAR2 (30) NOT NULL,
Fec_Nacimiento DATE,
Cod_Curso NUMBER(5) REFERENCES cursos);

ALTER TABLE profesores


DROP PRIMARY KEY cascade;
ALTER TABLE profesores
ADD CONSTRAINT pro_PK PRIMARY KEY(Nombre,Apellido1,Apellido2);
ALTER TABLE profesores
DROP COLUMN Direccion;
RENAME profesores TO tutores;
ALTER TABLE cursos
ADD CONSTRAINT cur_max_alumnos_CK CHECK (Max_Alumnos>=15);
ALTER TABLE cursos
ADD CONSTRAINT cur_hor_totales_CK CHECK (Hor_Totales IN(20,40,60));
ALTER TABLE alumnos
ADD (Edad NUMBER (2) CHECK (Edad BETWEEN 14 AND 65));
ALTER TABLE alumnos
DROP CONSTRAINT alu_sexo_CK;
DROP TABLE alumnos;
CREATE USER pepe IDENTIFIED BY BD02;
GRANT ALL ON cursos TO pepe;
REVOKE ALTER, UPDATE ON cursos FROM pepe;

You might also like