Está en la página 1de 8

SIMULACRO_SOLUCIONES

TRIMESTRE: __________________ Fecha:__________________

CICLO: CURSO: 1º CALIFICACIÓN:

MÓDULO: Base de Datos Modalidad:

Nombre: Apellidos:

Instrucciones: Esta prueba tiene como finalidad evaluar los aprendizajes de Base de Datos. Lee atentamente
y responde, en bolígrafo azul, la respuesta que consideres correcta. Esta prueba es tipo test: Rodea con un
círculo tu opción de respuesta. Si te equivocas en la respuesta, tacha con una X en la opción no valida y
rodea con un círculo la correcta. Recuerda que por cada dos fallos se restará un acierto.

Si las instrucciones no se siguen como se especifican el examen no será evaluado

PARTE PRÁCTICA.

• El examen práctico tiene una puntuación máxima de 10 puntos.


• Para superar la parte práctica se requiere alcanzar un mínimo de 5 puntos.
• Una vez realizada la parte práctica, se subirá un fichero comprimido, en el
apartado habilitado (final de la página web) del módulo correspondiente en la
plataforma, que contendrá:
o Un documento Word/Writer creado por el alumno, donde se realizarán las
distintas actividades planteadas y se generará en PDF
• El nombre del fichero comprimido que se envía a la plataforma deberá tener el
siguiente formato:
o Apellido1_Apellido2_Nombre_Simulacro2
Ejercicio 1. (5 puntos) Realizar el diseño físico de bases de datos utilizando
asistentes, herramientas gráficas y el lenguaje de definición de datos.

1. Obtén el esquema relacional correspondiente.


Tabla CLIENTE

CREATE TABLE CLIENTE

COD INTEGER PRIMARY KEY,

NIF VARCHAR(9)

CHECK (REGEXP_LIKE (NIF, '[0-9]{8}[A-Z]'))

UNIQUE,

NOMBRE VARCHAR(50),

DIRECCION VARCHAR(100),

TELEFONO VARCHAR(9) CHECK (REGEXP_LIKE(TELEFONO, '[69][0-9]{8}')),

CIUDAD VARCHAR(20)

);

Tabla COCHE

CREATE TABLE COCHE


(

MATRICULA VARCHAR(7)

CHECK (REGEXP_LIKE (MATRICULA, '[0-9]{4}[A-Z]{3}') )

PRIMARY KEY,

MARCA VARCHAR(20) NOT NULL,

MODELO VARCHAR(20) NOT NULL,

COLOR VARCHAR(20),

PVP INTEGER,

CODCLIENTE INTEGER,

CONSTRAINT CHK_COLOR CHECK (COLOR IN ('ROJO', 'VERDE', 'AZUL')),

CONSTRAINT CHK_PVP CHECK (PVP BETWEEN 10000 AND 40000),

FOREIGN KEY(CODCLIENTE) REFERENCES CLIENTE(COD));

Tabla REVISION

CREATE TABLE REVISION

COD INTEGER PRIMARY KEY,

FECHA DATE,

MATRICULA VARCHAR(7),

FOREIGN KEY(MATRICULA) REFERENCES COCHE(MATRICULA))

);

Tabla OPERACIÓN

CREATE TABLE OPERACION

COD INTEGER PRIMARY KEY,

DESCRIPCION VARCHAR(100),

HORAS INTEGER,

CONSTRAINT CHK_HORAS CHECK (HORAS > 0 AND HORAS <= 10)

);

Tabla CONSTA

CREATE TABLE CONSTA

CODREVISION INTEGER,
CODOPERACION INTEGER DEFAULT 1,

PRIMARY KEY (CODREVISION,CODOPERACION),

FOREIGN KEY(CODREVISION) REFERENCES REVISION(COD)),

FOREIGN KEY(CODOPERACION) REFERENCES OPERACION(COD))

);

Tabla MATERIAL

CREATE TABLE MATERIAL

COD INTEGER PRIMARY KEY,

NOMBRE VARCHAR(50),

PRECIO INTEGER

);

Tabla NECESITA

CREATE TABLE NECESITA

CODOPERACION INTEGER,

CODMATERIAL INTEGER,

PRIMARY KEY (CODOPERACION,CODMATERIAL),

CANTIDAD INTEGER DEFAULT 1,

FOREIGN KEY(CODOPERACION) REFERENCES OPERACION(COD)),

CONSTRAINT FK_COD_MATERIAL FOREIGN KEY(CODMATERIAL) REFERENCES


MATERIAL(COD)),

);

2. Comprueba que está en 3FN.


3. Todas las tablas están en 3FN puesto que cumplen:
• 1FN: Todos los campos toman valores atómicos.
• 2FN: Todos los atributos no clave dependen funcionalmente de forma
completa de su clave primaria.
• 3FN: No existen atributos con dependencias funcionales transitivas.
4. Crea las tablas con sentencias SQL procurando que las columnas tengan el tipo y
tamaño adecuado y con las siguientes restricciones:
a. El Color de los coches es verde, rojo o azul.

CHECK (COLOR IN ('ROJO', 'VERDE', 'AZUL')),

b. La matrícula está formada por cuatro números y tres letras.


c. Los DNI terminan en letra.
d. Las Horas de mano de obra de una operación nunca pasan de 10.

CHECK (HORAS > 0 AND HORAS <= 10)

e. Señala todas las claves primarias, ajenas y candidatas.


f. La cantidad de Piezas por Operación por defecto es 1.

CANTIDAD INTEGER DEFAULT 1,

g. La marca y modelo del coche no pueden dejarse en blanco.

MARCA VARCHAR(20) NOT NULL,

MODELO VARCHAR(20) NOT NULL,

h. Los teléfonos empiezan por 6 o por 9.


i. El precio de un coche está entre 10000 y 40000.

CHECK (PVP BETWEEN 10000 AND 40000),

a. Modificar la columna CIUDAD de la tabla CLIENTE para que se puedan


almacenar hasta 50 caracteres

ALTER TABLE CLIENTE

MODIFY (CIUDAD VARCHAR(50));

a. Insertar datos de un cliente

INSERT INTO CLIENTE(COD,NIF,NOMBRE,DIRECCION,TELEFONO,CIUDAD) VALUES


(10, “09999999Z”, "NOMBRE CLIENTE", "CALLE SAN JUAN 25", 568596562,
"MALAGA");
b. Añadir el campo email en la tabla cliente

ALTER TABLE CLIENTE ADD (EMAIL VARCHAR(50))

c. Borrar el dato insertado previamente en la tabla cliente

DELETE FROM CLIENTE WHERE COD=10;

Ejercicio 2. (5 puntos) Realiza las consultas descritas a continuación sobre la


base de datos proporcionada.

1. Mostrar todos los clientes(nombre,apellido1,apellido2) ordenados alfabéticamente


por nombre.

SELECT nombre,apellido1,apellido2 FROM cliente ORDER BY nombre

2. Mostrar los nombres y apellidos de todos los clientes con categoría 200.

SELECT nombre,apellido1,apellido2 FROM cliente WHERE categoria=200


3. Contar el número de clientes que tenemos en la ciudad de Sevilla.

SELECT COUNT(*) FROM cliente WHERE ciudad=’Sevilla’

4. Mostrar nombre, apellido1, apellido2 y comisión de los comerciales que se llamen


Antonio.

SELECT nombre,apellido1,apellido2,comision FROM comercial WHERE


nombre like ‘%Antonio%’

5. Mostrar los pedidos que tengan un precio entre 10 y 100 € incluidos.

SELECT * FROM pedido WHERE total BETWEEN 10 AND 100

6. Mostrar los pedidos con su total tras aplicar un 10% de descuento llamándose
(oferta)

SELECT id, total, 0,9*total AS oferta FROM pedido

7. Mostrar todos los datos de los pedidos y sus comerciales, de los clientes de la
ciudad de Granada.

SELECT * FROM pedido, comercial, cliente WHERE

pedido.id_comercial=commercial.id AND

pedido.id_cliente=cliente.id AND

cliente.ciudad=’Granada’

SELECT p.id, total, fecha, co.id, co.nombre, co.apellido1,


co.apellido2, comisión FROM cliente c

INNER JOIN pedido p ON c.id=p.id_cliente

INNER JOIN commercial co ON p.id_comercial=co.id

WHERE ciudad=’Granada’

8. Mostrar la media de los pedidos de la comercial Marta


SELECT AVG(pedido.total) FROM pedido, comercial WHERE
pedido.id_comercial=comercial.id AND comercial.nombre=’Marta’

9. Mostrar los clientes y pedidos que se han realizado entre el 2017-01-01 y 2017-
06-30

SELECT * FROM pedido, cliente WHERE pedido.id_cliente=cliente.id AND


fecha BETWEEN ‘2017-01-01’ AND ‘2017-06-20’

10. Mostrar de la tabla de pedido el total agrupado por cliente.

SELECT id_client, SUM(total) FROM pedido GROUP BY id_cliente

También podría gustarte