Está en la página 1de 9

Por: Héctor Garduño Real

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


Repositorios de Información Web

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.

29 de abril de 2015 Página 1 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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.

29 de abril de 2015 Página 2 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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’.

29 de abril de 2015 Página 3 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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.

29 de abril de 2015 Página 4 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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’.

29 de abril de 2015 Página 5 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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 4. Panel
de Workbench

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

29 de abril de 2015 Página 6 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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


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"

29 de abril de 2015 Página 7 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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 Ilustración 10. Configuraciones del sitio web
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.

29 de abril de 2015 Página 8 de 9


Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Repositorios de Información Web

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

29 de abril de 2015 Página 9 de 9

También podría gustarte