jueves, 12 de mayo de 2016

Bases de Datos

Contenido:
- Que es SQL.
- Normalización.
- Formas Normales.
- Tipos de Instrucciones SQL (DDL, DCL, DML).
- Fuentes.


¿Que es SQL?
SQL es el Lenguaje Estructurado de Consultas o en ingles:
S
tructured Query Language.
SQL apoya la creación de las bases de datos relacionales y mantenimiento de las mismas y además a la gestión de los datos estas contengan.

El modelo relacional se basa en los principios matemáticos de la teoría de conjuntos y lógica de predicados y apoya la recuperación de datos sencilla.
Una relación:
Es un conjunto de columnas y filas reunidas en una estructura en forma de tabla que representa una entidad única formada por los datos relacionados. 
Cada relación comprende uno o más atributos (columnas).

Una entidad:
Es una persona, lugar, cosa, evento o concepto sobre el cual los datos son recolectados.

Un atributo:
Es un hecho simple que describe o caracteriza una entidad de alguna manera. 

Un dominio:
Define el tipo de datos que son almacenados en un atributo particular.

Un tipo de datos:
Es un tipo específico de restricción (un control usado para hacer cumplir la integridad de los datos) asociados con una columna.
Restringe el formato de los datos, como el permitir únicamente dígitos numéricos.

Una tupla (filas):
Es un conjunto de datos cuyos valores hacen una instancia de cada atributo definido por esa relación. Cada tupla representa registro de datos relacionados.

NORMALIZACIÓN
 
Es un conjunto de normas (formas normales), que proporcionan una directriz de cómo los datos son organizados para evitar inconsistencias y pérdida.
 
Un identificador único o clave principal o llave primaria (PK), es un atributo o conjunto de atributos que identifican cada fila de datos en una relación.
Es habitual seleccionar un identificador único como primer paso en la normalización.

Formas Normales
Primera forma normal:
- Cada atributo de una tupla contiene sólo un valor.
- Cada tupla en una relación contiene el mismo número de atributos
- Cada tupla es diferente, lo que significa que la combinación de los valores de todos los atributos de una tupla dada no puede ser como ninguna otra tupla en la misma relación.

Ejemplo:
Observaciones: 

En la F
igura 1, la tercera tupla y la cuarta tupla violan la primera forma normal.
 

¿Porque?
 

En la tercera tupla, el atributo DOCUMENTO contiene dos valores. 
En la cuarta tupla, el atributo PAIS contiene dos valores también.

Importante:
Se debe vigilar la repetición de valores en forma de repetición de columnas.

Por ejemplo, tener 2 campos como NOMBRE1, NOMBRE2 NO es una solución adecuada porque es muy probable que una persona tenga un tercer nombrey por lo tanto necesite un tercer campo nombre (NOMBRE3), y tal vez otra persona tenga 5 nombres y así sucesivamente. Además, repetir columnas hace que las consultas sean más difíciles, ya que debe recordar buscar en todas las columnas.


Tampoco se deben repetir tuplas con la misma información.

Segunda forma normal :

Para comprender la segunda forma normal primero debemos entender que es Dependencia funcional.

Dependencia funcional
Es una restricción que se aplica a dos o más columnas de una tabla.
X determina Y (simbólicamente: XY) si existe al menos un valor de Y para cada valor de X.

Para que lo entiendas mas fácil... observa la tabla de la figura 2:

 
 
Analicemos la tabla... 
eCODIGO_ESTUDIANTE determina el NOMBRE, por lo tanto tenemos una llave candidata (el atributo CODIGO_ESTUDIANTE).

ahora que tenemos una candidata debemos analizar los siguientes atributos...
el atributo CODIGO_ESTUDIANTE NO determina al atributo NOTA ya que es necesario saber a cual MATERIA le corresponde dicha NOTA... 

por lo tanto, CODIGO_ESTUDIANTE Y MATERIA (unidas) determinan al atributo NOTA ahora contamos con otra llave candidata (observar la figura 3). por lo tanto la tabla de la figura 2 no cumple con la segunda forma normal.

 

Para solucionar esto y cumplir con la segunda forma normal, debemos crear dos tablas.

La primera tabla con el atributo CODIGO_ESTUDIANTE (como única llave candidata, llamada llave primaria y se representa con el signo numeral #) y con el atributo NOMBRE

La segunda tabla con el atributo CODIGO_ESTUDIANTE y el atributo MATERIA (ambas como llaves candidatas, llamada llave primaria compuesta) y el atributo NOTA.

De esta manera hemos cumplido con las reglas de la segunda forma normal (observar la figura 4). 

 

La segunda forma normal expone que una relación debe estar en la primera forma normal y
que todos los atributos en la relación dependen del identificador único (llave primaria) completo.


Tercera Forma Normal:

una tabla esta en tercera forma normal si cumple con la segunda forma normal y cada columna que no forma parte de la llave depende solo de llaves candidatas, no de otras columnas que no forman parte de la llave.

analicemos el siguiente ejemplo:


En la tabla de la figura 5 se encuentran los atributos: CODIGO_ESTUDIANTE, NOMBRE, ID_CIUDAD_NACIMIENTO, CIUDAD; esta tabla debería contar con información básica del estudiante.

la llave candidata sería CODIGO_ESTUDIANTE pero dicha tabla no cumple con la tercera forma normal debido a que el atributo CIUDAD depende funcionalmente del atributo ID_CIUDAD_NACIMIENTO

Para cumplir con la tercera forma normal lo ideal es crear dos tablas:
La primera tabla que cuente con los atributos: CODIGO_ESTUDIANTE, NOMBRE e ID_CIUDAD_NACIMIENTO.

La segunda tabla que cuente con los atributos: ID_CIUDAD y CIUDAD

con esta solución por medio del atributo ID_CIUDAD_NACIMIENTO podemos consultar en la segunda tabla  el nombre de la ciudad (ver figura 6).


Tipos de instrucciones SQL

L
os tipos de instrucciones SQL se separa en tres tipos de instrucciones:



  • DDL (Data Definition Language) - Lenguaje de definición de datos:

Se utiliza para crear, modificar o borrar objetos en una base de datos tales como tablas, vistas, dominios, esquemas, activadores, y para almacenar procedimientos.

Las palabras clave más frecuentemente para ejecutar instrucciones DDL son:

CREATE: Por ejemplo: create table crear una tabla.

ALTER: Por ejemplo: alter table modificar las características de una tabla.

DROP: Por ejemplo: drop table para borrar la definición de la tabla de la base de datos.


  • DCL (Data Control Language) - Lenguaje de control de datos :

Permiten controlar qué o quién tiene acceso a objetos específicos en la base de datos.
Un usuario en una base de datos puede ser una persona o un programa.

  • DML (Data Manipulation Language) - Lenguaje de manipulación de datos 


Se utilizan para recuperar (consultar), agregar, modificar o eliminar datos almacenados en los objetos (tablas) de una base de datos.

Las palabras clave de las instrucciones DML son:

SELECT: para recuperar datos de una tabla.

INSERT: 
para agregar datos a una tabla.

UPDATE: para actualizar datos a una tabla.

DELETE:
para eliminar una tupla (fila) de una tabla.



FUENTES:

Andy Oppel Robert Sheldon. (2009). Fundamentos de SQL Tercera edición. México, D.F.: The McGraw-Hill.

Michael V. Mannino. (2007). Administración de bases de datos tercera edicion. México: The McGraw-Hill.
 

lunes, 8 de marzo de 2010

LINEAS Y GRUPOS DE INVESTIGACION UFPSO

GRUPOS DE INVESTIGACIÓN
-> Grupo de Investigación en Teleinformática y Desarrollo de Software (GITYD)
-> Grupo de Investigación en Agentes Inteligentes (GIAI)
-> Grupo de Investigación en Software Libre GNU/Linux UFPSO (GISLO)
-> Grupo de Investigación para el Desarrollo de Sistemas de Aprendizaje (CID)
-> Grupo OIKOS

OBJETIVOS
-> Procurar los mecanismos adecuados para el desarrollo de la investigación científica, estimulando al personal de la institución.
-> Prestar servicios de asesorías y consultorías en investigaciones y extensión a la comunidad y a las entidades públicas y privadas que lo soliciten.
-> Administrar los fondos asignados para la investigación y asesoría a la organización general del sistema Universitario de investigación y extensión y las normas fiscales.
-> Divulgar y publicar las investigaciones realizadas.
-> Mantener actualizado el inventario de recursos humanos y físicos para la investigación y extensión.
-> Fomentar y participar en la enseñanza de la metodología de la investigación y extensión.
-> Prestar servicios asistenciales a la comunidad relacionados con las diferentes áreas del laboratorio.
-> Implementar un sistema de información y seguimiento de la investigación y extensión realizada por la UFPSO.
-> Apoyar la consecución de fuentes de financiación para la investigación.


POLÍTICAS Y LÍNEAS DE INVESTIGACIÓN

La estructura para la investigación como proceso para la generación de nuevos conocimientos, de adecuación, innovación y transferencia tecnológica propone (Resolución N° 027 de febrero 25 de 2003 Consejo Académico):

-> Crear un clima universitario que favorezca el estudio personal, la innovación, la observación, el conocimiento y manejo de los métodos de trabajo científico.
-> Estimular la participación de docentes y estudiantes en acciones de investigación.
-> Crear formulas organizativas que faciliten la orientación y asesoría de los procesos investigativos en la institución.
-> Reconocer el esfuerzo individual y colectivo por hacer investigación como fundamento de la carga académica integral del docente.
-> Fomentar la creación de grupos de investigación y apoyar acciones conducentes a incrementar el presupuesto para la investigación, haciendo coherente con la política investigativa universitaria.
-> Fortalecer una gestión estratégica y prospectiva de la función reinvestigación que permita que ésta se articule de manera más integral con los proceso de formación académica y de extensión.
-> Otorgar un estatus académico a la función de investigación que, a partir de resultados, visibilice su importancia en la construcción de conocimiento.
-> Consolidar una comunidad académica crítica y con capacidad para responder con rigor científico y académico a los problemas regionales y del país.

Proyectos en desarrollo.
-> Universidad virtual UFPSO.
-> Desarrollo de material multimedia para su implementación en la educación virtual y a distancia.
-> Desarrollo de material audiovisual para televisión.
-> Diseño de patrones para la construcción de agentes inteligentes.
-> Seguridad en redes a través de agentes móviles.
-> Desarrollo de una plataforma de comunicación para la provincia de Ocaña.
-> Migración de bases de datos SIA, SIF, SIB a una base de datos libre.

SEMILLEROS DE INVESTIGACIÓN
"Los Semilleros de Investigación son comunidades de aprendizaje nacidas en las universidades colombianas hace siete años. Se han caracterizado por su origen espontáneo, naturaleza autónoma y diversidad dinámica. Sus principios básicos comunes están enfocados a promover una formación académica más investigativa e integral, contribuyendo a proyectar una educación participativa donde se elogie la pregunta, se aprenda, se aprenda a aprender y se fortalezca la capacidad de trabajar en grupo, fomentando una cultura interdisciplinaria donde se mantengan despiertas la capacidad de asombro y la curiosidad frente a la complejidad de la vida.

Los semilleros están integrados por todas aquellas personas que se inician en investigación, sean estudiantes de pregrado o estudiantes de posgrado; sin embargo, la labor investigativa no se reduce sólo a la educación superior, por el contrario, desde la secundaria, y aún la primaria, se deben crear procesos de sensibilización y formación en el quehacer investigativo.

Los semilleros de investigación son una respuesta a la falta de integración de las diferentes disciplinas. Están conformados por estudiantes, profesores(as) e investigadores(as) que desean hacer de la investigación su estilo de vida, motivados, luchadores y sensibles por los problemas de Colombia, e interesados en buscar y participar de las soluciones, con el fin de aportar al mejoramiento de la calidad de vida".
(copiado y modificado http://www.ufpso.edu.co/secciones.php?seccion=die&die=ofic)

domingo, 28 de febrero de 2010

DFD - DIAGRAMAS DE FLUJO

DFD(DIAGRAMA DE FLUJO DE DATOS)

Es una representación gráfica del "flujo" de datos a través de un sistema de información. Un diagrama de flujo de datos también se puede utilizar para la visualización de procesamiento de datos (diseño estructurado). Es una práctica común para un diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción entre el sistema y las entidades externas.

ALGORITMO:

La notación "algoritmo" es fundamentalmente en la programación de los computadores, por tal motivo vale la pena dar una definición precisa. La entrada en un diccionario es: "cualquier procedimiento mecánico o computacional", la cual no nos satisface completamente debido a que estos términos no son lo suficientemente atómicos (simples e indivisibles)

Definición

Un algoritmo es una secuencia ordenada y finita de instrucciones lógicas bien definidas que de seguirse permite la realización de una tarea en particular.

Todo Algoritmo Debe Cumplir Las Siguientes Condiciones:

1.ENTRADAS: cero o más cantidades que se proporcionan externamente
2.SALIDAS: por lo menos una cantidad se produce.
3.DEFINITUD: cada instrucción debe ser clara e inequívoca.
4.FINITUD: si recorremos las instrucciones de un algoritmo, para todos los casos el algoritmo terminara después de un número finito de pasos.
5.EFECTIVIDAD: cada instrucción debe ser lo suficientemente básica que en principio pueda realizarse por una persona usando solo papel y lápiz.
6.EXCTITUD: siempre que el algoritmo se corra con las mismas entradas deberá producir la misma salida.

LENGUAJE ALGORÍTMICO Y LENGUAJE INFORMÁTICO

El lenguaje algorítmico es aquel promedió del cual al realizar un análisis de una problema por resolver y una vez encontrado un posible método que permite resolverlo, permite representar la solución encontrada. El conjunto de todas las operaciones a realizar, y el orden en que se deben efectuar, se denominan algoritmo.

El lenguaje informático es aquel por medio del cual un algoritmo se codifica en un sistema comprensible por el computador..
Se denomina lenguaje de alto nivel aquel que es mas cercano a la comprensión humana y lenguaje de bajo nivel a aquellos que son comprensibles por la maquina.

OBJETOS EXPRESIONES Y ACCIONES ELEMENTALES

1. ENTORNO. Objetos Básicos

Las características de un objeto del entorno son 3: Nombre, Tipo y Valor.

NOMBRE: Es el identificador que se le da al objeto Ej.: EDAD

TIPO: El tipo nos da una idea del contenido de ese objeto, es decir, la información que va poder contener Ej.: 16

VALOR: Es el contenido en si del objeto, el dato que va a contener. Ej.: 8

VARIABLES: Son objetos en los que pueden modificarse el valor a algo de la ejecución del programa
(Algoritmo). Antes de ejecutarlo hay que definir el nombre y el tipo de las variables a emplear

CONSTANTE: Su valor no varía durante la ejecución del algoritmo. Por ejemplo el número PI: 3.14159 que es el tipo real.

2. TIPOS SIMPLES DE DATOS


-Numérico Entero
Real

-Carácter Letra
Digito

-Lógico O Booleano Verdadero o Falso

2. OPERACIONES Y EXPRECIONES
Una expresión es una serie de operándoos (datos objetos) y operadores (operaciones)
Combinados según unas reglas. Tipos de expresiones que dependen del tipo de operándoos y el resultado:
-expresiones aritméticas
-expresiones lógicas
-expresiones de caracteres.

*Expresiones Aritméticas:
Los operándoos y el resultado son números

Suma +
Resta -
Cambio de signo -
Multiplicación *
División real /
División entera Div
Resto de la división entera MOD

*Expresiones Lógicas
El resultado es de tipo lógico (verdadero o falso). Nos ayudan a saber si se cumplen ciertas condiciones. Existen dos clases de operadores:

-Operadores Racionales
-Operadores Booleanos.

-Los Operadores Racionales Son:

= Igual
<> Diferente
< Menor que
> Mayor que
<= Menor o igual
>= Mayor o igual

-Los operadores booleanos son de tipo lógico; y son: NOT, AND, OR, XOR.

NOT. Cambia el valor del operando al que se le aplique, es decir, si el operando es verdadero y le aplicamos este operador, se convierte en Falso.

AND. Este operando necesita de dos operadores y devuelve verdadero si ambos operadores son varadero o falso en cualquier otro caso

OR. Este operando también necesita de dos operadores, y devuelve falso si ambos operadores son falsos y verdadero en caso contrario, es decir, si uno de los operadores son verdadero, OR aplicado sobre esos dos operadores devolverá a verdadero.

XOR. También es aplicado sobre dos operadores, y devuelve falso si ambos operadores son iguales, y verdadero en caso contrario

OPERADORES ARITMETICOS:
Variables: A(6), B(2), C(3)

A*B div C = 4
A div B*C = 9
A7*B mod C = 0
A+B mod C = 8
A div B div C = 1

OPERADORES BOOLEANOS Y RACIONALES:

Variables: M(5), N(9), A(False), B(True)

M > = N
NOT A = B
M * N < N * N
(A or B) <>B
(M < N) <> (A or B)
(M < 12) or ((A = FALSE) <> B)

TECNICAS PARA LA REPRESENTACION DE ALGORITMOS

Existen varia técnicas para la representación de algoritmos, entre las más utilizadas se encuentran los diagramas de flujo, el seudocódigo y los diagramas estructurados (nassi-schneiderman).

Un DIAGRAMA DE FLUJO es una manera en la cual se utiliza una notación semigráfica, en donde cada paso del proceso se pone en una “caja” y se usan flechas para indicar el siguiente paso, existen cajas de formas diferentes que simbolizan diferentes tipos de operación.

El SEUDOCODIGO, es un lenguaje artificial e informa que ayuda a los programadores en el desarrollo de los algoritmos. Los algoritmos en el seudocodigo no son ejecutados en el computador solo ayudan al programador a “pesar” y a plasmar su solución a la tarea requerida antes de que esta sea escrita en un lenguaje de programación

Un Algoritmo cuidadosamente preparado en el seudocodigo, puede ser convertido con facilidad en un programa (siguiendo adecuadamente la sintaxis del lenguaje a ser utilizado).

El seudocodigo incluye solo enunciados de acción los que serán ejecutados por la maquina una vez el seudocodigo se ha convertido a un lenguaje de programación y desde este ultimo se transforma a un lenguaje comprensible por la maquina.

Los Diagramas Estructurados, son una técnica que permite formular algoritmos mediante una representación geométrica y de asignación de espacios de un bloque específico.

Lo que depende todo algoritmo es sintetizar de alguna forma una tarea, calculo o mecanismo antes de ser trascrito al computador. La creación de todo algoritmo se puede realizar mediante estas etapas:

1. REQUERIMIENTOS: asegúrese de tener la información que nos dan (entradas) y los resultados que debemos producir (salidas), intente extractar una descripción rigurosa de las entradas y salidas las cuales contemplen todos los posibles casos.

2. DISEÑO: usted puede tener varios objetos de datos (como una serie de números, un polinomio, o analista de nombres). Para cada objeto habrá algunas operaciones básicas a realizar (como por ejemplo una impresión de los números, sumas dos polinomios, o encontrar un nombre en una lista, etc.) asuma que estas operaciones ya existen en forma de funciones y escriba un algoritmos que resuelva el problema según los requisitos. Utilice una notación natural de acuerdo con la forma como desea describir el orden de procesamientos.

3. ANÁLISIS: si puede pensar otro algoritmo, entonces anótelo. Luego intente comprobar los 2 algoritmos que tiene, ya que puede ser posible decir si uno es mejor que el otro. Si usted no puede distinguir entre los 2, escoja uno y trabaje con el.

4. REFINAMIENTO Y CODIFICACION: ahora debe escoger representaciones para sus datos (un laberinto como un arreglo bidimensional, un polígono como una serie de coeficientes de grado y coeficientes, una lista de nombres posibles como un arreglo) escriba algoritmos para cada uno de los funcionamientos en estos objetos.

5. VERIFICACIÓN: la comprobación de tres aspectos: el algoritmo demostrando, pruebas y la puesta a punto.

Cada una de estas 5 etapas en si mismo es un arte. Antes de codificar su algoritmo debe probarlo con datos que demuestren que es correcto. Probar es el arte de crear datos se prueba que permitan comprobar la validez de funcionamiento. Si el algoritmo no corre adecuadamente entonces en la puesta a punto se necesita determinar lo que salio mal y como corregirlo.

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO

La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente.:

*TERMINAL(representa el inicio y el fin de un programa, puede representar también una parada o interrupción programada que sea necesario realizar en un programa).


*ENTRADA/SALIDA (cualquier tipo de introducción de datos).


*PROCESO(cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria, operaciones aritmeticas).


*DECISIÓN (indica operaciones lógicas o de comparación entre datos –normalmente dos- y en función de resultado de la misma determina cual de los distintos cambios alternativos del programa se deben seguir).


*DECISIÓN MÚLTIPLE (en función del resultado de la comparación se seguirá uno de los diferentes cambios de acuerdo con dicho resultado).


*CONECTOR (sirve para enlazar dos partes cualquiera de un organigrama a través de un conector en la salida y otro conector en la salida).


*INDICADOR DE DIRECCIÓN O LÍNEA DE FLUJO (indica el sentido de ejecución de las operaciones)


*LÍNEA CONECTORA (sirve de unión entre dos símbolos).


*CONECTOR (conexión entre dos puntos del organigrama situado en páginas diferentes).


*llamada a SUBRUTINA o a un proceso predeterminado (una subrutina es un modulo independiente del programa).


*PANTALLA (se utiliza en ocasiones en lugar del símbolo de E/S).


*IMPRESORA (se utiliza en ocasiones en lugar del símbolo E/S).


*TECLADO (se utiliza en ocasiones en lugar del símbolo E/S).


------------------------------------------------------------------------------

EJEMPLO DE UN DIAGRAMA DE FLUJO QUE DETERMINA SI UN NUMERO ES PAR: