Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

9
Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web 29 de abril de 2015 Página 1 de 9 Trabajo Obligatorio 1: MySQL 1. Diseño del modelo Entidad-Relación De acuerdo a los requisitos planteados en el ejercicio el Modelo E-R está justificado por las siguientes razones. Se crea la entidad EMPLEADO bajo los siguientes criterios: Se eligió el atributo DNI como clave ya que es un dato único que identifica de manera única a cada persona. El atributo Apellido inicialmente iba a ser un atributo compuesto, pero al ya que los requeri- mientos no planteaban necesidades específicas tal como por ejemplo empleados americanos que solo tienen un apellido, por lo tanto se decidió dejarlo como atributo simple. De igual manera, aunque la dirección podría ser un atributo compuesto, ya que en los requi- sitos no se percibieron necesidades específicas, se decide dejar como atributo simple. De establecerlo como atributo compuesto hubiese sido necesario saber datos más específicos que se necesitaran como calle, no. interior, no. exterior, colonia, localidad, ciudad, código postal, etcétera. Una característica importante es que en la empresa pueden haber empleados que supervisan a otros empleados, por lo que fue necesario crear una relación reflexiva, así mismo existe una restricción donde podría no existir ningún supervisor, pero en caso de haberlo, éste podrá supervisar a varios empleados. Se crea la entidad DEPARTAMENTO bajo los siguientes criterios: Se desean almacenar todos los departamentos tanto con su nombre como con un código que los identifica de manera única. Los empleados están asociados a un departamento, ya sea porque pertenecen a él como tra- bajadores o porque son los responsables a cargo de la dirección del mismo. La cardinalidad se da porque un empleado y solo uno puede dirigir no más de un departa- mento. Así como muchos empleados pueden pertenecer a solo a un departamento. Los departamentos se identifican de manera inequívoca a través de su código, por lo que ese atributo se eligió como clave principal Se crea la entidad NÓMINA bajo los siguientes criterios: Es necesaria esta entidad ya que deben almacenarse cada uno de los pagos que se le hagan a los empleados, que involucran la fecha y el monto. Ya que las nóminas están relacionadas a los empleados y no existe un atributo que pueda identificar cada instancia de manera única, para no tener que usar los dos únicos atributos como clave compuesta, se decide crear un atributo de clave artificial llamado ID. En cuanto a la restricción de cardinalidad, ya que a cada empleado se le paga mensualmente entonces tendrá asociados muchos pagos de nóminas.

Transcript of Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Page 1: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 1 de 9

Trabajo Obligatorio 1: MySQL

1. Diseño del modelo Entidad-Relación

De acuerdo a los requisitos planteados en el ejercicio el Modelo E-R está justificado por las siguientes

razones.

Se crea la entidad EMPLEADO bajo los siguientes criterios:

Se eligió el atributo DNI como clave ya que es un dato único que identifica de manera única

a cada persona.

El atributo Apellido inicialmente iba a ser un atributo compuesto, pero al ya que los requeri-

mientos no planteaban necesidades específicas tal como por ejemplo empleados americanos

que solo tienen un apellido, por lo tanto se decidió dejarlo como atributo simple.

De igual manera, aunque la dirección podría ser un atributo compuesto, ya que en los requi-

sitos no se percibieron necesidades específicas, se decide dejar como atributo simple. De

establecerlo como atributo compuesto hubiese sido necesario saber datos más específicos que

se necesitaran como calle, no. interior, no. exterior, colonia, localidad, ciudad, código postal,

etcétera.

Una característica importante es que en la empresa pueden haber empleados que supervisan

a otros empleados, por lo que fue necesario crear una relación reflexiva, así mismo existe una

restricción donde podría no existir ningún supervisor, pero en caso de haberlo, éste podrá

supervisar a varios empleados.

Se crea la entidad DEPARTAMENTO bajo los siguientes criterios:

Se desean almacenar todos los departamentos tanto con su nombre como con un código que

los identifica de manera única.

Los empleados están asociados a un departamento, ya sea porque pertenecen a él como tra-

bajadores o porque son los responsables a cargo de la dirección del mismo.

La cardinalidad se da porque un empleado y solo uno puede dirigir no más de un departa-

mento. Así como muchos empleados pueden pertenecer a solo a un departamento.

Los departamentos se identifican de manera inequívoca a través de su código, por lo que ese

atributo se eligió como clave principal

Se crea la entidad NÓMINA bajo los siguientes criterios:

Es necesaria esta entidad ya que deben almacenarse cada uno de los pagos que se le hagan a

los empleados, que involucran la fecha y el monto.

Ya que las nóminas están relacionadas a los empleados y no existe un atributo que pueda

identificar cada instancia de manera única, para no tener que usar los dos únicos atributos

como clave compuesta, se decide crear un atributo de clave artificial llamado ID.

En cuanto a la restricción de cardinalidad, ya que a cada empleado se le paga mensualmente

entonces tendrá asociados muchos pagos de nóminas.

Page 2: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 2 de 9

La entidad CONTRATO es creada bajo los siguientes criterios:

Es necesaria la entidad pues un empleado es contratado por un tiempo definido (fecha de

inicio y fecha de fin) bajo un cargo y una retribución. Cabe resaltar que podría parecer redun-

dante el atributo “Retribución” con “Cantidad ingresada” de la entidad Nómina, sin embargo

podría ser viable, pues aunque en los requerimientos no se especifica, cabría la posibilidad

de que se realizara un pago adicional, lo cual se reflejaría en la nómina, entonces en caso de

ser muy estrictos debería quitarse “Cantidad ingresada”, sin embargo a mi criterio y lógica

me pareció lo más pertinente conservar ambos.

La cardinalidad establecida es porque un empleado puede tener diversos contratos cada uno

con características diferentes. Aunque los atributos de fecha que se muestran en relación tam-

bién pudieron aparecer en la entidad, se decidieron asignar de esa manera con la finalidad por

una parte todos los tipos de contratos y por otra parte los diferentes contratos de los emplea-

dos.

El Modelo Entidad-Relación es el siguiente y el cual también se puede acceder desde el siguiente

enlace http://www.gliffy.com/go/publish/7954513.

Ilustración 1. Modelo Entidad-Relación

2. Modelo Relacional

La elaboración del modelo relacional del ejercicio implicó la creación de cuatro tablas, más una que

fue creada automáticamente debido al tipo de restricción muchos a muchos, la cual incluyó un campo

adicional para la fecha de publicación del libro de cada autor.

Inicialmente hice en varias ocasiones mi modelo, sin embargo al intentar guardar el programa hacía

crash y se cerraba sin siquiera haber guardado, por lo que fue necesario repetir el proceso. La solución

finalmente fue instalar una versión más viejita, la cual presenta ligeros cambios en especial en los

iconos al crear las relaciones. Finalmente el resultado fue el siguiente modelo.

Page 3: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 3 de 9

Ilustración 2. Modelo Relacional

3. Lenguaje de Consultas SQL

1) El nombre de los clientes (Customers) que tienen como ciudad (City) ‘Madrid’ y tienen código

postal (PostalCode) '28034' o ' 28023'.

2) El nombre (FirstName) de todos los empleados (Employees) que cumplen años (BirthDate) el

1968-12-08 o el 1952-02-19.

3) El nombre de contacto (ContactName) y número de teléfono (Phone) de todos los proveedores

(Suppliers) de la ciudad ‘Tokyo’.

Page 4: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 4 de 9

4) Todos los datos de los productos (Products) que tengan un precio (Price) entre 20 y 40 y haya

más de 3 unidades disponibles (Unit).

NOTA: Hay otras funciones con las cuales se podría resolver esta consulta, sin embargo las

estuve probando en w3school y no están permitidas.

5) Todos los datos de los productos (Products) que tengan un precio (Price) mayor de 10 y que

pertenecen a la categoría con nombre (CategoryName) ‘Seafood’

6) El nombre (FirstName) y el cumpleaños (BirthDate) de los empleados (Employees) cuyo primer

nombre (FirstName) empieza por la letra A.

7) Una lista con: los nombres (CustomerName) , ciudad (City) , dirección (Address) y código postal

(PostalCode) de todos los clientes (Customers), los resultados deben de estar ordenados por ciu-

dad (City) y código postal (PostalCode).

8) Inserta un nuevo cliente (Customers) con los datos personales de propio alumno

9) Cambia el valor del país (Country) ‘Germany’ por: ‘Alemania’ en todos los clientes (Customers).

10) Mostrar la información completa todos los productos (Products) del Proveedor (Suppliers) con

nombre (SupplierName) ‘Tokyo Traders’.

11) Obtener el Nombre de Producto (ProductName), Unidades (Unit), Precio (Price) y el Nombre de

la categoría (CategoryName) para todos los productos.

Page 5: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 5 de 9

12) Mostrar la información completa de todos los productos (Products) de proveedores (Suppliers)

que tengan como ciudad (City) ‘Sydney’.

13) Obtener la información completa de los pedidos (Orders) realizados por el Cliente (Customer)

con nombre (CustomerName) ‘Alfreds Futterkiste’.

NOTA: No hay pedidos de dicho cliente

14) Obtener la información completa de todos los pedidos (Oders) que contengan el producto (Pro-

duct) con nombre (ProductName) ‘Ikura’.

15) Obtener la información completa de todos los pedidos (Oders) que hayan sido realizados por

clientes (Customers) de la ciudad (City) ‘Madrid’

16) Obtener los teléfonos (Phone) de proveedores (Suppliers) y Transportistas (Shippers).

17) Obtener toda la información de los cuatro productos (Products) con mayor precio (Price).

18) Obtener el precio (Price) más alto de un producto (Product) disponible, para que esté disponible

ha de tener más de 0 unidades (Unit).

19) Contar cuantos clientes (Customers) hay que vivan en la ciudad (City) de ‘Madrid’ O ‘Barcelona’.

20) El nombre (SupplierName) y el teléfono (Phone) de todos los Proveedores (Supplier) del pro-

ducto con nombre (ProductName) ‘Konbu’.

Page 6: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 6 de 9

4. Creación de una Base de Datos en MySQL

Para esta actividad ser retoma el Modelo Entidad-Relación creada

con anterioridad y crear la BD en MySQL, se puede hacer desde

cero escribiendo todo el código, o como se realizó en esta prác-

tica, es decir, Exportar el Modelo E-R a MySQL desde el Menú

Database y luego en “Forward Engineer”.

Una vez hecho esto, los pasos son muy intuitivos, simplemente se debe indicar la conexión

para que Workbench se comunique con MySQL, después indicar con qué opciones se exportará y

finalmente elegir lo que se desea exportar y antes de finalizar, mostrará una vista previa a manera de

comprobación antes de hacer los cambios.

Ilustración 3.Exportar el Modelo E-R a MySQL

El siguiente paso es insertar lo datos a la recién creada base de datos, para esto

desde el mismo Workbench. Tal como se muestra en la siguiente imagen se puede

observar la nueva BD con sus respectivas tablas. Para ejecutar una sentencia de

forma rápida sobre cualquiera de las entidades se puede dar clic derecho sobre la

tabla y luego elegir “Send to SQL Editor”. Con ello es más que suficiente para

comenzar a insertar los registros.

Ilustración 5. Sentencia para insertar registros en tabla "Sala"

Ilustración 4. Panel

de Workbench

Page 7: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 7 de 9

Ilustración 7. Sentencia para insertar registros en tabla "Sección"

Las siguientes inserciones, aunque en el trabajo aparecían juntos, debido al diseño hecho desde un

inicio, fue necesario hacer dos inserciones por separado, sin embargo pertenecen a los mismos datos,

ya que como se recordará, un libro puede ser escrito por muchos autores, como se ve en los libros 10

y 11.

Ilustración 8. Inserción de datos en tabla "Libro"

Ilustración 9. Insertar el resto de los datos en la tabla auxiliar "libro_has_autor"

Ilustración 6. Inserción a tabla "Autor"

Page 8: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 8 de 9

5. Uso de Base de Datos MySQL

Se programó una página que permite agregar libros a la base de datos así como ver todos los que ya

están almacenados en la base de datos. Ya que para que sea realmente funcional deberían existir más

módulos como para gestionar las secciones, los autores, etc. Por tal motivo solamente cuenta con

características básicas.

La aplicación esta lista para ser usada, solo basta

con colocar la carpeta en el servidor web y acceder desde

la URL, y eso es todo, ya que la aplicación solita gene-

rará la base de datos, tablas, relaciones e insertará salas,

secciones y autores, permitiendo así, que el usuario solo

pueda guardar nuevos libros.

Por defecto la aplicación trabaja con una base de

datos llamada “librería” sin embargo puede ser cambiada

sin ningún problema. Así como los datos de conexión

para el servidor MySQL. Así pues, la página web se vi-

sualiza como las siguientes imágenes, en caso de usarse

la misma base de datos de los ejercicios anteriores, se

verán los libros iniciales, sin embargo, si se ejecuta la

aplicación con un nombre de base de datos diferente, entonces se creara una nueva base de datos la

cual por supuesto no tendrá ningún libro por lo que habrá que crearlos.

Ilustración 10. Configuraciones del sitio web

Page 9: Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)

Por: Héctor Garduño Real

Máster en Dirección e Ingeniería de Sitios Web Repositorios de Información Web

29 de abril de 2015 Página 9 de 9

Ilustración 11. Sitio web con base de datos de la práctica

Ilustración 12. Sitio web cuando se le asigna un nuevo nombre de BD