domingo, 30 de octubre de 2011

C#

C# ,pronunciado si sharp en inglés, es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común.

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.

El nombre C Sharp fue inspirado por la notación musical, donde “” ,sostenido, en inglés Sharp, indica que la nota ,C es la nota do en inglés, es un semitono más alta, sugiriendo que C# es superior a C/C++. Además, el signo '#' viene de cuatro '+' pegados.

Aunque C# forma parte de la plataforma .NET, ésta es una API, mientras que C# es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Ya existe un compilador implementado que provee el marco Mono - DotGNU, el cual genera programas para distintas plataformas como Windows, Unix y GNU/Linux.

viernes, 21 de octubre de 2011

MIgraciones en Ruby on Rails

Las migraciones sirven para modificar su base de datos de una manera organizada. Es posible hacerlo mediante sentencias de SQL.

Una vez que ya hiciste todas las modificaciones y/o validaciones que se tengan que hacer en su fuente, se debe ejecutar la sentencia “rake db:mígrate”. Esto también actualizara su base de datos/ archivo “schema.rb” para que coincida con la estructura de su base de datos.

Las migraciones son clases

la migración es una subclase de ActiveRecord:: Migration que implementa dos métodos: a(realizar las transformaciones necesarias) y abajo (volver a).

Active Record ofrece métodos que realizan tareas comunes de definición de datos de manera independiente (que vas a leer sobre ellos en detalle más adelante):


· CREATE_TABLE

· change_table

· DROP_TABLE

· add_column

· change_column

· rename_column

· remove_column

· add_index

· remove_index


Si es necesaria hacer cosas espesificas como una foreign key, entonces se dene ejecutar la función “execute” que le permite utilizar SQL.

Tipos de datos admitidos

Active Record soporta los siguientes tipos:

  • · Primary_key
  • : Cadena
  • · : Texto
  • · : Entero
  • · : Float
  • · : Decimal
  • · : Fecha y hora
  • · : Fecha y hora
  • · : El tiempo
  • · : Fecha
  • · : Binario
  • · : Boolean

Ejecución de las migraciones

Rails proporciona un conjunto de tareas rake para trabajar con las migraciones que se reduce a la ejecución de ciertos conjuntos de las migraciones. La tarea de migración primera comisión relacionada con el uso que usted probablemente será db:migrate.

Tenga en cuenta que la ejecución de la base de datos: migrate también invoca el db: schema:la tarea de descarga, que actualizará su base de datos / archivo schema.rb para que coincida con la estructura de su base de datos.

Si se especifica una versión de destino, Active Record se ejecutarán las migraciones requiere (hacia arriba o hacia abajo) hasta que ha llegado a la versión especificada. La versión es el prefijo numérico en el nombre del archivo de la migración. Por ejemplo, para migrar a la versión 20080906120000 ejecutar

Rake db:mígrate versión 20080906120000

Bibliografia


Ruby on rails. (n.d.). Retrieved octubre 20, 2011, from http://guides.rubyonrails.org/migrations.html

viernes, 7 de octubre de 2011

Triggers

Hola

A continuación se presentará información acerca de los Tiggers en SQL.

Los triggers son "disparador" sobre una tabla creada anteriormente en tu base de datos. Se podría decir que son como las excepciones en algunos lenguajes de programación.

Estos pueden ocurrir al hacer un "Insert, "Update" o un "Delete".

Son usados para una buena administración de la base de datos, sin la necesidad de que uno como usuario tenga que ejecutar una sentencia SQL como tal.
Previene errores de datos, en algunos casos puede sincronizar tablas, modificar valos de alguna vista que se quiera predefinir de alguna manera, etc
Permite implementar programas basados en paradigma lógico (sistemas expertos, deducción)

Existen dos tipos de Trigger:

estos se clasifican según la cantidad de ejecuciones a realizar:

  • Row trigger: aquellos que se ejecutaran n veces si se llama n veces desde la tabla asociada.
  • Statement trigger: aquellos que sin importar la cantidad de veces que se cumple con la condición, el trigger solo se ejecuta uno única vez
los Trigger en DB2 de IBM se escriben de la siguiente manera.

CREATE TRIGGER [schema_name.]trigger_name
[NO CASCADE] cascade quiere decir que siga ejecutando mas triggers, para así no entrar en un ciclo
[BEFORE | AFTER | INSTEAD OF] cuando se va a iniciar el trigger
[INSERT | UPDATE | DELETE ] ON [schema_name.]table_name
[REFERENCING {NEW AS | OLD AS |NEW_TABLE AS |
OLD_TABLE AS }]
FOR EACH ROW | FOR EACH STATEMENT
MODE DB2SQL
BEGIN [ATOMIC] Atomic quiere decir que todo se debe ejecutar como una unidad, es decir todo debe funcionar o no correrá
END;

Por ahora me despido, espero les halla sido útil.

Bibliografia
Instituto Tecnológico y de estudios superiores de monterrey. campus santa fe
departamento de Tecnologías de la información y electronica





jueves, 6 de octubre de 2011

Ejemplo de Script en SQL

Este script fue utilizado para crear la base de datos que se muestra a continuación:

CREATE SCHEMA "ADMINISTRATOR";


CREATE TABLE "ADMINISTRATOR"."BARES" (
"CODB" VARCHAR(3) NOT NULL,
"NOMBRE" VARCHAR(15) NOT NULL,
"CIF" VARCHAR(10),
"LOCALIDAD" VARCHAR(20) NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

CREATE TABLE "ADMINISTRATOR"."CERVEZAS" (
"CODC" VARCHAR(3) NOT NULL,
"ENVASE" VARCHAR(10) NOT NULL,
"CAPACIDAD" DECIMAL(6 , 3) NOT NULL,
"STOCK" INTEGER NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

CREATE TABLE "ADMINISTRATOR"."EMPLEADOS" (
"CODE" VARCHAR(3) NOT NULL,
"NOMBRE" VARCHAR(30) NOT NULL,
"SUELDO" INTEGER NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

CREATE TABLE "ADMINISTRATOR"."REPARTO" (
"CODE" VARCHAR(3) NOT NULL,
"CODB" VARCHAR(3) NOT NULL,
"CODC" VARCHAR(3) NOT NULL,
"FECHA" DATE NOT NULL,
"CANTIDAD" INTEGER NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

ALTER TABLE "ADMINISTRATOR"."BARES" ADD CONSTRAINT "SQL110915083013030" PRIMARY KEY
("CODB");

ALTER TABLE "ADMINISTRATOR"."CERVEZAS" ADD CONSTRAINT "SQL110915090449660" PRIMARY KEY
("CODC");

ALTER TABLE "ADMINISTRATOR"."EMPLEADOS" ADD CONSTRAINT "SQL110915083625520" PRIMARY KEY
("CODE");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915083904570" PRIMARY KEY
("CODE",
"CODB",
"CODC");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915084519020" FOREIGN KEY
("CODE")
REFERENCES "ADMINISTRATOR"."EMPLEADOS"
("CODE");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915084537220" FOREIGN KEY
("CODB")
REFERENCES "ADMINISTRATOR"."BARES"
("CODB");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915090459180" FOREIGN KEY
("CODC")
REFERENCES "ADMINISTRATOR"."CERVEZAS"
("CODC");

GRANT CREATEIN ON SCHEMA "ADMINISTRATOR" TO PUBLIC;

*Nota: el script crea la base de datos vacía.

Triggers

Los triggers (o desencadenadores) son acciones que se ejecutan automáticamente cuando se realiza una acción en una tabla que este asociada al trigger. Estos pueden ser de inserción (INSERT), actualización (UPDATE) y borrado (DELETE).

Son útiles para automatizar operaciones en las que no se necesita del usuario ya que, dado determinado caso, siempre deben ser ejecutadas. Sus principales usos son:

  • Calculo de Valores
  • Validación
  • Bitácora
  • Garantizan Integridad Referencial

Están compuestos por la instrucción que activa el código que se ejecutará, la condición que se necesita para que el código se ejecute y la secuencia de instrucciones que se va a ejecutar una vez cumplidas las condiciones iniciales.

Síntaxis en DB2:

CREATE TRIGGER [schema_name.]trigger_name
[NO CASCADE]
[BEFORE | AFTER | INSTEAD OF]
[INSERT | UPDATE | DELETE] ON [schema_name.]table_name
[REFERENCING {NEW AS | OLD AS | NEW TABLE AS | OLD_TABLE AS|}]
FOR EACH ROW | FOR EACH STATEMENT
MODE DB2SQL
BEGIN [ATOMIC]
END;
DROP TRIGGER [schema_name.]trigger_name

Nota: El número máximo de triggers por tabla es 6.

Osorio Rivera, F. L. (2008). Base de Datos Relacionales. Medellín, Colombia: Textos Académicos.

Álgebra Relacional

Es un método de extracción que permite manipular tablas y columnas. Está basado en crear nuevas tablas partiendo de las que ya existe, las tablas creadas pasan a ser objetos que pueden ser usados inmediatamente.

Existen operadores básicos y derivados. Unión, diferencia y selección son ejemplos de operadores básicos, entre los derivados se encuentran intersección, join, y división; estos últimos se pueden crear a partir de operadores básicos.

Los operadores más utilizados son:

  • Selección: es un operador unario, es decir que sólo trabaja en una relación. Obtiene las filas de la tabla indicada que cumplan con los requisitos predeterminados. Se expresa con sigma.
  • Proyección: al igual que selección, también es un operador unario. Regresa todas las filas para cierta columna. Se expresa con pi.
  • Join: este operados obtiene los atributos de dos relaciones, esto lo hace combinando las tuplas de ambas relaciones que tengan el mismo valor en atributos comunes. Se expresa con *.

Gabillaud, J. (2008). SQL Server 2008 SQL Transact SQL. Barcelona, Madrid: Ediciones ENI.

Ruby on Rails:






Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby, siguiendo el paradigma de la arquitectura Modelo Vista Controlador (MVC). Trata de combinar la simplicidad con la posibilidad de desarrollar aplicaciones del mundo real escribiendo menos código que con otros frameworks y con un mínimo de configuración. El lenguaje de programación Ruby permite la metaprogramación, de la cual Rails hace uso, lo que resulta en una sintaxis que muchos de sus usuarios encuentran muy legible. Rails se distribuye a través de RubyGems, que es el formato oficial de paquete y canal de distribución de bibliotecas y aplicaciones Ruby.

Filosofía:

Los principios fundamentales de Ruby on Rails incluyen No te repitas.

No te repitas significa que las definiciones deberían hacerse una sola vez. Dado que Ruby on Rails es un framework de pila completa, los componentes están integrados de manera que no hace falta establecer puentes entre ellos. Por ejemplo, en ActiveRecord, las definiciones de las clases no necesitan especificar los nombres de las columnas, Ruby puede averiguarlos a partir de la propia base de datos, de forma que definirlos tanto en el código como en el programa sería redundante.

Convención sobre configuración significa que el programador sólo necesita definir aquella configuración que no es convencional.

Gemas:

Las gemas son plugins y/o códigos añadidos a nuestros proyectos Ruby on Rails, que nos permiten nuevas funcionalidades como nuevos create, nuevas funciones pre-escritas (como login de usuarios) o nuevas herramientas para el desarrollo como puedan ser Haml y SASS (la primera es una nueva forma de template basada en html pero más sencilla y potente, y la segunda es igual pero para el caso de las CSS). Para encontrar el listado de gemas disponibles puedes ir a RubyForge

Soporte de Bases De Datos:

Dada que la arquitectura Rails favorece el uso de bases de datos se recomienda usar un SGBDR para almacenamiento de datos. Rails soporta la biblioteca SQLite por defecto. El acceso a la base de datos es totalmente abstracto desde el punto de vista del programador, es decir que es agnóstico a la base de datos, y Rails gestiona los accesos a la base de datos automáticamente (aunque, si se necesita, se pueden hacer consultas directas en SQL) Rails intenta mantener la neutralidad con respecto a la base de datos, la portatibilidad de la aplicación a diferentes sistemas de base de datos y la reutilización de bases de datos preexistentes. Sin embargo, debido a la diferente naturaleza y prestaciones de los SGBDRs el framework no puede garantizar la compatibilidad completa. Se soportan diferentes SGBDRs, incluyendo MySQL, PostgreSQL, SQLite, IBM DB2 y Oracle.


Gracias.