martes, 1 de marzo de 2011

Curso básico de base de datos SQL

Curso básico de bases de datos SQL y normalización

Comenzamos con las formas normales, que son reglas a utilizar para organizar la estructura de nuestra base de datos, y no terminar con una enorme tabla con 50 campos.
Si ya contamos con nuestra lista de tablas y campos,debemos verificar que se cumplan al menos 4 formas normales y con ello evitar duplicidad y redundancia de la información. Así como contar con relaciones confiables entre nuestras tablas.
Para realizar nuestras prácticas y ejecutar comandos,podremos descargar una imagen de CDRom con el servidor sql ya instalado,configurado, y listo para practicar, haciendo click en este enlace.
FORMAS NORMALES

Primera forma normal (1NF). La primera forma normal (1NF) otorga reglas muy básicas para la organización de una base de datos:
  • Eliminar columnas duplicadas de la misma tabla.
  • Crear tablas separadas para cada grupo de datos relacionados e identificar cada fila con una columna o conjunto de columnas únicas (La llave primaria).
Segunda forma normal (2NF). La segunda forma normal (2NF) nos trae el concepto de remover datos duplicados:

  • Realice todos los requisitos de la primera forma normal
  • Elimine los subconjuntos de datos que se aplican a multiples filas de una tabla y ubiquelas en tablas separadas.
  • Establezca relaciones entre esas nuevas tablas y sus predecesores a través del uso de llaves foráneas.
Tercera forma normal (3NF). La tercera forma normal (3NF) es un gran paso donde:
  • Se encuentran todos los requisitos de la segunda forma normal.
  • Se eliminan columnas que no dependen directamente de la llave primaria.
Cuarta forma normal (4NF). Finalmente, la cuarta forma normal (4NF) tiene un requisito adicional:
  • Cumplir con todos los requisitos de la tercera forma normal.
  • Una relación esta en 4NF si no tiene dependencias de varios valores
Recuerde,estas guías de normalización son acumuladas.Para que una base de datos este en 2NF, debe primero cumplir todos los criterios de una base de datos en 1NF.


Para la práctica de los comandos sql,utilizaremos el CDRom de arranque de GuslyLive. Donde tendremos preinstalado el servidor SQL Firebird, que es un motor robusto,gratuito y open source disponible para las plataformas Linux,Windows,OSX y Solaris.
Solo encendemos la computadora e introducimos el disco,seleccionando el modo de arranque desde el cdrom.Al ver la pantalla de inicio presionamos enter sobre la primera opción "Live",para entrar al sistema:


         Al ingresar al sistema, lo preparamos haciendo doble click sobre el ícono "Bienvenida".

         Que nos mostrará un diálogo donde presionamos el botón del centro con la leyenda "configurar",nos abrirá una ventana que nos pregunta si deseamos iniciar el servidor de base de datos, le decimos "yes" moviendo el cursor presionando la flecha izquierda, y presionando la tecla enter. También nos preguntará por la contraseña del servidor, le escribimos "masterkey" y presionamos la tecla enter:

Base de datos SQL: Firebird versión 2.1 
usuario: sysdba 
contraseña: masterkey

         Luego entramos a la aplicación "FlameRobin" ubicada en el menú principal,grupo "programming"


         Aquí desplegamos la lista "LocalHost" (click en la flecha a la izquierda de Localhost) y hacemos doble click sobre el menú "empleados",para abrir la base de datos. Si obtenemos un error en este punto, repetimos la configuración y nos aseguramos de iniciar el servidor firebird, y escribir en minúsculas la contraseña "masterkey".

         Finalmente,presionamos el botón derecho sobre la lista "empleados" y presionamos la opción "Run a Query",nos abrirá la ventana para ejecutar comandos SQL sobre nuestra base de datos de ejemplo. 

         Para aplicar los cambios ejecute primero el comando con el boton "Execute statement" y luego aplique la transacción en el botón de "commit transaction".


Lenguaje DDL (Lenguaje de definición de datos)

sintaxis:

<tipo> =
  {SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}
  | {(DATE | TIME | TIMESTAMP}
  | {DECIMAL | NUMERIC} [(precision [, scale])]
  | {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [(int)]
  | {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR} [VARYING] [(int)]

<columna>= <nombre><tipo>[not null][primary key];


Crear una tabla


CREATE TABLE <tabla> (<columna>[, <columna> ]);



ej. create table clientes (id_clie integer not null primary key, nombre varchar(120),appat varchar(60),apmat varchar(60))


Modificar la estructura de una tabla existente


ALTER TABLE <tabla> <operacion> [, <operacion> ...];

<operacion> = {ADD <columna>
  | ALTER [COLUMN] column_name <cambios>
  | DROP columna}

<cambios> = {TO nuevo_nombre
  | TYPE nuevo_tipo}



ej. alter table clientes add curp varchar(20);
alter table clientes alter nombre type varchar(200);


Eliminar una tabla


DROP TABLE tabla;



ej. drop table alumnos;


Lenguaje DML (Lenguaje de manipulación de datos)


Insertar registros a una tabla


INSERT  INTO <tabla> [(columna [, columna ...])]
  {VALUES (<valor> [, <valor> ...]) | <expresion select>};



ej. insert into clientes (id_clie, nombre ,appat ) values (1,'mickey','mouse');
insert into clientes (id_clie, nombre ,appat ) select id,nombre,apellido from alumnos;


Actualizar registros en una tabla


UPDATE  tabla SET columna = <valor> [, columna = <valor> ...] [WHERE <filtro> ];



ej. update clientes set curp='xxxxxxxxxxx' where id_clie=1;


Eliminar registros


DELETE FROM tabla    {[WHERE <search_condition>] };



ej. delete from clientes;
delete from clientes where id_clie=1;


Solicitar un conjunto de registros


SELECT [DISTINCT] {<lista_columnas> | *} FROM <lista_tablas>
[WHERE <filtro>]

<filtro>=[not] <campo> <operador><valor>
<operador>= =|>|<|<>|s null|is not null|between
<valor>=<campo>|<constante>|<constante> and <constante>

ej. select * from clientes;
select id_clie,nombre from clientes where id_clie between 1 and 10;

martes, 15 de febrero de 2011

Comentarios del SHDHMID 4

Super Happy Dev House Mérida edición 4
 #SHDHMID

   En lo particular, mi objetivo en este evento era publicar un wiki donde las personas interesadas en desarrollar aplicaciones para móviles bajo el nuevo sistema Android, tengan un punto de partida y un concentrador de experiencias de otras personas con intereses similares.

   Un segundo objetivo era terminar durante el evento el desarrollo de una pequeña aplicación de prueba con el ciclo completo, esto es, instalarlo en mi celular HTC Desire A, con Android 2.1.

   Gracias a la sinergia del evento, un compañero dono espacio para alojar la página web del wiki, y otro compañero también interesado en el desarrollo para Android, donó a los participantes material en video que había obtenido de desarrolladores españoles, donde el mercado es aún mas grande para las aplicaciones móviles, que en yucatán.

   Puedo concluir que mis objetivos personales, se cumplieron durante el evento y aprendí de mis compañeros.

   Fue un buen evento, el cuarto en Mérida, donde tuvimos la oportunidad de conocer a desarrolladores de ciudad del carmen que nos visitaron y trabajaron sobre sus propios proyectos. También un programador del conalep que aunque sin proyecto, llego a observar sobre las nuevas herramientas que se utilizan actualmente, para reincorporarse a esta ola tecnológica que se esta desarrollando en la ciudad de Mérida gracias a este evento y otros similares. 

   Un proyecto muy prometedor y con meses de desarrollo se presentó, www.pikhub.com que es justo la organización de equipos de trabajo, a la que se pretende llegar.


martes, 8 de febrero de 2011

Ingresar como usuario Root en HTC Desire A

Saludos:

   Recién jugando con un celular HTC Desire A como se le llama en México (en EEUU es HTC Wildfire) que trae Android Eclair 2.1, veo que en el Market existen aplicaciones útiles que necesitan que el teléfono este "rooteado".

   Y pues nos dimos a la tarea de conseguir el acceso al usuario root, en el sistema linux de Android, para esto hay muchas aplicaciones y tutoriales, lo que incluiré en las siguientes líneas serán los que utilicé para mi modelo y versión de android en particular y observaciones.

  Encontramos un tutorial muy bueno en http://www.thedroiddemos.com/forum/viewtopic.php?f=45&t=22

  Incluye un video de los pasos a seguir, el camino que tome fue a través de windows, instalando los drivers del HBOOT USB con el sistema android de fabrica 2.1, ya que comentan que aún no hay un rooteo efectivo si previamente actualizamos a android 2.2 y luego intentamos rootear.


     El método se aplica para otros modelos de terminales htc android,pero la recomendación es que si no se encuentra en la lista, mejor elijan otro método que si se haya probado en él, ya que las variantes son muchas y puede desconfigurar el equipo.

   Y si algunos se animan, y tiene un HTC Desire A, les puedo comentar que me funcionó bien, y si se detienen en algún paso, pueden enviarme un tweet a @roboxito.

  Así que, Happy hacking!!

domingo, 21 de noviembre de 2010

Firefox 4 Minefield y Flash player 10.2 en Linux Debian a 64bits

Saludos

Para aquellos que tienen una computadora con procesador Amd64, y se decidieron a instalar Linux a 64 bits para aprovechar todo su potencial, se habrán dado cuenta que no existe un soporte para firefox ni para flash player adecuado desde la instalación.

Debian Lenny Amd64 usa IceWeasel de Mozilla,y tampoco reproduce bien videos de flash, como las películas de megavideo.

Para corregir esto:

1.-Descargamos el Firefox 4.0b8pre Minefield a 64 bits, de la página de compilaciones nocturnas de mozilla.

Seleccionamos el Linux 64 bit Intel.

http://nightly.mozilla.org/

2.-Luego  descargamos el beta de Flash player 10.2 "square" para linux a 64 bit, de Adobe beta labs.

http://labs.adobe.com/downloads/flashplayer10.html


 3.-Descomprimimos nuestro firefox en nuestra carpeta personal de linux.

4.-Sustituimos el flash 9.0 que viene con nuestro linux por el 10.2 de adobe labs, descomprimiento y copiando el archivo:

libflashplayer.so

al directorio /usr/lib/swfdec-mozilla

5.-renombramos el archivo libswfdecmozilla.so para respaldarlo

6.-renombramos el archivo libflashplayer.so por libswfdecmozilla.so

7.-para verificar  podemos ir al url "about:plugins" en nuestro firefox recien instalado:

~$ ./firefox/firefox about:plugins

y verificar que nuestro Shockwave Flash se actualizó a la version 10.2 d161

Y ya podremos ver megavideo en nuestro linux Amd64,

Diviertanse!!

domingo, 7 de noviembre de 2010

Creación de un ISO de arranque personalizado con Debian Live

Saludos,

   Muchos ya hemos visto que en linux hay distribuciones que arrancan directamente desde el CDROM, y nos permiten probarlo sin la necesidad de instalarlo en nuestra computadora.

  Pues bien, en esta entrega prepararemos un CD con los programas que queremos que se incluya, y que la mayoría de las veces, no se incluyen por falta de espacio.

  El primer requisito es contar con un sistema ya instalado de linux Debian estable 5.0 (Lenny), ya que todos los pasos los realizaremos en una terminal de linux.

  El proyecto Debian Live, esta preparando una interfaz web para configurar los programas que tendrá el CD de arranque, pero por el momento esta en fases alfa de desarrollo.

  Los pasos a realizar son los siguientes:

  1.-Nos cambiamos al superusuario o administrador (root), para realizar todos los pasos, es importante ya que los comandos para crear el CD deben ejecutarse en el directorio o carpeta del administrador (/root).


$ su
password:xxxxx
# cd
# pwd
/root


  2.-Agregar el repositorio de debian live a nuestro sistema. En el archivo /etc/apt/sources.list agregar la linea

#echo "deb http://live.debian.net/ lenny-snapshots main" >> /etc/apt/sources.list  

  3.-Actualizamos nuestra lista de paquetes, e instalamos los nuevos. live-boot, live-build

# apt-get update
# apt-get install live-boot live-build

  3.-Creamos el directorio de configuración, y ejecutamos algunas configuraciones.

# lb config
# lb config --packages "gdm fluxbox ftp mc"
# lb config --bootappend-live "locales=es_ES.UTF-8"
# lb config --bootappend-live "keyboard-layouts=es"
# lb config --language "es"
# lb config --packages-lists "standard-x11"
# lb config --archive-areas "main contrib non-free"


  4.-Finalmente reconfiguramos, y generamos el iso en el directorio /root

# lb config
# lb build

Este último paso, tardará varios minutos, ya que descarga todos los paquetes de internet,que necesita para generar el archivo /root/binary-hybrid.iso del CD.

  5.-Para probar nuestra imagen de CD recién creada, podemos arrancar con ella, con una maquina virtual como QEMU.

# qemu -cdrom binary-hybrid.iso

Si desean cambiar y experimentar con otras configuraciones, al terminar de modificar los archivos /root/config/chroot, /root/config/bootstrap, etc. ejecuten siempre la secuencia de limpieza, reconfiguración y generación de la imagen ISO.

# rm -r cache
# lb clean
# lb config
# lb build

Y diviertanse!

Aquí les dejo una imagen ISO con administrador de ventanas ligero Fluxbox, Base de datos SQL Firebird 2.1, Editor de consultas SQL FlameRobin,Google Chrome,Apache2,gcc y teclado ya configurado en español.


GUSLYLIVE 0.52 ISO-Hybrid (10/Noviembre/2010) http://www.megaupload.com/?d=OMXHADTW *1
*1 Cualquier software para quemar de CDs
GUSLYLIVE 0.52 USB-Hdd (10/Noviembre/2010)     http://www.megaupload.com/?d=14K9L0HU *2
*2 # dd if=guslylive0.52.img of=/dev/sdb bs=102400





miércoles, 27 de octubre de 2010

Conferencia "Afinando motores SQL"


Saludos

  Hoy dió inicio la 9a. semana de tecnología en el tecnológico de Conkal,Yucatán,México y asistimos a impartir una conferencia con tema centrado en recomendaciones generales para un mayor rendimiento de las consultas SQL.

  Les dejo la liga de la presentación que utilicé: Afinando motores SQL.

  Es un archivo descargable en formato de OpenOffice Impress.

  Habla de que es SQL, que es un DBMS, cuales son libres, cuales no, clasificación de los comandos de SQL, y ofrece 7 consejos para trabajar con SQL.

  Y les dejo un intento de streaming, o podcast del taller, que lamentablemente necesito mas práctica y que no me llamen por cel para que no se corte. Lo rescatable es el audio :-D. Vea aquí el podcast.

viernes, 22 de octubre de 2010

Debian Live en USB persistente

  En algunas ocasiones quisiéramos tener Linux con nosotros en cualquier computadora que usemos, en el trabajo, en la escuela, hasta en casa de los amigos (sobre todo de amigas).

  A continuación veremos una forma de hacerlo, y que al trabajar en nuestro sistema Linux sobre USB, todos los cambios queden registrados como si se tratara de nuestro sistema principal.

  En esta primera entrega mostraremos el método para armarlo desde una Linux box  (computadora con Linux instalado), y en la siguiente mostraremos como realizarlo desde una computadora con windows. Los pasos 1 y 2 son independientes del método.

  Los pasos a seguir son:
    1.-Conseguir un USB de al menos 1 Gb (recomendado 2 ó 4, no mas. probado en 2 Gb,8 Gb falla).
    2.-Descargar el archivo de imagen de Debian Live para USB. (descarga con kde , gnome , xfce)
    3.-Copiar a bajo nivel la imagen de Debian Live al USB (usando DD).
    4.-Crear una nueva partición en el USB, para usar el espacio restante.
    5.-Formatear la nueva partición como ext2 y ponerle la etiqueta  "live-rw"
    6.-Arrancar con el USB, y en la primera pantalla seleccionar "Ayuda" y teclear el comando de arranque en modo persistente.


  Armarlo desde una Linux box

  1.-Insertar el USB en la computadora, revisar ¿que dispositivo se asigno a nuestro usb?:

#dmesg

    Aquí vemos que el sistema lo detectó como el dispositivo sdb, entonces usaremos la referencia completa al archivo que es /dev/sdb. Es muy probable que su sistema detecte el dispositivo sda como el USB, si no cuenta con disco duro scsi.

   Y nos aseguramos que no esté montado el dispositivo, con el comando

#umount /dev/sdb

  2.-Descargar la imagen de Debian live para usb. Tenemos varias alternativas, el sistema mínimo o de ventanas. Entre ellos podremos descargar con kde , gnome , xfce. (click en cualquier opción para descargar manualmente alguna). Ejecutamos el comando wget para bajar el de kde por ejemplo.

#wget http://cdimage.debian.org/cdimage/release/current-live/i386/usb-hdd/debian-live-506-i386-kde-desktop.img 

  3.-Copiamos a bajo nivel la imagen al usb.

#dd if=debian-live-506-i386-kde-desktop.img of=/dev/sdb bs=1024000

  4.-Creamos una nueva partición en el usb.

#fdisk /dev/sdb

presionamos <n> nueva partición
                    <p> partición primaria
                    <2> segunda partición primaria
                    <Enter> acepta primer cilindro sugerido
                    <Enter> acepta último cilindro sugerido
                    <w> graba los cambios a la tabla de particiones del USB
                    <q> salir, si no ha salido desde el paso anterior

  5.-Formateamos la nueva partición, de tipo ext2 y le ponemos la etiqueta de volumen "live-rw" (cuidado de nombrarlo con el numero: /dev/sdb2, ya que la segunda partición vamos a formatear no todo el USB)

#mkfs.ext2 -L live-rw /dev/sdb2 

  6.-Y puf, finalmente reiniciamos la computadora, configuramos el bios para que arranque por USB primero, o presionamos la tecla de medios de arranque y seleccionamos el USB.

  En la primera pantalla, durante el arranque :
    presionamos la tecla <esc> para cancelar el menú, e ir a la línea de comando de arranque

boot:

  Ahí escribimos el comando de arranque "live persistent"

boot: live persistent

  Y con esto, cualquier programa que instalemos en nuestro USB, como mozilla firefox para navegar, tweet deck para twitear,configuración de teclado en español, etc. se guardará en el USB y lo tendremos disponible para nuestro próximo arranque.

  La imagen muestra el sistema corriendo el gestor de ventanas XFCE.



  La próxima entrega, mostraremos los primeros pasos para copiar la imagen desde una maquina windows, y poder realizar el proceso si no contamos con una Linux box.