sábado, 7 de mayo de 2011

Lenguaje de definición de Datos (DDL)

El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, [[Vista 'CAMPO_2' STRING </source>
Ejemplo (crear una función)
CREATE OR REPLACE FUNCTION 'NOMBRE FUNCION'('PARAMETROS')
  RETURNS 'TIPO RETORNO' AS
$BODY$
begin
'INSTRUCCIÓN SQL'
--por Ejemplo:
DELETE FROM con_empleado WHERE id_empleado = 'ANY' (ids);
end;
$BODY$
LANGUAGE 'plpgsql';

ALTER
Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.
Ejemplo (agregar columna a una tabla)
ALTER TABLE 'TABLA_NOMBRE' (
   ADD NUEVO_CAMPO INT UNSIGNED meel) 

DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla, vistaíndicetrigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.
Ejemplo
 ALTER TABLE ''TABLA_NOMBRE''(
    DROP COLUMN ''CAMPO_NOMBRE1''

TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.
Ejemplo
 TRUNCATE TABLE ''TABLA_NOMBRE


PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos. Entre ellos destacan los siguientes:

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

 Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (prívate) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método

Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Instanciamiento: En programación, una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa

Las leyes de Murphy, ( aplicadas a la imformatica)

Si algo puede fallar, fallará".
·                     Nada es tan fácil como parece serlo.
·                     Todo tiene necesidad de más tiempo del que usted piensa.
·                     Si existe la posibilidad de que varias cosas puedan salir mal, saldrá mal aquella que cause el mayor daño.
·                     Si usted descubre que existen cuatro maneras posibles en que un procedimiento pueda fracasar, y logra solucionarlas, entonces surgirá inevitable y rápidamente una quinta posibilidad de fallo.
·                     Si se dejan al azar las cosas, tenderán a ir de mal en peor.
·                     Siempre que se disponga a hacer algo, habrá antes algo más importante que hacer.
·                     Cada solución genera nuevos problemas.
·                     Es imposible hacer algo a prueba de tontos, porque éstos son muy ingeniosos.
·                     La naturaleza siempre se pone de parte del fallo escondido.
·                     La madre naturaleza es una malvada.
Leyes para programar un ordenador:
·                     Cualquier programa dado, al ejecutarlo se vuelve obsoleto.
·                     La realización de cualquier programa dado cuesta más y lleva más tiempo.
·                     Si un programa es útil, por algún motivo deberá cambiarlo.
·                     Si un programa es inútil, deberá ser documentado.
·                     Cualquier programa dado se expandirá para llenar toda la memoria disponible en la computadora.
·                     El valor de un programa es proporcional al peso de su información de salida.
·                     La complejidad del programa aumenta hasta que excede la capacidad del programador que debe llevarlo a cabo.
Algunos postulados de Troutman sobre programación:
·                     Si un editor de entrada ha sido diseñado para rechazar las malas entradas, algún idiota ingenioso descubrirá la forma de que éstas pasen.
·                     La maldición es el lenguaje que mejor conocen todos los programadores.

Axioma informático de Leo Beiser:
·                     Cuando archive algo en la memoria, acuérdese de dónde lo guardó.
Axiomas informáticos de McCristy:
·                     Los archivos de apoyo nunca estarán completos
·                     Los fallos del software se pueden corregir sólo cuando la industria considera que se ha quedado obsoleto.
Ley de Lubarsky sobre la entomología cibernética: 
·                     Siempre queda algún virus.
Regla de Sutin: 
·                     De todas las cosas que se pueden hacer con un ordenador, las más inútiles son las más divertidas.
Ley de Smith sobre reparación de ordenadores: 
·                     Los orificios de acceso tendrán medio milímetro menos de diámetro.
Ley de los SIMMs de Protel:
·                     Si se deja un ordenador abierto sobre una mesa, los SIMMs de memoria tenderán a desaparecer espontáneamente.
Leyes de Gilb acerca de la falta de fiabilidad:
·                     No se puede confiar en las computadoras, pero menos aún en los seres humanos.
·                     Cualquier sistema que dependa de la confianza en seres humanos, es poco fiable.
·                     Los errores imposibles de descubrir son infinitos en su variedad, en contraste con los detectables que por definición son limitados.
·                     Las inversiones para asegurar fiabilidad aumentarán hasta que excedan el coste probable de los errores que puedan presentarse o hasta que alguien insista en hacer algún trabajo útil.
Ley de la falta de fiabilidad: 
·                     Errar es humano, pero, para liar las cosas de verdad, hace falta un ordenador.  
·                     La última versión de SCSI es la Wide Ultra2 SCSI, que usa un bus de 16 bits, un ancho de banda de 80MB/s y trabaja con cables planos de 68 hilos. 
Norma de Steinbach para los sistemas de programación: 
·                     No trate nunca de verificar una condición de error que no sepa manejar.

Principio de Pollyanna sobre la IBM: 
·                     Las máquinas deben funcionar y las personas, pensar.
Ley de Brook: 
·                     Asignar fuerza de trabajo adicional a un proyecto retrasado lo demorará aún más.
Leyes de computación de acuerdo con Golub:
·                     Los objetivos de un proyecto, definidos en forma confusa, se utilizan para evitar la molestia de hacer la correspondiente estimación de costos.
·                     Un proyecto mal planeado se lleva tres veces el tiempo estimado para terminarse, uno bien planeado tomará solamente el doble.
·                     El esfuerzo requerido para corregir el rumbo aumenta geométricamente con el tiempo.
·                     Los equipos de trabajo detestan los informes semanales de avance porque en éstos se demuestra en forma evidente la falta de progreso.
Principio de Shaw:
·                     Diseñe un sistema que hasta un tonto pueda utilizar, y solamente un tonto lo querrá emplear.
Leyes de Manubay para los programadores:
·                     Si funciona la modificación de un programador a un programa ya existente, es probable que no sea lo que quieren los usuarios.
·                     Los usuarios no saben realmente lo que quieren, pero saben con certeza lo que no quieren.
Ley de Greer: 
·                     Un programa de ordenador hace lo que usted le ordena que haga, no lo que usted quiere que haga.

Extensiones y tipos de archivos utilizados en Visual FoxPro




Extensión
Tipo de archivo
.act
Diagrama de acción del Asistente para documentación
.app
Aplicación o documento activo generado
.cdx
Índice compuesto
.chm
Ayuda HTML compilada
.dbc
Base de datos
.dbf
Tabla
.dbg
Configuración de depurador
.dct
Memo de base de datos
.dcx
Índice de base de datos
.dll
Biblioteca de vínculos dinámicos de Windows
.err
Error de compilación
.esl
Biblioteca de compatibilidad de Visual FoxPro
.exe
Programa ejecutable
.fky
Macro
.fll
Biblioteca de vínculos dinámicos de FoxPro
.fmt
Archivo de formato
.fpt
Memo de tabla
.frt
Memo de informe
.frx
Informe
.fxp
Programa compilado
.h
Archivo de encabezado (para incluir en un programa de Visual FoxPro o C/C++)
.hlp
WinHelp
.htm
HTML
.idx
Índice, índice compacto
.lbt
Memo de etiqueta
.lbx
Label
.log
Registro de trayecto
.lst
Lista del Asistente para documentación
.mem
Variables guardadas
.mnt
Memo de menú
.mnx
Menú
.mpr
Programa de menú generado
.mpx
Programa de menú compilado
.ocx
control ActiveX
.pjt
Memo de proyecto
.pjx
Proyecto
.prg
Programa
.qpr
Programa de consulta generado
.qpx
Programa de consulta compilado
.sct
Memo de formulario
.scx
Formulario
.spr
Programa de pantalla generado (sólo en versiones anteriores de FoxPro)
.spx
Programa de pantalla compilado (sólo versiones anteriores de FoxPro)
.tbk
Copia de seguridad de memo
.txt
Texto
.vct
Memo de biblioteca de clases visuales
.vcx
Biblioteca de clases visuales
.vue
Presentación de FoxPro 2.x
.win
Archivo de ventana