Sunteți pe pagina 1din 6

Universidad Andrs Bello

2011

CORRECCION SOLEMNE N3 BASE DE DATOS

Instrucciones:
Responda individualmente la primera pregunta de la solemne
La pregunta dos y tres puede ser respondida en grupo de dos o tres alumnos.

I.

Responda las siguientes preguntas

20 ptos

1. De un ejemplo de particin Horizontal y particin vertical de tablas


Partician Horizontal
clientes(id_cliente, nombre, apellido, fono, mail)
clientesNorte(id_cliente, nombre, apellido, fono, mail)
ClientesCentro(id_cliente, nombre, apellido, fono, mail)
ClientesSur(id_cliente, nombre, apellido, fono, mail)
Particin vertical:
pacientes(id_paciente, nombre, apellido, fono, mail, grupo_sanguineo, fecha_nacimiento,
peso_alnacer, estatura_al_nacer)
tablas particionadas:
Paciente (id_paciente, nombre, apellido, fono, mail,, fecha_nacimiento)
DatosClinicos(id_paciente, grupo_sanguineo, peso_alnacer, estatura_al_nacer)

2. Seale que significa cada uno de los siguientes trminos en la revisin del diseo:
2.1. Completitud: Permite preguntarse si el modelo resultante est completo y responde a
todos los requerimientos del cliente, presentes y fututos
2.2. Uso de homnimos: En el caso de que el modelo resultante se vea favorecido con uso
de atributos que significan distinto pero suenan igual es convenientes usarlo pero
acompaado de una muy buena documentacin: Eje: Nota como evaluacin y Nota
como una observacin
2.3. Exactitud: Confirmar que el modelo de datos resultante est modelado segn las reglas
existentes en la realidad modelada, en este aspecto es muy importante que el modelo
se explique por s mismo y sea entendido por las personas que viven en la realidad
modelada

Universidad Andrs Bello

2011

II.

20 ptos

Transforme el siguiente diagrama E-R, en un modelo Relacional

Muchos
Productos

facturas
folio <pk>
fecha
total
id_cliente <fk>
id_encar <fk>

Factura_producto

Id_producto <pk>
precio
glosa

folio <pk>
id_producto <pk>
cantidad

Producto_proveedor
clientes

Id_producto <pk>
Id_provee <pk>

id_cli <pk>
nombre
apellido
id_profesio <fk>
Proveedores

profesiones
Id_profesio <pk>
nombre

Id_provee <pk>
nombre
direccion

Universidad Andrs Bello

2011

III. SQL

60 ptos

1) Dadas las tablas presentadas a continuacin conteste las siguientes preguntas con
lenguaje SQL:

NACIONALES
Cod_nacional pk>
RUT <fk>
CLIENTES

CLIENTE_PRODUCTO

RUT <pk>
Nombr e
Apell_Pater
Apell_Mater
Ciudad
Direccion
Fono
Fecha_Nacimiento
Sexo

Cod_nacional <pk, fk>


Cod_producto <pk, fk>

PRODUCTOS
Cod_producto <pk>
Nombr e
Costo_mantencion
duracion
Cod_banco <fk>

EXTRANJEROS
Cod_ex tranjero <pk>
RUT <fk>
Pais_origen
BANCOS
Cod_banco <pk>
Nombr e

Universidad Andrs Bello

2011

a. Preguntas de Revisin. Para cada pregunta responda cmo podra obtener la informacin
solicitada:

i.

ii.
iii.
iv.
v.

20 ptos

Podra saber el costo de mantencin total por todos los productos del banco de un
cliente dado?
Desde la tabla nacionales, se deben sumar el atributo, costo mantencin, para cada
producto vinculado en la tabla cliente-producto
Podra saber el nombre y apellido de todos los clientes de la regin metropolitana?
No, falta un atributo regin en clientes
Podra saber cuntos productos del banco de chile vencen este ao?
No, no tenemos fecha de entrega de los productos. Este atributo debera estar en la
tabla cliente-producto
Podra saber qu productos tienen asignados los clientes extranjero?
No, no hay relacin entre las tablas
Podra saber la cantidad de clientes que tienen VISA por tres aos de vigencia?
Si, estn todos los datos disponibles en las 4 tablas del modelo que estn
relacionadas

b. Responda las siguientes preguntas en SQL:

40 ptos

a) Crear la tabla productos y cliente_producto


CREATE TABLE PROD UCTOS(
Cod_producto VARCHAR2(10) PRIMARY KEY,
Nombr e VARCHAR2(30) NOT NULL,
Costo_mantencion INTEGER NO T NULL,
Duracion INTEGER,
Cod_banco VARCHAR2(10) NOT NULL,
FOREIGN KEY cod_banco REFERENCES BANCOS(Cod_banco) );
CREATE TABLE CLIENTE_PRODUCTO(
Cod_nacional INTEGER NO T NULL,
Cod_producto INTEGER NO T NULL,
PRIMARY KEY (Cod_nacional, Cod_producto),
FOREIGN KEY Cod_nacional REFERENCES nacionales(Cod_nacional),
FOREIGN KEY Cod_producto REFERENCES PRODUCTOS(Cod_producto) );

b) Indicar el comando SQL para insertar una fila en la tabla clientes y en la tabla nacionales
INSERT INTO CLIENTES VALUES (86798459, PEDRO, DIAZ, VALPARAISO, PEDRO
MONTT 457, 2458796, 25/05/1980, M);
INSERT INTO NACIONALES VALUES (100, 86798459);

Universidad Andrs Bello

2011

c) Responder las siguientes consultas SQL


1. Mostrar el nombre de la ciudad y la cantidad de clientes por ciudad
SELECT ciudad, count(*) as cantidad
FROM clientes
GROUP BY ciudad;
2. Nombre del producto cuya mantencin mensual est entre los 1800 y 2500 pesos.
SELECT nombre
FROM productos
WHERE costo_mantencion > =1800 and costo_mantencion <=2500 ;
Otra forma
SELECT nombre
FROM productos
WHERE costo_mantencion BETWEEN 1800 AND 2500

3. Mostrar el RUT, Nombre y Apellido de los clientes nacionales que tiene el producto
Visa Premium por dos aos.
SELECT RUT, nombre, apell_pater, apell_mater
FROM clientes
WHERE rut IN (SELECT rut FROM nacionales WHERE cod_nacionales IN (SELECT
cod_nacionales FROM cliente_producto WHERE cod_producto IN (SELECT cod_producto
FROM productos WHERE nombre = Visa Premium and duracion = 2)));
4. Mostrar la cantidad de clientes nacionales que tiene cuenta corriente del banco BCI.
SELECT count(*) as cantidad
FROM nacionales
WHERE rut IN (SELECT rut FROM nacionales WHERE cod_nacionales IN (SELECT
cod_nacionales FROM cliente_producto WHERE cod_producto IN (SELECT cod_producto
FROM productos WHERE cod_banco IN (SELECT cod_banco FROM bancos WHERE nombre
= BCI))));
5. Mostrar el Cdigo de los clientes nacionales que tiene VISA y Cuenta Corriente a la
vez.
SELECT cod_nacionales
FROM nacionales
WHERE rut IN (SELECT rut FROM nacionales WHERE cod_nacionales IN (SELECT
cod_nacionales FROM cliente_producto WHERE cod_producto IN (SELECT cod_producto
FROM productos WHERE WHERE nombre IN (Visa, Cuenta Corriente) ))
GROUP BY cod_nacionales
HAVING count(*) =2;

Universidad Andrs Bello

2011

6. Nombre de los bancos que tengan al menos tres productos


SELECT nombre
FROM bancos
WHERE cod_banco in (SELECT cod_banco from productos WHERE cod_producto IN (
Select cod_banco
From productos
Group by cod_banco
Having count(*)>=3));
7.

Nombre de los productos que tienen ms de tres aos de duracin del banco Estado
SELECT nombre
FROM productos
WHERE cod_banco IN (SELECT cod_banco FROM bancos WHERE nombre = Estado));
And duracion>=3

8. Mostrar el Nombre de los productos que posee Julia Gonzlez Alfaro.


SELECT nombre
FROM productos
WHERE cod_producto IN (SELECT cod_producto FROM cliente_producto WHERE
Cod_nacional IN (SELECT cod_nacional FROM nacionales WHERE rut in (SELECT RUT
FROM clientes WHERE nombre = JULIA AND apell_pater = GONZALEZ AND
apell_mater = ALFARO)));

S-ar putea să vă placă și