Está en la página 1de 4

Grado en Matemáticas

Bases de Datos
Primer Curso. Grupo: M11 Prueba examen simulación. 22 – abril – 2022

Apellidos: Nombre:

OBSERVACIONES:
- Se dispondrá de 1h 50min para la realización de la prueba.
- Puntuación ejercicio 1, 6 puntos.
- Puntuación ejercicio 2, 4 puntos.
- No se permite el uso de correo electrónico, mensajería… Quien utilice alguno de estas aplicaciones será
expulsado del examen.
- Los criterios de evaluación para cada ejercicio seguirán la siguiente rúbrica:

Ponderación Criterio 0 50 100

No se hace un planteamiento del El planteamiento del problema El planteamiento del problema se


30% Diagrama E/R
problema se hace con errores hace correctamente

Diagrama No se hace un planteamiento del El planteamiento del problema El planteamiento del problema se
30%
Relacional problema se hace con errores hace correctamente

40% Lenguaje SQL 1.25 por respuesta acertada.

Se comenten más de 2 faltas de No se comenten faltas de


Ortografía
ortografía en el ejercicio (- 1 punto) ortografía

Ejercicio 1.- Fábrica de Relojes – Modelo E/R y Relacional (6 puntos)


NOTA: Cada una de las preguntas tiene un valor de 3 puntos.

Nos contratan para realizar el diseño funcional de base de datos (diagrama Entidad –
Relación y Relacional) del modelo de negocio de una fábrica de relojes que distribuye a
20.000 tiendas en todo el mundo, con las siguientes restricciones:

Para cada tienda necesitamos almacenar la siguiente información: ID de tienda


(único), direcciones de entrega (varias por tienda), límite de crédito de cada tienda
(no superior a 5.000 €) y nivel de descuento de cada tienda (no superior al 20%),
ambos parámetros estarán en función de la categoría de tienda.
Las tiendas se dividen en categorías, de acuerdo con el volumen de compras
anuales, de forma que a mayor volumen de compra los descuentos serán mayores
y también su límite de crédito.
Las tiendas realizan pedidos a la fábrica de relojes, es fundamental identificar en
el pedido la tienda que lo realiza, la dirección de entrega, así como la fecha en la
que se realiza dicho pedido y el importe total del mismo.
Los artículos (relojes) pertenecen a una categoría / línea (deportiva, casual,
elegante…).
Cada pedido dispone de líneas de pedido, en cada línea de pedido se determinará
el identificador del artículo, descripción, categoría, número de unidades y el
importe de este.
Los artículos se distribuyen a cada tienda por varias empresas de reparto
(proveedores de reparto), para identificar a cada empresa se tendrá en cuenta, el
ID de proveedor de reparto (único) y dirección de contacto.

1
Grado en Matemáticas

Preguntas:

1. Dibujar con todo detalle el diagrama Entidad – Relación: entidades, relaciones,


cardinalidad, atributos, FK, diferenciando PK del resto de atributos de cada
entidad.
2. Dibujar el Diagrama Relacional.

2
Grado en Matemáticas

Ejercicio 2.- Fábrica de Relojes – Lenguaje SQL (4 puntos)


NOTA: Cada una de las preguntas tiene un valor de 1.25 puntos.

De acuerdo con el modelo Relacional definido en el ejercicio 1.

1. Crear mediante instrucciones SQL las entidades de acuerdo con el modelo


relacional definido, es fundamental detallar para cada entidad los atributos que
forman parte de la PK y las FK, no es necesario entrar en detalle con el resto de
los atributos de cada entidad.
YA DEFINIDO EN EL DIAGRAMA RELACIONAL… (Vosotros tenéis que hacer todas, es
importante el orden). Os pongo la más compleja.

CREATE TABLE PEDIDO (


Id_Pedido INT AUTO_INCREMENT,
Fecha DATE NOT NULL,
Importe_Total DOUBLE NOT NULL,
Id_Tienda INT NOT NULL,
Id_Dirección INT NOT NULL,
Id_Proveedor INT NOT NULL,
PRIMARY KEY (Id_Pedido),
FOREIGN KEY (Id_Tienda) REFERENCES Tienda(Id_Tienda),
FOREIGN KEY (Id_Dirección) REFERENCES Dirección(Id_Dirección),
FOREIGN KEY (Id_Proveedor) REFERENCES Repartidor (Id_Proveedor)
);

** Consideramos que todos los campos ID son INT AUTOINCREMENT.


Cualquier otra solución, también es correcta.

2. Visualizar mediante una instrucción SQL todas las tiendas que componen la red
de distribución de la fábrica, se deberán detallar: nombre de la tienda, dirección,
descripción de la categoría, descuento y límite de crédito asociado a la tienda.

SELECT T.Descripción T, D.Calle, D.Población, D.Ciudad, D.CódigoPostal, D.Teléfono,


C.Descripción, C.LimCrédito, C.Descuento FROM TIENDA T, DIRECCIÓN D, CATEGORÍA
C WHERE T.IdCategoría = C.IdCategoría AND T.IdDirección = D. IdDirección GROUP BY
T.IdTienda;

Todas las relaciones en las cláusulas WHERE pueden realizarse utilizando INNER JOIN.

3
Grado en Matemáticas

3. Visualizar mediante una instrucción SQL los pedidos suministrados a cada una de
las tiendas en un período determinado (último año). Se deberán obtener los
siguientes datos: número de pedido, artículos que componen cada pedido,
categoría asociada al artículo, fecha de suministro, dirección de entrega, y el
importe total del pedido.

SELECT P.IdPedido, LP.IdArtículo, C.IdCategoría, P.Fecha, D.Dirección, P.ImporteTotal


FROM TIENDA T, PEDIDO P, DIRECCIÓN D, CATEGORÍA C, LINPEDIDO LP WHERE
T.IdTienda = P.IdTienda AND P.IdDirección = D.IdDirección AND LP.IdPedido =
P.IdPedido AND LP.IdArtículo = A.IdArtículo AND C.IdCategoría = A.IdCategoría AND
P.Fecha BETWEEN ‘2022-04-01’ AND ‘2021-03-31’ GROUP BY T.IdTienda ORDER BY
P.IdPedido;

Se puede mejorar esta instrucción indicando el período actual DATE_ADD(CURDATE(),


INTERVAL -1 YEAR).

Todas las relaciones en las cláusulas WHERE pueden realizarse utilizando INNER JOIN.

4. Identificar mediante una consulta SQL los repartos realizados por cada uno de los
proveedores destinados a ello. Se deberá identificar al menos: Nombre del
proveedor de reparto, su dirección y la relación de los artículos suministrados en
cada reparto.

SELECT R.Descripción, D.Dirección, LP.IdArtículo, A.Descripción FROM REPARTIDOR R,


DIRECCIÓN D, ARTICULO A, LINPEDIDO LP, PEDIDO P WHERE R.IdProveedor =
P.IdProveedor AND P.IdPedido = LP.IdPedido AND LP.IdArticulo = A.IdArticulo AND
D.IdDirección = R.IdDirección GROUP BY P.IdProveedor;

Todas las relaciones en las cláusulas WHERE pueden realizarse utilizando INNER JOIN.

5. Totalizar las ventas realizadas por categoría de producto a cada una de las tiendas
por cada proveedor de reparto.

SELECT P.Importe_Total FROM REPARTIDOR R, PEDIDO P, LINPEDIDO LP,


CATARTICULO CA, ARTICULO A WHERE R.IdProveedor = P.IdProveedor AND
LP.IdPedido = P.IdPedido AND LP.IdArtículo = A.IdArtículo AND CA.IdCategoría =
A.IdCategoría GROUP BY C.Id_Categoría;

Todas las relaciones en las cláusulas WHERE pueden realizarse utilizando INNER JOIN.

También podría gustarte