miércoles, 26 de octubre de 2016

INNER JOIN

Autor:

Rafael Fuentealba

Competencia:

Trabajo en Equipo (Nivel 1)

Asignatura:

Introducción a los Sistemas de Base de Datos



Palabras Claves:

MySql, Capítulo 8, Inner Join, Croos Join, Natural Join, Consultas base de datos, Trabajo en Equipo.




Descripción de la Actividad:

Crear una presentación grupal del capítulo 8 "Inner Join" de acuerdo a los contenidos vistos en clases y en relación a la base de datos de sus propias empresas. Respecto a ello se deberán crear las tablas con las estructuras y datos adecuados, lo que claramente requerirá de tiempo por parte de los alumnos para su ejecución. Por otro lado se deberá estudiar el tema muy a fondo ya que su complejidad y la ocasión lo requieren.



Solución:

Nuestra empresa llamada "Cultoteca" cumple con el rol de ser prestamista de libros de forma gratuita dentro de la región de la Aracucanía.


1.   Inicialmente tenemos la presentación de nuestra empresa y de sus colaboradores, que para la ocasión expondrá información y características acerca del capítulo 8 de MySql denominado "Inner Join".






2.   Se señala una introducción con los puntos claves a tratar a lo largo de la presentación.






3.   Estas son las tablas que se usaron para dar solución al problema planteado.

3.1.   La primera de ellas es la tabla llamada "clientes" que contiene información acerca de nuestros clientes y la cual contiene los siguientes campos:

-  id_cliente que es tipo INTEGER NOT NULL AUTOINCREMENT PRIMARY KEY (clave primaria), lo que quiere decir que es un dato de tipo entero que será el identificador de la información guardada para cada uno de los posibles clientes que se inserten en la tabla (filas). Además este campo tiene la particularidad de no admitir valores nulos (not null), por lo que automáticamente comenzará en 1 si no ingresa ningún dato, continuando así el llenando en la medida en que se añada nueva información.
-  Nombre_cliente es un campo de tipo varchar o cadena que contendrá el nombre de cada uno de los clientes de nuestra empresa.
-  Apellido_cliente también es un campo de tipo varchar que contiene el apellido de los clientes.
-  Ciudad es un campo de tipo varchar que claramente almacena la ciudad en la que viven nuestros clientes
-  Calle de igual forma es de tipo varchar y almacena la calle en donde vive cada uno de los clientes.


3.2.   La segunda tabla la denominamos "libros" y contiene la información acerca de los libros que tenemos para prestar el servicio. Esta tabla posee la siguiente estructura:

-  ISBN_libro que es un campo de tipo INTEGER NOT NULL AUTOINCREMENT PRIMARY KEY (clave primaria de esta tabla) siendo este el identificador de cada libro que se tiene en el registro. Este campo posee exactamente las mismas cualidades que la Primary Key de la tabla  "clientes".
-  Nombre_libro es un campo de tipo varchar o cadena que contiene el nombre de los libros presentes en nuestra empresa
-  Editorial es un campo de tipo varchar que almacena la editorial de la que proviene cada libro que está en nuestros registros.
-  Area también es un campo de tipo varchar y que hace relación al área a la que pertenece cada uno de los libros, ya sea de ciencias, humanidades, infantiles, artes, investigación, etcétera. 



3.3.   En tercer lugar tenemos la tabla llamada "personal" que almacena información más privada de nuestros clientes y la cual posee la siguiente estructura:

-  id_c es un campo de tipo INTEGER NOT NULL AUTOINCREMENT PRIMARY KEY, el cual es el identificador de todos y cada uno de nuestros clientes y que está estrechamente relacionada con la tabla #1 "clientes".
-  MesNacimiento es de tipo integer y contiene el mes de nacimiento de cada cliente.
-  AñoNacimiento también es de tipo integer y almacena el año en que nació el cliente.
-  Sexo es un campo de ENUM lo que quiere decir que posee un número limitado de opciones asemejándose a una lista. En este caso, el campo sexo permite escoger una de dos opciones y que son: masculino o femenino.


3.4.   Por último tenemos la tabla "prestamos" que única y exclusivamente contiene dos campos:

-  El primer campo es id_cliente el cual contiene el identificador de la tabla "clientes".
-  Y el segundo campo es ISBN_libro que hace relación con el identificador o primary key de la tabla "libros".






4.   Aquí abordaremos el primero de nuestros objetivos de la presentación y el cual corresponde al "CROOS JOIN". Para ello utilizaremos la tabla "clientes" y la tabla "libros".



Realizamos la consulta en MySql y en donde selecciono las tablas a relacionar que son "clientes" y "libros". Posterior a esto podemos entender que Croos Join hace una relación del nombre de todos los clientes con el nombre de todos los libros, es decir aquí no existe una relación directa entre ellos, sino que se realiza una mezcla con todas las posibilidades y combinaciones de los datos datos seleccionados de ambas tablas.






5.   Ahora pasamos a revisar el "Inner Join". 
Posterior a hacer la consulta en MySql en donde selecciono relacionar las tablas "clientes" y "libros", podemos ver que este método realiza una unión muy estrecha entre estas mismas, puesto que como condición hemos decidido que solo seleccione aquellos datos en donde el valor id_cliente sea exactamente el mismo que ISBN_libro, sino cumple esta condición entonces no serán listados en la consulta.






6.   Pasamos a revisaron la utilidad de "Inner Join y On".
Como ya revisamos anteriormente la sentencia INNER JOIN lista solo aquellos datos de ambas tablas en donde únicamente se presente la condición de nuestra consulta, a diferencia de CROSS JOIN que lista una mezcla de todos los registros de las tablas relacionadas. 

Lo que ahora veremos es la funcionalidad y la forma en que se utilizan INNER JOIN y ON.

Primero debemos realizar la consulta en la base de datos de nuestra empresa recordando usar el comando "ON". Posterior a esto podemos darnos cuenta de que INNER JOIN + ON nos entrega un listado de todos los datos que seleccionamos al unir las dos tablas en cuestión, que son "clientes" y "personal". 

Debido a esto es posible entender que ON nos entrega el resultado mediante la unión de las 2 claves primarias que son llamadas de manera distinta en una y otra tabla. En "clientes" la primary key se llama "id_cliente" y en la tabla "personas" se llama "id_c", pero hacen relación a exactamente la misma información.






7.   Lo que sigue es la relación entre INNER JOIN y USING.
Primero realizaremos la debida consulta a la base de datos así como se muestra más abajo. 

Con INNER JOIN hacemos la relación entre las tablas que queremos trabajar, que este caso son "clientes" y "prestamos". Utilizo USING para poder señalar el campo mediante el cual quiero unir ambas tablas y que es "id_cliente". Este campo (que es igual en una y en la otra tabla) se llama de la misma forma y hace referencia a la misma información, por lo que la consulta se realizará con éxito.



7.1.   Realizaremos otro ejemplo con INNER JOIN y USING pero esta vez agregaremos una nueva condición:

Uniremos las tablas "clientes" y "prestamos" mediante INNER JOIN y utilizaremos USING para unirlas por medio del campo "id_cliente" que se llama igual y hace relación a la misma información en ambas tablas. Por último, sólo listaremos aquellos clientes que cumplan con lo propuesto anteriormente y cuyo nombre sea "Juanito" (que es lo que impone la condición WHERE).






8.   Continuamos revisando ahora el NATURAL JOIN.

Este es uno de los métodos de unión más sencillos puesto que sólo lista la información de las tablas en juego que tengan campos del mismo nombre.

Para este caso nosotros utilizamos las tablas "clientes" y "prestamos" que tienen en común el campo llamado "id_cliente". En consecuencia unificará la información que contengan ambas tablas en una sola.






9.   Por último nos queda el uso de más de un JOIN.

Tenemos que realizar la consulta seleccionando las tablas que vamos a unir y que son "prestamos", "clientes" y "libros".

Primero unificaremos la tabla "prestamos" con la tabla "clientes" mediante un USING que tomará como referencia el campo "id_cliente" (en ambas tablas se llama id_cliente por eso utilizo using). Posteriormente ejecuto la otra unión con la tabla "libros" mediante otro USING que tomará como base el campo "ISBN_libro". Y por último utilizaré ORDER BY para ordenar la consulta utilizando el campo "Nombre_libro" (ordenará la tabla en orden alfabético con respecto al nombre del libro).






10.   Finalmente cerramos el tema destacando algunos de los puntos más importantes con respecto a la presentación del capítulo 8 "INNER JOIN".







Reflexión:

Inicialmente en el curso se nos pidió formar grupos donde debíamos crear una empresa propia que cumpliera con la funcionalidad de prestar algún servicio a la comunidad. Por ello mismo es como nace el grupo de "Engineers Pro" quienes dan inicio a "Cultoteca", una empresa que hace distribución de libros de forma gratuita dentro de la región de la Araucanía.

Uno de los principales logros que ha dejado la actividad es el desarrollo de la habilidad de trabajo en equipo. Esta fue una de las últimas que se presentó y la cual contempla la refinación de todos aquellos detalles y dificultades que como grupo de trabajo tuvimos a lo largo del proceso. 

La forma en que comenzó desarrollándose este tipo de actividades no fue la más correctas. Si bien la distribución del trabajo era equitativa, nos fuimos percatando de que aplicar las ideas en conjunto era mucho más simple y eficiente, además de que traía consigo una serie de otros beneficios como ahorrar tiempo en opinar, implementar dichas opiniones, decidir qué es lo que realmente se presentaría, revisar y corregir errores, y por sobretodo aprender en conjunto de todas aquellas dudas que fuesen surgiendo con el trabajo para poder obtener un buen resultado.


No hay comentarios:

Publicar un comentario