Sie sind auf Seite 1von 18

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA - UNAD

INFORME PROYECTO FINAL

BASES DE DATOS AVANZADA


GRUPO 51

DIEGO ARMANDO TORRES C


1056955004

TUTORA
HELENA CLARA ISABEL ALEMAN

DICIEMBRE 2018
TUNJA
ETAPA DE ANÁLISIS
Para el caso de estudio de la tienda de internet se observa que solo hay dos relaciones las cuales
son Libros y clientes que por las características del caso tienen Cardinalidad muchos a muchos. La
relación pedidos se convertirá en una entidad de enlace entre las entidades Libros y clientes pero
esta se incorporará en el modelo relacional. Para la entidad libro el campo clave será ISBN ya que
es único para cada libro y para la entidad Clientes el campo clave es la identificación también
porque es único para cada cliente.

Entidades y descripción de atributos


Entidad Atributos Clave primaria Tipo de dato Obligatoriedad Tamaño
ISBN X Texto Si 20
Titulo Texto Si 45
Autor Texto Si 45
Libros
Stock Entero Si -----------
Precio Decimal Si 7
Año_publicacion Fecha Si ------------
IdC X Entero Si ------------
Clientes NombreC Texto Si 45
DireccionC Texto Si 45

NORMALIZACIÓN DE LA BASE DE DATOS


Teniendo en cuenta los anteriores atributos consignados en la tabla para cada una de las entidades,
se les va a realizar la normalización con el fin de garantizar que la base de datos contenga datos
ordenados, que no se repitan y que sean consistentes para evitar errores lógicos cuando se lleve la
base de datos a un gestor de bases de datos.
Primera forma normal:
- No se presentan campos repetidos en ninguna de las entidades.
- En los campos no se presentan grupos repetidos tales como título 1, título2, etc. Todos los
campos están pensados para que solo puedan introducir un registro.
- No hay campos en los que se permita introducir varios registros separados por comas, por
ejemplo, autor 1, autor 2. Solo se debe introducir un autor. Si hay varios autores, solo se debe
introducir 1 autor para dar cumplimiento a la primera forma normal.

Segunda forma normal:


Para esta forma normal, se debe garantizar que los campos no claves, tiene que ser dependientes
de la clave primaria. Para este caso los campos se están cumpliendo ya que los campos no claves
de la tabla libros dependen del campo clave ISBN y los campos de la tabla clientes dependen del
campo clave IdC que es la identificación de cada uno de los clientes.
Tercera forma normal:
Para esta forma normal, se debe garantizar que ningún campo no clave sea dependiente de un
campo no clave. En la verificación de esta forma normal se observa que se cumple ya que no se
observa ningún campo no clave dependa de otro campo no clave ya que todas llos campos de la
tabla libros van ligadas al campo clave ISBN y no de algún otro campo y lo mismo sucede con los
campos de la tabla clientes. Esta forma normal no se hubiese cumplido si por ejemplo la tabla
libros hubiera tenido un campo llamado precio total, ya que sería un campo que dependería del
campo no clave precio, en este caso se debería haber suprimido y en el gestor de bases de datos
introducirlo como un campo calculado.

Matriz de relaciones
Libros Clientes
Libros R1
Clientes

Análisis de roles y Cardinalidad


Pregunta para determinar Respuesta
Relación Entidad 1 Rol Entidad 2 Grado
Cardinalidad (Cuantos) Cardinalidad
¿Un libro a cuantos clientes
Libros Presta Clientes Muchos
se le puede prestar?
R1 M:M
¿Un cliente cuantos libros
Clientes Solicita Libros Muchos
puede solicitar?

Para el caso de la tabla de enlace Pedidos, el gestor de bases de datos MYSQL automáticamente
la crea cuando identifica que las relaciones entre Libros y clientes es de Muchos a muchos, solo
resta en el mismo gestor agregarle a esta tabla el nombre y los siguientes atributos:

Entidades y descripción de atributos


Entidad Atributos Tipo de dato Obligatoriedad Tamaño
Cantidad Entero Si 45
Fecha_Pedido Fecha Si ----------
Pedidos
Tarjeta Texto Si 2
Fecha_Envio Fecha Si -----------

BASE DE DATOS RELACIONAL


Luego de tener clara las entidades y atributos empleando el MYSQL Workbench, se crean el
modelo entidad-relación de acuerdo a lo realizado en la etapa de análisis. Se debe tener en cuenta
que para la entidad libros, la llave primaria es el atributo ISBN ya que es un identificador único
para cada libro y en el caso de la entidad clientes, la llave primaria es el atributo IdC que es el
identificador del cliente el cual también es único para cada cliente.
En el modelo se observa como el SGBD MYSQL creó la tabla intermedia a la cual se le cambió
el nombre a pedidos, se le incorporó los atributos mencionados en la etapa de análisis. Este gestor
automáticamente le asignó las llaves foráneas a partir de las llaves primarias de las entidades libros
y clientes. Cuando el gestor se encarga de crear las llaves foráneas, automáticamente está
implementando el concepto de la integridad referencial.

DESARROLLO DE LA BASE DE DATOS RELACIONAL

Luego de tener el modelo entidad – relación, se pasa cada entidad de este modelo a tablas para
poder trabajar con ellas ya sea para crear o modificar los atributos y para empezar a poblarlas las
tablas y de esta manera comenzar a crear la base de datos que dé solución al caso de estudio. Las
tablas de incorporaron dentro de un esquema llamado actividad y el proceso de pasar del modelo
a las tablas se realiza dentro del mismo gestor quedando de la siguiente manera:

Programación con el lenguaje SQL del Script DDL


Para aplicar los comandos DDL del lenguaje SQL se va a presentar las instrucciones para crear y
borrar campos y tablas. A continuación se presentan los campos a modificar.
 Borrar el campo Año_publicacion de la tabla libros
Al dar click en aceptar, el campo se ha borrado de la tabla.

 Crear el campo Año_publicación que se había borrado anteriormente

Con esta sentencia se vuelve a crear el campo año_publicacion con el tipo de dato entero.

 Si la operación fuera crear una nueva tabla, por ejemplo empleados con el campo nombre
del tipo varchar y longitud de 20 caracteres, la sentencia SQL quedaría:

 Si la operación fuera borrar la tabla empleados, la sentencia SQL quedaría:

Programación con el lenguaje SQL del Script DML


Para aplicar los comandos DML del lenguaje SQL se va a crear algunos registros para mostrar el
procedimiento a realizar a través de las instrucciones SQL.
De acuerdo a la forma como se creó la base de datos, las primeras tablas a las cuales se les puede
insertar registros son la de libros y clientes, la de pedidos inicialmente no se le puede crear registros
porque al existir la integridad referencial, se requiere que los campos llaves de las otras tablas ya
tengan datos. A continuación se presentan los registros a ingresarse para poblar las tablas.
 Ingresar registro a la tabla libros

 Ingresar registro a la tabla clientes

 Ingresar registro a la tabla pedidos

De forma similar se inserta los demás registros para llevar a cabo el proceso de poblar las tablas.

 Tabla libros poblada


 Tabla clientes poblada

 Tabla pedidos poblada

Consultas simples SQL con las tablas pobladas


 De la tabla libros seleccionar los que tienen un precio superior a 50000

 Determinar el promedio del precio de todos los libros

 Ordenar alfabéticamente por el título de los libros

 Determinar la cantidad de libros que hay actualmente

 Determinar cuántos pedidos se han hecho con tarjeta


 Determinar los libros escritos por el autor Homero

 Determinar los libros que se han pagado con tarjeta

 Determinar los libros que ha pedido el cliente Marizol Orjuela

Para el caso de las consultas multitabla, se van a emplear la misma base de datos con las mismas
tablas y los mismos, campos, solo que se va agregar más registros para observar de una mejor
manera el funcionamiento y los resultados que arrojan este tipo de consultas..
 Tabla libros poblada

 Tabla clientes poblada

 Tabla pedidos poblada


El modelo relacional de las anteriores tablas es el siguiente:

A continuación se presentan las diversas consultas multitabla

Consulta del tipo Inner Join


 Determinar los libros que se han pagado con tarjeta y los que no
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:


En la anterior consulta se observa como algunos campos de dos tablas se unieron en una sola
consulta.

Consulta del tipo Left Join


 Determinar los clientes que han realizado pedidos y los que no han hecho pedidos.
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:


En la anterior consulta se observa que los clientes que no han hecho pedidos aparecen con valor
de null que significa que no han realizado ningún pedido, lo que hace el left Join es tener en cuenta
todos los registros de la tabla cliente y cuando un registro de la tabla cliente no se encuentra en la
tabla pedidos, lo deja como null.

Consulta del tipo Right Join


 Determinar la fecha y cantidad de pedidos de los libros así como los libros que no han
sido pedidos
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:

En la anterior consulta se muestran los pedidos de los libros sin embargo, también se muestran
los libros que no han sido pedidos, lo que hace el right Join es tener en cuenta todos los registros
de la tabla libros y cuando un registro de la tabla libro no se encuentra en la tabla pedidos, lo deja
como null.

Consulta del tipo Outer Join o Full Outer Join


Este tipo de consulta multitabla no está soportado directamente por MySQL, por lo tanto no se
presenta ejemplo de aplicación para este tipo de consulta. Para realizarla se debería unir dos las
consultas del tipo left Join y Right Join a través de unión o unión all.
Este tipo de consulta lo que haría es como una fusión entre el Left Join y el Right Join apareciendo
valores null si se presentara el caso en las dos tablas relacionadas.

Consulta del tipo natural Join


Funciona como in inner join pero se evita colocar on para indicar cuales son los campos comunes.
Si no hay un campo común entre las dos tablas, produce una consulta del tipo Cross Join.
Ejemplo:

Este caso funcionaría si en ambas tablas el nombre del campo que es común en las dos tablas se
llamara exactamente isbn, sin embargo, en la tabla libros se llama isbn y en la tabla pedidos
libros_isbn, por lo tanto, para esta base de datos no se puede emplear directamente natural Join.
Consulta del tipo Cross Join
 Cruzar las tablas Libros con clientes, de tal manera que cada libro pueda ser asignado a
cada uno de los clientes.
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:


En la anterior tabla solo se presenta una parte del cruce de las dos tablas con Cross Join.
Consulta del tipo Inner Join using
 Determinar los libros que se han pagado con tarjeta y los que no.
Normalmente esta consulta se realiza con un inner join de la siguiente manera:
Sin embargo, la anterior consulta se puede realizar empleando en lugar de on, using, lo cual
abrevia la instrucción sql
La consulta sql con using queda de la siguiente manera:

Este caso funcionaría si en ambas tablas el nombre del campo común de las dos tablas se llamara
exactamente isbn, sin embargo, en la tabla libros se llama isbn y en la tabla pedidos libros_isbn,
por lo tanto, para esta base de datos no se puede emplear Inner Join con Using.

b. Realizar una consulta avanzada por cada función agregada.


Consulta con la función count
Ejemplo: Contar el número de libros que posee la tabla libros.
La consulta sql queda de la siguiente manera:
Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:

Consulta con la función sum


Ejemplo: Determinar el número de pedidos realizados.
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:

Consulta con la función avg


Ejemplo: Determinar el promedio de pedidos realizados.
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:

Consulta con la función min


Ejemplo: Determinar el libro que menos ejemplares tiene en la tienda.
La consulta sql queda de la siguiente manera:
Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:

Consulta con la función max


Ejemplo: Determinar el libro o libros que más ejemplares tiene en la tienda.
La consulta sql queda de la siguiente manera:

Luego de haber realizado la consulta, el resultado que arroja esta es el siguiente:

Das könnte Ihnen auch gefallen