jueves, 15 de diciembre de 2011

Presentación Union

Autor: Felipe Andrés Lagos Morapasten
Competencia: Comunicación Oral y Escrita. (Nivel 1)
Palabras Clave: Base de datos, SQL, UNION,
Left Outer Join.

 
Descripción de la Actividad

Finalizando la competencia de Comunicación Oral y Escrita, nuevamente les quiero compartir con ustedes la última presentación en Power Point del grupo Dual Core que es correspondiente al curso de Introducción a las Base de Datos, la presentación consiste en exponer sobre el capítulo 10 del libro Head First SQL que habla sobre las uniones que son las combinaciones de tablas pero mediante la entrega de un solo resultado (una columna).

Solución

 
Los integrantes del grupo, que hemos trabajado en conjunto apoyo para esta presentación son: Joaquín Sarabia, Felipe Lagos, Esteban Muñoz y Katherine Pohlhammer.

El primer tema de la presentación es el join(unir tabla) left outer join que relaciona dos tablas pero comienza la unión desde la izquierda a la derecha, es decir la primera tabla nombrada en la sentencia será la primera en aparecer.



Existe otra unión similar a la nombrada anteriormente en este caso es el Right Outer Join que solo se diferencia del join nombrado anterior por empezar la union de las tablas de derecha a izquierda ósea cambia la dirección de la uniones.




Un ejemplo de todo esto: Select empleados.Apellido, departamento.NombreDepartamento from Empleados LEFT OUTER JOIN departamento ON empleado.id_departamento= departamento.id_departamento;


Donde la primera tabla nombrada, “Empleados” es la que comienza a mostrarse en el lugar izquierdo del resultado de la consulta, seguido por la tabla “Departamento” porque es nombrada en segundo orden, su posición es derecha.

 

La unión como explique anteriormente es la combinación de tablas, esta combinación es un solo resultado expresado en una columna.




Un ejemplo para la union:

select Nombre from Empleado_de_Temuco UNION select Nombre from Empleados_de_Santiago.

En la imagen se puede apreciar que se unen las columnas “Nombre” de ambas tablas en un solo resultado, donde se muestran 5 resultados ya que no se permite registros duplicados.


La siguiente union de las tablas es la Union all que solo tiene una diferencia con la union que hemos visto anteriormente, esto es permitir ver todos los resultados hasta los que son duplicados , los que quiere decir que muestras TODOS los resultados de la consulta.


Como pueden ver en la imagen en la sentencia select se han unido tres tablas donde en una tabla (Profesores) se encuentra un registro duplicado (Marcela) y este al realizar la union de las tres tablas igual es considerado. 



El siguiente tema a ver sobre las uniones, son las que muestran valores distintos que no se encuentran en unas de las tablas, iniciando la union de tipo except muestra todos los valores que son distintos partiendo del lado izquierdo que no están en el lado derecho, finalizando las uniones , otro tipo de union es la intersect que es similar a la anterior ya que se muestran los valores distintos de ambos lado (derecho e izquierdo).


Un ejemplo de sixtansis

Selec <columna> from <tabla1> except select < columna> from <tabla2>

Este ejemplo nos dice que muestra todos los valores distintos de la tabla 1 que no se encuentra en la otra tabla (tabla2).

Reflexión

Para la realización de esta presentación fue de gran ayuda primero ejecutar todas las consultas de los ejemplos en la aplicación por consola de mysql ya que fue  esencial para entender bien la funcionalidad que cumplen, presentan estas uniones, quedando más claro los términos expuestos en la presentación.

Te invito a que si tienes dudas o quieres complementar esta actividades mediante opiniones, otras informaciones no tengas miedo de emitir tus comentarios, a participar donde cada comentario hará que se haga más interactivo este espacio.


lunes, 12 de diciembre de 2011

Bonus Point ArrayList de Autos

Autor: Felipe Andrés Lagos Morapasten
Competencia: Comunicación Oral y Escrita. (Nivel 1)
Palabras Clave: Cliente-Servidor, Java, ArrayList, Colección.

Descripción de la Actividad

Iniciando nuevamente quiero compartir con ustedes la actividad de Bonus Point que me ayuda en la competencia de Comunicación Oral y Escrita, esta tarea de aplicación se realizó para el curso de Desarrollo de Aplicaciones de Cliente -Servidor, siendo representa con el numero 9 de los bonus, esta actividad consiste en crear una colección de tipo ArrayList para autos en este caso objetos de tipo Auto, ya que la colección o lista, su manera de trabajar en mediante el uso de objetos, la difícil de la actividad es agregar dos elementos igual para observar la funcionalidad para este caso.

Solución:

La solución de este bonus point comienza con los ejemplos para la colección, el análisis y diseño de la solución, un diagrama de actividad que nos explica el camino a recorrer de la aplicación y por último la implementación de la lista (Array List en Java).

Paso 1: Ejemplos.

"AE 55","Corola","Toyota", 2008,"123-4" > [P] > “Datos correctamente”
"AE 55","Corola","Toyota",2008,"123-4> [P] > “Datos correctamente a pesar de ser duplicados”
"HB 34","Hummer",”Jeep",200,"123-4> [P] > “Datos Correctamente sin importar que el Rut este repetido”
"TH 34","Corsa XL",”1123", 2020,"879-2> [P] > “No se ingresan porque el modelo no corresponden el tipo de dato”
"RT 74"," Evolución ",”Toyota", 2001,"908-2> [P] > “Datos correctamente”
"RF 00"," +++W ",”Nissan", 1231,"123-2> [P] > “Datos correctamente”
" "," Norte ",”Susuki", 2010,"993-3> [P] > “Datos correctamente”
" V16",”Nissan", 2090,"123-5> [P] > “Faltan datos como la Patente”
" TY 05", 2090,"123-5> [P] > “Faltan datos como el modelo y marca”
05,”Nissan”,”V16”, 2001,"123-5> [P] > “No se ingresan porque la patente no corresponden el tipo de dato”
“AB 15,” ”,” ”, 2001,"123-5> [P] > “Error faltan datos”
“ “, ”  “,”  “,0,” “> [P] > “Error en los Datos, no se ingresan”       
“ “, ”  “,”  “, “ ”,” “ > > [P] > “Error no ingresó datos”                                      
                              
                                           

      Paso 2: Análisis y Diseño.

La solución del problema  es crear una clase de autos con atributos como patente, marca, modelo, año y Rut del propietario con sus respectivos métodos para obtener y modificar estos atributos. Al terminar lo anterior, crear una nueva clase de colección ArrayList donde se guarden los datos de los autos sin importar que estén duplicados a diferencia de TreeSet

Entrada:                                                      Proceso:

Ingresar 8 objetos (Autos)                         Crear la colección ArrayList
con atributos Patente                                Agregar a la colección, los objetos                          
Marca, Modelo, Año, Rut propietario 


  Se han guardados datos en la colección ArrayList que permite datos duplicado como en este caso el ingreso de los mismo atributos para un auto.

        Salida:
Se mostrarán por consola lo que contiene la colección ArrayList.

 
Se muestran todo el contenido de ArrayList.

Paso 3: Especificación en Diagrama de Actividad.

 
Paso 4: Implementación en Java.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class BonusPoint9 {
    public static void main(String[] args) {
        List<Auto> lista = new ArrayList<Auto>();
        Auto obj= new Auto("EA 67","Corola","Toyota",2008,"1234");
        Auto obj2= new Auto("EA 67","Corola","Toyota",2008,"1234");
        Auto obj3= new Auto("QF 33","Corsa XL","Chetvolet",2000,"547-2");
        Auto obj4= new Auto("VB 21","Yaris","Toyota",2010,"946-2");
        Auto obj5= new Auto("PI 19","Evolution","Peugout",2009,"567-2");
        Auto obj6= new Auto("PÑ 10","Hammer","Jeep",2012,"345-6");
        Auto obj7= new Auto("FR 99","Gran Nomade","Susuki",2001,"253-2");
        Auto obj8= new Auto("AF 90","Hammer","Hyundai",2000,"1234");
   
        lista.add(obj);
        lista.add(obj2);
        lista.add(obj3);
        lista.add(obj4);
        lista.add(obj5);
        lista.add(obj6);
        lista.add(obj7);
        lista.add(obj8);
        Iterator it = lista.iterator();// Para poder acceder a la lista con los datos de autos
         System.out.println("ArrayList");
        System.out.println("Autos de la Coleccion");
         
         while(it.hasNext()){
            System.out.println(it.next());}
} //Cierre Main
} // Cierre Clase Bonus

 Clase Auto:
public class Auto implements Comparable {
    String Patente;
    String Modelo;
    String Marca;
    int Anio;
    String Rut;
    Auto()
    {}
    Auto(String RUT) {
        Rut = RUT;  }
    Auto(String PATENTE, String MODELO, String MARCA, int ANIO, String RUT)
    {    Patente=PATENTE;
        Modelo=MODELO;
        Marca=MARCA;
        Anio=ANIO;
        Rut=RUT;   }

    public String getPatente()
    {    return Patente;}

    public void setPatente(String PATENTE)
    {  Patente=PATENTE;}
    public String getModelo()
    { return Modelo;}
    public void setModelo(String MODELO)
    {  Modelo=MODELO;}
    public String getMarca()
    {return Marca;}
    public void setMarca(String MARCA)
    {   Marca=MARCA;}
    public int getAnio()
    {return Anio;}
    public void setAnio(int ANIO)
    { Anio=ANIO;}
    public String getRut()
    { return Rut;}
    public void setRut(String RUT)
    {  Rut=RUT;}
    public int compareTo(Object AutoIn) {
        Auto otroAuto = (Auto) AutoIn;
        if (this.getRut().equalsIgnoreCase(otroAuto.getRut())) {
            return 0;
        }
        String[] rutDivIn = otroAuto.getRut().split("-");   
        String[] rutDivThis = this.getRut().split("-");   

        int rutSinGuionIn = Integer.parseInt(rutDivIn[0]);
        int rutSinGuionThis = Integer.parseInt(rutDivThis[0]);

        if (rutSinGuionThis > rutSinGuionIn) {
            return 1;}
        if (rutSinGuionThis < rutSinGuionIn) {
            return -1;}
        return 1;
    }
 public String toString() {
        return Patente+" ->"+Modelo+" ->"+Marca + " -> " + Anio+" ->"+Rut;
    }  // Cierre toString
} // Cierre Clase Auto

Captura de la Aplicación:

 
Reflexión:

La finalidad de la actividad era conocer el tipo de lista ArrayList, donde gracias a este ejercicio me sirvió bastante ya que me permitió conocer otro tipo de lista, eso ayuda para saber cuando usar cada lista como por ejemplo este tipo de lista acepta datos duplicados en los atributos del objetos, lo que lo diferencia por ejemplo de TreeSet(otro tipo de lista, que no acepta duplicados), además de tener acceso a la lista se necesita un “puntero” para poder trabajar con la información.

Te invito a que si tienes dudas o quieres complementar esta actividades mediante opiniones, otras informaciones no tengas miedo de emitir tus comentarios, a participar donde cada comentario hará que se haga más interactivo este espacio.


viernes, 9 de diciembre de 2011

Presentación Join

Autor: Felipe Andres Lagos Morapasten
Competencia: Trabajo en equipo. (Nivel 1)
Palabras Clave: Base de datos, SQL, JOINS, Alias.
Descripción de la Actividad

Inicializando la competencia de trabajo en equipo, les compartir con ustedes la presentación en Power Point del grupo Dual Core que es correspondiente al curso de Introducción a las Base de Datos, esta presentación consiste en exponer sobre el capítulo 8 del libro Head First SQL que habla sobre los joins, los que son las uniones que se pueden hacer de las tablas, mediante una relación de columnas en ambas tablas, esto quiere decir que tiene que ver una columna en común en las tablas.

Solución


Mis compañeros que en conjunto hemos trabajado para la realización de esta presentación son Joaquin Sarabia, Felipe Lagos, Esteban Muñoz y Katherine Pohlhammer.



La función substring_index es usada para tomar el texto de una palabra, frase donde podemos seleccionar desde donde queremos tomar mediante las posiciones o como también desde la aparición de un carácter.

La posición empieza de izquierda a derecha siendo positiva en el inicio y negativa al final(derecha).
Una sentencia SQL como ejemplo para esta función es:

Update tabla  set Habilidad1= substring_index(“Habilidades”, “ ,“, 1); 

Esto nos dice que actualiza la tabla 1, la columna de Habilidad 1, con el texto de la columna habilidades desde la posición inicial hasta que encuentra un coma.



El alias de una columna se usa para dar un nombre propio a la misma columna todo esto se puede utilizar solo en la consulta select que se le da el alias

Ejemplo:
Select Nombre as N from Empleados;

Acá se asigno el nombre n a la columna Nombre de la tabla, todo esto funciona solo en la misma sentencia select.



Al igual que el alias de una columna, esto es dar un segundo nombre a una tabla, es importante usarlo cuando se relacionan dos o más tablas, esto solo funciona en la sentencia select.

Ejemplo: select * from empleados as n inner join departamento as d where n.idDepto=d.idDepto;

Acá se relacionaron dos tablas diferentes con el uso de los alias que se le asignó en la misma consulta.



La union Cross Join combina todas las filas de una tabla, con cada fila de otra tabla, se puede decir que es el producto de ambas tablas .

Ejemplo: Select * from Tipos_de_Autos CROSS JOIN Modelo.

Se unieron todos los registros de ambas tablas, cada registro de la tabla tipo de autos, con los de la tabla Modelo.



El inner join es la union de dos tablas mediante una condición que relaciona ambas tablas, una columna en común.


Ejemplo.  Select Niño, Juego from niños as n  inner join juegos as j  where n.id=j.id;

Se relaciona las dos tablas mediante un id (identificador), esta columna se encuentra en ambas tablas es importante para poder unirlas.



La última unión es la Natural Join que nos permite unir todas las columnas de igual nombre que se encuentran en las dos tablas.

Ejemplo: Select *from jugador NATURAL JOIN país.

En este caso une los registros por el mismo id ya que tiene el mismo nombre en ambas tablas.


Reflexión

Para la realización de esta presentación fue fundamental la organización para ver las posibles dudas que puede tener un integrante del grupo referente a la materia de las uniones, como también de los alias para columnas y tablas para luego poder dividir los temas que debe desarrollar cada uno para la posterior unión de las partes para la presentación.

Te invito a que si tienes dudas o quieres complementar esta actividades mediante opiniones, otras informaciones no tengas miedo de emitir tus comentarios, a participar donde cada comentario hará que se haga más interactivo este espacio.