El blog de los Ingenieros en TI

Código Fuente, links, tareas, proyectos, exámenes....qué mas le vas a pedir a la vida?

Acerca de:

El espacio para compartir material que necesitas en la carrera de Ingeniería de Sistemas y en tu vida profesional.

El objetivo del blog es ayudarte como estudiante a prepararte mejor para los exámenes, proyectos y demás situaciones que enfrentes durante la carrera. Asi mismo es una herramienta de consulta para los profesionales en TI.

Material y sugerencias: ingenierosTI@gmail.com


El pasado viernes 25 de julio se llevó a cabo el primer destello de lo mejorcito de la Uam en cuanto a "fútbol" se refiere. El equipo soñado de la U conformado por grandes estrellas del fútbol moderno logró demostrar que no solo de programación vive el hombre.... Algoritmos de pared, procedimientos almacenados en las fuertes piernas de estos astros se dieron gusto haciendo triggers con el esférico esa noche inolvidable.


El resultado: un marcador compartido a 18 goles entre el cuadro de chalecos rojos y los azules, blanco, naranja, rosado, es un resultado que da mucho que esperar para eventuales encuentros pues la lucha esta pareja en el ranking de Leo Meléndez donde nadie quiere dejar ir el liderato.

Agradecimientos especiales a "Migue" que amablemente nos recibió una vez finalizada la jornada y donde departimos un ligero digestivo para terminar la velada futbolística.

Alineación estelar
1. Daniel "Racsito" Cordero (Figo)
2. Fer (Riquelme)
3. Charlie Fallas (Cristiano Ronaldo)
4. Edwin "Abubu" Landero (Eto´o)
5. Johnatan Escobar (Villa)
--vrs--
6. Alex Fonseca (Thierry Henry)
7. Allan Monge (Ballack)
8. Mau Araya (Messi)
9. Carlos (Ronaldinho)
10. Jason Ramírez (Deco)

11. Larry Mayorga (Visor FIFA)


Este video trata sobre la historia de los sistemas Unix y su viabilidad en la computadora de escritorio. Es del año 1985 de un programa titulado "Cronicas de la computación. Interesante notar los términos que se utilizan como futurología que hoy son realidad. Recomendado.

Nudos Temáticos ^

1. Linea ascendente de una investigación cientifica

Para darnos una idea de que es y que no es una investigación cientifica, se debera de hacer clara la diferencia entre diferentes trabajos, entre los que estan son:

* Informe: es un resumen, es un reporte de lectura, no tiene una estructura de investigación cientifica, es un trabajo informal y no tiene sustento teorico.

* Ensayo: es un trabajo que no necesita sustento teorico (argumento propio), no tiene una fuente especializada, no posee estructura, es semi-informal, argumentación personal, se formula una pregunta/problema de estudio.
Ver todo el resumen >>>
* Monografía: mono de a uno grafia grafos escrito, es un escrito de a uno para un curso determinado, tiene una estructura, hojas preliminares (portada, agradecimiento, tabla de contenidos, resumen ejecutivo), capitulos: marco teorico, metologico, los capitulos tienen un sustento teorico de una fuente, conclusión, reconocimiento, bibliografía.

* Tesina: es una monografía, con mayor profundidad, mayor extensión, se realiza para un logro academico: grado bachillerato.

* Tesis: es una tesina/monografía, pero con mucha mayor profundidad, mayor extensión que las anteriores, requiere de una evaluacion mas especializada, para grados de licenciatura o post grados, utiliza un metodo cientifico.

Nota: met/odo: met: lo que quiero alcanzar, odos: pasos para alcanzarlo
Cient/ifico: ciente: sciens: persona q sabe, esciente: persona que quiere saber.

2. Como surge una investigación cientifica.

Toda investigación cientifica surge de una idea, de algo que se nos viene a la mente, la idea es algo informal, sin sentido, sin estructura, pero se debe de realizar de un “ver” cientifico, estas ideas surgen, nacen de nuestro entorno, en nuestro trabajo, casa, universidad, lecturas, en todo aquel lugar donde nos pueda nacer esa idea.

3. Como se estructura una idea para que se convierta en objeto de estudio

Para hablar de una estructura de esta idea que tenemos, deberiamos de:
* Primero conocer los antecedentes = estado de la cuestion, que llamaremos asi a un acercamiento de la producción literaria de otros, osea fuentes primarias lo mas relevantes no asuntos secundarios.
* Pensar/ Reflexionar y asi ubicar esta idea en nuestra carrera.
* Ordenar o crear un esqueleto tematico tentativo muy general, indice tematico.
* Ubicarlo en nuetra norma UAM para hacerlo definitivo.

4. Caracteristicas de una investigación cientifica

En nuestro trabajo de investigación debemos conocer que caracteristicas debera de tener, por lo que anotaremos que:
* Escrito ordenado, poner ese escrito de un orden correcto, respetando signos de puntuación, ortografia, gramatica, morfologica y usando la sintaxis.
Nota: morfo= forma logia= palabra, osea una formación de palabras
Sintaxis= coordinación de palabras

* Metodo con claridad
* Estructura a manera de arquitectura
* Critica: planteo personal, ya que debera de ser sustentado, analizado, reflexionado para asi procesar esa información.

* Sentido literario: tiene una trilogía conceptual, esto quiere decir que debera de estar en funcion de parrafos: introductoria, de contenido y transición.
1. Introductoria: desarrolla o señala una generalidad, lo que se va a tratar en esta gran seccion.
2. Contenido: es el desarrollo de lo que se esta señalando o enunciando en el parrafo introductoria
3. Transición: es lo que va tejiendo, hilando las grandes secciones.

* Norma UAM: son aspectos que dicta la universidad y deben de ser acatados.
* Asuntos esteticos: referencia proporcion de espacios, margenes, espacios adicionales, tipografia (tipo de letra) numeración de paginas.
* Especificidad: desarrollar un trabajo claro, debe de ser demarcado, delimitar, no usar NUNCA generalidades.

5. Estilos de citar y metodos de citar un a fuente

Dentro de la invetigacion cientifica, se debera de inluir formas de citar:
La citación textual y no textual.
* Cita corta: hasta 3 lineas, va en el mismo parrafo que ibamos desarrollando, va entre comillas, no tiene que destacar con negrita ni subrayado.
* Cita larga: es de mas de 3 lineas, va separado del parrafo que se viene desarrollando, se debe escribir en un espacio adicional a espacio y medio, todo san grado y justificado.
Nota: ambas citas deben de ir antecedas por dos puntos, ademas que en una investigación NUNCA debe de existir 2 citas textuales continuas, sin que medie la opinión de quien ejecuta la investigación.

* Parafraseo: es cuando se coloca al lado de un frase u opinión, mi opinión propia con mis palabras, pero siempre se debe de indicar que se va a parafrasear algo.

Metodos para citar una fuente

* Parentetico: es un nombre que proviene de la palabra paréntesis, es decir se denomina parentetico es porque para citar una fuente hace uno del paréntesis.
Ej. (Allende, 2002, p. 33) pagina… (Allende, 2002, pp.33-34) paginas…

* Tradicional: hace uso al pie de pagina y primera vez que se cita una fuente debe de venir todos los datos de la bibligrafia al final mas el numero de pagina donde se tomo la cita, si se repite una cita textual inmediatamente sin que se interponga otra fuente se usa Ibid * y si se vuelve a tomar una cita de una fuente ya citada pero que no es inmediatamente y se interponen otras fuentes se usa Op., Cit.,
Ej. Isabel Allende (2002). El portal del amor
Santiago, Paisdos, p. 33

Nota: Ibid: ibidem= en el mismo lugar anterior
Op., Cit., = opus citatus obra citada.

6. Titulados mayores, subtitulados mayores y menores, escalera del indice.

* Titulados mayores: centrado, 14, negrita, inicio de pagina siempre y mayuscula, va a ser
utilizado en la introducción, capitulos I, II, III, conclusión, recomendación, bibliografía y anexos.
Nota: Capitulo I: marco teorico, II: metologico, III analisis o aportes.

* Subtitulados mayores: son aquellos a los que se le asigna la escalera del indice, van al margen, no. 14, negrita y solo la 1era en mayuscula.
1. Xxxx
2. Xxxx
3. Xxxx

* Subtitulados menores: van al margen, negrita, 12 y solo la 1era en mayuscula
Nota: si existe la division hacia abajo debera tener el # o letra que le sigue (1,2,3… ; 1.1, 1.2, 1.3….; a,b,c….) Las letras apareceran hasta la 4ta escalera.

* Sangrar: va a cada inicio de un parrafo, luego de un punto aparte de los titulados mayores, subtitulados, notas al pie la 1era letra. En la bibliografía si solo hay linea se sangra la 1era letra, pero si hay 2 lineas la 1era linea no se sangra pero la 2da linea si.

7. Fuentes de información.

Toda investigación cientifica tiene fuentes de informacion que son:

* Tipos: primaria, secundaria y terciaria estas iran en funcion x el objeto de la investigación
* Clasificacion: Bibliografica libros, revistas, periodico, Internet, enciclopedia, Iconografica proyectable, video, película, power point, No proyectable fotos planos mapas.
* Fonografica: todo lo que se registra para ser escuchado.

^Resumen cortesía de Poncho

Ejemplo de redacción de Hallazgos:

Título: Equipo inadecuado para hacer partes
Descripción: La máquina (handheld) no permite leer código de barras ni banda magnética, tampoco imprime el comprobante en el tiempo adecuado además de que se descarga rápidamente.
Riesgo: Que sistemas futuros sean igual de ineficientes.
Recomendación: Realizar todo el ciclo de vida del software para futuros sistemas.

Ver todo el resumen >>>

Etapas de la Auditoría de Sistemas
1- Planeación
2- Ejecución
3- Informe final

1- Planeación
P1. Origen. (Interno, externo, programa integral de auditoría)
P2. Visita preliminar.
P3. Objetivos.(Los define el auditor general)
P4. Puntos a evaluar.
P5. Planes, programas y presupuestos.
P6. Métodos, procedimientos, instrumentos y herramientas.
P7. Asignar recursos y sistemas computacionales.

2- Ejecución.
E1. Realizar las acciones programadas.
E2. Aplicar los instrumentos y herramientas.
E3. Identificar y elaborar los documentos de hallazgos.
E4. Elaborar el dictamen preliminar y presentarlo a discusión.

3- Informe final
D1. Analizar la información y elaborar un informe de situaciones detectadas.
D2. Analizar los papeles de trabajo.
D3. Señalar las situaciones encontradas.
D4. Comentar las situaciones encontradas con el personal de cada área.
D5. Realizar las modificaciones necesarias.
D6. Elaborar un documento de situaciones relevantes.
D7. Elaborar el dictamen final.

Tipos de Control: Detectivo- Correctivo- Preventivo- Persuasivo.

Riesgo: Mitigarlo- Afrontarlo- Trasladarlo.

Compilación: Proceso de traducir un programa en un lenguaje de alto nivel a otro de bajo nivel.

Fases del Compilador

Análisis Sintático: Scanning Parsing AST

Análisis Contextual: Identificación Verificación de tipos Generación del DAST

Identificación Es la primera tarea del contextual analyzer.
* Asocia applied ocurrence con la declaración correspondiente.

println (c);
a= a + 3

* Debe verificar en que parte del programa se puede utilizar una variable de acuerdo a las reglas de alcance o reglas de tipo.

Ver todo el resumen >>>
Reglas de alcance

* Cada declaración tiene un alcance que indica el área donde un identificador puede ser usado.
* Un bloque es cualquier área de un programa que delimita el alcance de una declaración. (llaves, paréntesis, corchetes, etc.).

Estructura de bloques
Indican si los bloques pueden ser:

* Monolíticos todas las declaraciones son globales.
* Plano no pueden haber bloques dentro de otros.
* Anidados pueden haber bloques dentro de otros.
* Ningún identificador puede ser declarado más de una vez en el mismo bloque. Puede ser declarado en diferentes bloques.
* Se utiliza el scope o el nivel de mayor.
* Nivel 0, Nivel 1 y Nivel 2

Tabla de identificación:
Estructura de datos (en memoria) que contiene los identificadores del programa con su respectivo número de alcance.

* Operaciones básicas:
* Crea tabla vacía
* Agrega un identificador nuevo
* Asocia cada identificador con el número de alcance.
* Es parte del AST decorado.
* Método enter agrega nuevo identificador
* Método retrieve la declaración de un identificar.
* Método openScope inicializa el bloque.
* Método closeScope finaliza un bloque

Implementación

Key = índice >Tiene un índice
Value = valor >Comienza en el nivel 0
La llave es el nombre del identificador

Verificación de tipos (Hash – vector)

o Type checking: verifica que no hayan errores de tipo.
o Statically typed: propiedad básica de un lenguaje, detecta errores de tipo sin ejecutar el programa (estática).
o Sólo aplica a expresiones y operaciones que involucran expresiones.

Clase type
o Se utiliza para representar los tipos de una expresión.
o Implementa el método para determinar si dos instancias son equivalentes (boolean o int).

Algoritmo

o Id entifica mediante una liga o puntero en cada applied ocurrence y hace la declaración de las variables.
o Verifica el tipo que representa un objeto de la clase type.
o Modifica el AST Decorado.

Generación del AST Decorado

o Genera la tabla de identificadores.
o Verifica los tipos de expresiones.
o Valida las expresiones y subexpresiones

Análisis Contextual

Implementación
* La clase Checker será el encargada de realizar el análisis contextual
* Debe recibir el árbol AST generado por el parser.
* El árbol debe ser recorrido para validar identificadores.
* Interactúan el scanner y parser.

Cambios requeridos en los nodos del árbol
* Los nodos representan expresiones.
* El nodo VNames contiene el tipo de la variable y indicador para saber si es variable o constante.
* El nodo del AST que representa identificadores (puntero).

Recorrido del árbol para decorarlo
1. El checker (visitante) pasa primero por el nodo Program.
2. El nodo Program llama un método y se pasa a si mismo como parámetro.
3. Dentro el método visitProgram, el visitante puede realizar operaciones.
4. La Operación que realiza el método visitProgram es pasar el visitante a sus nodos hijos.
5. LetCommand llama el método y se pasa a si mismo como parámetro.
6. Dentro el método VisitLetCommand, el visitante puede realizar operaciones.
7. La Operación que realiza el método VisitLetCommand, es pasar el visitante a sus nodos hijos.

Patrón es un diseño utilizado para separar los algoritmos de la estructura que se utiliza.

Lenguaje de programación
Notación formal para expresar algoritmos.

Compilador
Herramienta que permite construir programas.
Facilidades:
Edit (digitar programas)
Compile (traducir)
Interprete
Debuging (depurar)

Código máquina
Instrucciones en formato de 1 y 0.

Lenguaje ensamblador
Notación para representar programas en lenguaje máquina.

Lenguaje de bajo nivel
Instrucciones en lenguaje máquina (1/ 0)

Lenguaje de alto nivel
Instrucciones similares para expresar algoritmos.
Soporta expresiones, tipos de datos, declaraciones, abstracciones, etc.

Ver todo el resumen >>>

Syntax
Reglas para construir programas, define los símbolos.
Contextual constraints: Lo que se puede o no hacer.
: Reglas que indican si las frases están bien construidas.
Scope rules: Si la variable puede ser usada en un lugar determinado.
Binding ocurrence: momento en que se declara una variable.
Static binding: tipo debe ser declarado antes de usarse.
Dynamic binding: usa la variable en cualquier momento.
Aplied ocurrence: momento en que se utiliza una variable.
Typed rules: Si una expresión esta utilizando los tipos correctos.
Static typed: variable puede definirse sin ejecutar el programa.
Dynamic typed: variable se define al ejecutar el programa.

Semantics
Significado de las instrucciones, programas.

Context- free grammar
Especifica formalmente la sintaxis de un programa
Terminal symbols (reservados)
Símbolos usados para construir el programa (“<”, “while”, “(”, “void”) Non terminal symbols Clase particular de frases en un lenguaje Programa, comandos, expresiones, declaraciones. Start symbol Non terminal symbol que representa la clase principal en un lenguaje. Production rules Define cómo las frases se componen utilizando terminal symbols y subfrases.

Notación BNF (Backus- Naur Form)

Se utiliza para expresar production rules (N:=a)

Syntax trees
Muestran cómo se construyen las frases en un lenguaje.
Concrete Syntax tree
Especifica la sintaxis de una frase sin preocuparse por la semántica.
Termina en: 1- Terminal nodes, 2- Identificador, 3- Integer literal.
Abstract Syntax tree
Para entender más fácilmente la semántica, simplifica el árbol.

Compilación
Proceso de traducir un lenguaje de alto nivel a uno de bajo nivel.
1- Análisis sintáctico
Código fuente se analiza para determinar si se ajusta a la sintaxis del lenguaje.
Resultado= AST.
Scanning: El programa se transforma en tokens.
Parsing: El programa se analiza para determinar la estructura de las frases.
Representación: Montaje del árbol.
2- Análisis contextual
Revisa las restricciones de contexto.
Resultado= Decorated AST.
3- Generación de código
La parte más complicada es la declaración y uso de los identificadores

Compilador de 1 fase
Las tres fases anteriores se realizan al mismo tiempo.
Son rápidos pero más complejos.

Compilador multifase
Las tres fases anteriores se realizan por aparte.
Son más lentos pero de fácil mantenimiento.


Mini triángulo
Clase Compilador
Lleva a cabo todo el proceso, internamente usa una clase diferente para cada fase.

Clase Program
Representa el AST del programa, el resultado de cada fase se almacena en este objeto.

Clase Parser
Realiza el análisis sintáctico, internamente produce el AST.

Clase Checker
Toma el AST y revisa los contextual constraints.
Modifica el AST para agregar datos adicionales.
Produce el Decorated AST.

Clase Encoder
Genera el código una vez que ha sido verificado.

Tokens
Cada uno de los símbolos del código fuente.
Kind: Tipo (int type, left paren, op-less than, etc)
Spelling: “<”, “(”. Expresiones regulares
Reglas de cómo generar ciertas reglas de caracteres.
Se usa para simplificar la gramática de un lenguaje.

Estas son algunas subconsultas que te pueden servir en bases 1 y 2 para orientarte en la materia.

Todos los productos cuyo precio unitario es mayor que el de cualquier
producto vendido con un descuento igual o mayor al 25 por ciento:
SELECT * FROM Productos WHERE PrecioUnidad > ANY
(SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 0 .25)

Ver Más subconsultas
Todos los productos vendidos con un descuento igual o mayor al 25 por ciento:
SELECT * FROM Productos WHERE IDProducto IN
(SELECT IDProducto FROM DetallePedido WHERE Descuento >= 0.25)

Todos los clientes que hayan realizado al menos un pedido:
SELECT Clientes.Compañía, Clientes.Teléfono FROM Clientes WHERE EXISTS
(SELECT FROM Pedidos WHERE Pedidos.IdPedido = Clientes.IdCliente)

Nombres de los empleados cuyo salario es igual o mayor que el salario medio de
todos los empleados con el mismo título. A la tabla Empleados se le ha dado el
alias T1:
SELECT Apellido, Nombre, Titulo, Salario FROM Empleados AS T1
WHERE Salario >= (SELECT Avg(Salario) FROM Empleados
WHERE T1.Titulo = Empleados.Titulo) ORDER BY Titulo

Lista con el nombre, cargo y salario de todos los agentes de ventas cuyo
salario es mayor que el de todos los jefes y directores.
SELECT Apellidos, Nombre, Cargo, Salario FROM Empleados
WHERE Cargo LIKE "Agente Ven*" AND Salario > ALL (SELECT Salario FROM
Empleados WHERE (Cargo LIKE "*Jefe*") OR (Cargo LIKE "*Director*"))

Lista de las compañías y los contactos de todos los clientes que han
realizado un pedido en el segundo trimestre de 1993.
SELECT DISTINCTROW Nombre_Contacto, Nombre_Compañia, Cargo_Contacto,
Telefono FROM Clientes WHERE (ID_Cliente IN (SELECT DISTINCTROW
ID_Cliente FROM Pedidos WHERE Fecha_Pedido >= #04/1/93# <#07/1/93#)

Selecciona el nombre de todos los empleados que han reservado al menos un pedido. SELECT Nombre, Apellidos FROM Empleados AS E WHERE EXISTS (SELECT * FROM Pedidos AS O WHERE O.ID_Empleado = E.ID_Empleado)

Todas las mujeres cuya edad sea mayor a la de cualquier hombre: SELECT Empleados.Nombre FROM Empleados WHERE Sexo = 'M' AND Edad > ANY
(SELECT Empleados.Edad FROM Empleados WHERE Sexo ='H')

Para utilizar los messagebox es neceasario descargar un DLL. Este es un javascript que permite crear un msgbox con un botón de aceptar o un msgbox de aceptar o cancelar.

Para usar la DLL hay que agregarla en las referencias de la solución y agregar el control en la barra de controles web, y arrastrarlo hasta la página que lo queras usar. Por ejemplo:

MsgBox.ShowMessage("Hola Manguinho")

msgbox.ShowConfirmation("..")

Álgebra relacional

El álgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo Procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.
Sigue leyendo...

Conceptos Básicos
Tuplas
Una relación es un tipo especial de conjunto. Las tuplas de una relación ("filas de una tabla" en el lenguaje usual de bases de datos).
Unión compatible
Una unión es compatible entre dos relaciones, si ellas poseen la misma aridad y el dominio de ellas son los mismos de izquierda a derecha.
Aridad
Número de atributos.

Las operaciones Básicas
Cada operador del algebra acepta una o dos relaciones y retorna una relación como resultado. σ y Π son operadores unarios, el resto de los operadores son binarios. Las operaciones básicas del álgebra relacional son:
Selección (σ)
Permite seleccionar un subconjunto de tuplas de una relación (R), todas aquellas que cumplan la(s) condición(es) P, esto es:
Ejemplo:
Selecciona todas tuplas que contengan Gómez como apellido en la relación Alumnos

Una condición puede ser una combinación booleana, donde se pueden usar operadores como: combinándolos con operadores .
Proyección (Π)
Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación, esto es:
Donde son atributos de la relación R .
Producto cartesiano (x)
El producto cartesiano de dos relaciones se escribe como: R X S y entrega una relación, cuyo esquema corresponde a una combinación de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S.
Unión (∪)
La operación R U S retorna el conjunto de tuplas que están en R, o en S, o en ambas. R y S deben ser uniones compatibles.
Diferencia (-)
La diferencia de dos relaciones, R y S denotada por: R – S entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser uniones compatibles.

Estas operaciones son fundamentales en el sentido en que (1) todas las demás operaciones pueden ser expresadas como una combinación de éstas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda información.

Operaciones no básicas
Entre los operadores no básicos tenemos:
Intersección (∩)
La intersección de dos relaciones se puede especificar en función de otros operadores básicos:
R S = R − (R − S)
La intersección, como en Teoría de conjuntos, corresponde al conjunto de todas las tuplas que están en R y en S, siendo R y S uniones compatibles.
Combinación (⊲⊳) (Join)
Una combinación de dos relaciones es equivalente a:
R ⊲⊳F S = σF (R × S)
Esto es mucho más útil que el uso del operador básico producto cartesiano, pues especifica una regla para la combinación de los atributos.
División (/)
Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo.
El operador división A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla en A.

El modelo relacional
El modelo relacional para la gestión de una base de datos es un modelo de datos basado en la lógica de predicado y en la teoría de conjuntos.
Éste es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos.
Su idea fundamental es el uso de «relaciones». Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados «tuplas». Pese a que esta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es, pensando en cada relación como si fuese una tabla que están compuestas por registros (las filas de una tabla), que representarían las tuplas, y los campos (las columnas de una tabla).
En este modelo, todos los datos son almacenados en relaciones, y debido a que cada relación es un conjunto el orden en que se almacenan los datos no tiene mayor relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario casual de la base de datos. La información puede ser recuperada o almacenada por medio de «consultas» que ofrecen una amplia flexibilidad y poder para administrar la información.
Este modelo considera la base de datos como una colección de relaciones. De manera simple, una relación representa una tabla no es mas que un conjunto de filas, cada fila es un conjunto de campos, y cada campo representa un valor que describe el mundo real. Cada fila también se puede denominar tupla o registro y cada columna campo o atributo.
Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional me permite describir la forma de realizar una consulta en cambio el Cálculo relacional solo me indica lo que deseo devolver.
El lenguaje más común para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.

Una relación consiste en esquemas, que son la definición de una estructura (generalmente relaciones o tablas de una base de datos). Por lo que todo esquema consta de:
Nombre de la relación
Nombre de los atributos y sus dominios
El dominio de un atributo o campo define los valores permitidos para el mismo, es equivalente al tipo de dato por ejemplo character, integer, date, etc.
Instancias
Una instancia de manera formal es la aplicación de un esquema a un conjunto finito de datos. En palabras no tan técnicas, se puede definir como el contenido de una tabla en un momento dado, pero también es valido referirnos a una instancia cuando trabajamos o mostramos únicamente ciertos caracteres y números (una sola columna de una sola fila)
Algunas o todas las filas con todas o algunas columnas
Cada fila es una tupla. El número de filas es llamado cardinalidad.
El numero de columnas es llamado aridad o grado.
Base de datos relacional
Una base de datos relacional es un conjunto de una o más tablas estructuradas en registros (líneas) y campos (columnas), que se vinculan entre sí por un campo en común, en ambos casos posee las mismas características como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le denomina ID, identificador o clave. A esta manera de construir bases de datos se le denomina modelo relacional.
Estrictamente hablando el término se refiere a una colección específica de datos pero a menudo se le usa, en forma errónea como sinónimo del software usado para gestionar esa colección de datos. Ese software se conoce como SGBD (sistema gestor de base de datos) relacional o RDBMS (relational database management system).
Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización de una base de datos, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera óptima.

Ventajas del modelo relacional
Garantiza herramientas para evitar la duplicidad de registros, a través de campos claves o llaves.
Garantiza la integridad referencial: Así al eliminar un registro elimina todos los registros relacionados dependientes.
Favorece la normalización por ser más comprensible y aplicable.
Una de las grandes ventajas del modelo relacional es que define también un álgebra, llamada "álgebra relacional". Todas las manipulaciones posibles sobre las relaciones se obtienen gracias a la combinación de tan sólo cinco operadores: RESTRICT, PROJECT, TIMES, UNION y MINUS. Por comodidad, se han definido también tres operadores adicionales que de todos modos se pueden obtener aplicando los cinco fundamentales: JOIN, INTERSECT y DIVIDE. Los operadores relacionales reciben como argumento una relación o un conjunto de relaciones y restituyen una única relación como resultado.
Veamos brevemente estos ocho operadores:
RESTRICT: restituye una relación que contiene un subconjunto de las tuplas de la relación a la que se aplica. Los atributos se quedan como estaban.
PROJECT: restituye una relación con un subconjunto de los atributos de la relación a la que viene aplicado. Las tuplas de la relación resultado se componen de las tuplas de la relacion original, de manera que siguen siendo un conjunto en sentido matemático.
TIME: se aplica a dos relaciones y efectúa el producto cartesiano de las tuplas. Cada tupla de la primera relación está concatenada con cada tupla de la segunda.
JOIN: se concatenan las tuplas de dos relaciones de acuerdo con el valor de un conjunto de sus atributos.
UNION: aplicando este operador a dos relaciones compatibles, se obtiene una que contiene las tuplas de ambas relaciones. Dos relaciones son compatibles si tienen el mismo número de atributos y los atributos correspondientes en las dos relaciones tienen el mismo dominio.
MINUS: aplicado a dos relaciones compatibles restituye una tercera que contiene las tuplas que se encuentran sólo en la primera relación.
INTERSECT: aplicado a dos relaciones compatibles restituye una relación que contiene las tuplas que existen en ambas.
DIVIDE: aplicado a dos relaciones que tengan atributos comunes, restituye una tercera que contiene todas las tuplas de la primera relación que se puede hacer que correspondan con todos los valores de la segunda relación.
En las siguientes tablas, a título de ejemplo, se representan los resultados de la aplicación de algunos operadores relacionales a las relaciones Personas e Hijos. Como nombres para las relaciones resultado se han utilizado las expresiones que las producen.
Personas
número_persona nombre apellido fecha_nacimiento sexo estado_civil
2 Mario Rossi 29/03/1965 M Casado
1 Giuseppe Russo 15/11/1972 M Soltero
3 Alessandra Mondella 13/06/1970 F Soltera

Hijos
número_persona nombre_apellido edad sexo
2 Maria Rossi 3 F
2 Gianni Rossi 5 M

RESTRICT (Personas)
sexo='M'
número_persona nombre apellido fecha_nacimiento sexo estado_civil
2 Mario Rossi 29/03/1965 M Casado
1 Giuseppe Russo 15/11/1972 M Soltero

PROJECT sexo (Personas)
sexo
M
F
RESTRICT (Personas)
sexo='M'
n. nombre apellido nacimiento sexo stado_civil nombre edad sexo
Mario Rossi apellido 29/03/1965 M Csado Maria Rossi 3 F
Mario Rossi Apellido 29/03/1965 M Casado Gianni Rossi 5 M


Las bases de datos relacionales efectúan todas las operaciones en las tablas usando el álgebra relacional, aunque normalmente no le permiten al usuario usarla. El usuario interacciona con la base de datos a través de una interfaz diferente el lenguaje SQL, un lenguaje declarativo que permite escribir conjuntos de datos. Las instrucciones SQL vienen descompuestas por el motor de datos en una serie de operaciones relacionales.
Proceso de normalización
El proceso de normalización es un estándar que consiste, básicamente, en un proceso de conversión de las relaciones entre las entidades, evitando:
La redundancia de los datos: repetición de datos en un sistema.
Anomalías de actualización: inconsistencias de los datos como resultado de datos redundantes y actualizaciones parciales.
Anomalías de borrado: pérdidas no intencionadas de datos debido a que se han borrado otros datos.
Anomalías de inserción: imposibilidad de adicionar datos en la base de datos debido a la ausencia de otros datos.
Tomando como referencia la tabla siguiente:
AUTORES Y LIBROS
NOMBRE NACION CODLIBRO TITULO EDITOR
Date USA 999 IBD AW
Ad.Mig. ESP 888 CyD RM
Ma.Piat. ITA 777 CyD RM
Date USA 666 BdD AW
Se plantean una serie de problemas:
Redundancia: cuando un autor tiene varios libros, se repite la nacionalidad.
Anomalías de modificación: Si Ad.Mig. y Ma.Piat. desean cambiar de editor, se modifica en los 2 lugares. A priori no podemos saber cuántos autores tiene un libro. Los errores son frecuentes al olvidar la modificación de un autor. Se pretende modificar en un sólo sitio.
Anomalías de inserción: Se desea dar de alta un autor sin libros, en un principio. NOMBRE y CODLIBRO son campos clave, una clave no puede tomar valores nulos.
Asegurando:
Integridad entre los datos: consistencia de la información.
El proceso de normalización nos conduce hasta el modelo físico de datos y consta de varias fases denominadas formas normales, estas formas se detallan a continuación.
Definición de la clave
Antes de proceder a la normalización de la tabla lo primero que debemos de definir es una clave, esta clave deberá contener un valor único para cada registro (no podrán existir dos valores iguales en toda la tabla) y podrá estar formado por un único campo o por un grupo de campos.

En la tabla de alumnos de un centro de estudios no podemos definir como campo clave el nombre del alumno ya que pueden existir varios alumnos con el mismo nombre. Podríamos considerar la posibilidad de definir como clave los campos nombre y apellidos, pero estamos en la misma situación: podría darse el caso de alumnos que tuvieran los mismos apellidos y el mismo nombre (Juan Fernández Martín).

La solución en este caso es asignar un código de alumno a cada uno, un número que identifique al alumno y que estemos seguros que es único.
Formas normales
Las relaciones que describe Codd al definir su modelo relacional, son transformadas en tablas al momento de trabajar con una base de datos. Las Formas Normales buscan optimizar estas estructuras eliminando básicamente la redundancia utilizando como medio principal las dependencias funcionales. Las Formas Normales son un pequeño número de reglas que de cumplirse hacen que las estructuras posean la menor cantidad de redundancia posible.
Primera Forma Normal (1NF): No hay campos múltiples (todos los campos son atómicos). Todas las filas deben tener el mismo número de columnas.

TABLA A TABLA B
Código Nombre Código Curso
1 Marcos 1 Inglés
2 Lucas 2 Contabilidad
3 Marta 2 Informática
3 Inglés
3 Informática
Como se puede comprobar ahora todos los registros de ambas tablas contienen valores únicos en sus campos, por lo tanto ambas tablas cumplen la primera forma normal.
Segunda Forma Normal (2NF): Todo campo que no sea clave debe depender por completo de toda la clave.
Tabla A Tabla B Tabla C
Código Empleado Nombre Código Departamento Dpto. Código Empleado Código Departamento Años
1 Juan 2 I+D 1 6 6
2 Pedro 3 Sistemas 2 3 3
3 Sonia 6 Contabilidad 3 2 1
4 Verónica 4 3 10
2 6 5
Considerando que la tabla A tiene como índice el campo Código Empleado, la tabla B Código Departamento y la tabla C una clave compuesta por los campos Código Empleado y Código Departamento.

Tercera Forma Normal (3NF): No hay dependencias transitivas. Un campo debe depender de la clave y no de otro campo.
Tabla A Tabla B
Código Nombre Curso Curso Aula
1 Marcos Informática Informática Aula A
2 Lucas Inglés Inglés Aula B
3 Marta Contabilidad Contabilidad Aula C

Cuarta Forma Normal (4NF): Una fila no debe contener dos o más campos multi-valorados (aquellos que pueden contener más de un valor simultáneamente) sobre una entidad.
Tamaño Color
Figura Tamaño Figura Color
Cuadrado Grande Cuadrado Rojo
Cuadrado Pequeño Cuadrado Azul
Círculo Mediano Círculo Blanco
Círculo Pequeño Círculo Azul

Conclusiones

El complejo mundo de la informática y la gestión de los datos y la información a través de bases de datos bien estructuradas que permitan el acceso, control y manejo de ellos es lo que pretende haber abarcado este material a través de una breve explicación del álgebra relacional que no es más que un conjunto cerrado de operaciones que actúan sobre relaciones y producen relaciones como resultados que pueden combinarse para construir expresiones más complejas.

Hablar de álgebra relacional lleva implícito el modelo de bases de datos relacional para ligar la estructura y un motor o gestor de bases de datos que para este ejemplo se utilizó el SQL (Structure Query Language).

Para mayor orientación sobre esta materia, se recomienda encarecidamente consultar la bibliografía utilizada en este trabajo, además de abundantes recursos que se localizan en la gran biblioteca mundial, el Internet.

Bibliografía.

Elmasri y Navathe: “Fundamentos de Sistemas de Bases de Datos” 3ª edición, 2002 (Capítulo 7).

Garcia-Molina, Ullman y Widom: “Database systems: the complete book”. Prentice-Hall (Capítulo 5).

Memoria caché
Mejora tiempo de respuesta.
Mantiene la información accesada más frecuentemente.
Hit rate: indica qué tan seguido encontramos los datos.
Latencia: indica cuánto se dura en ir a buscar la info en memoria.

Principio de proximidad
El CPU tiende a accesar la info que esta contigua o más cercana al dato buscado para manejarla posteriormente.
Gracias a este, el hit rate es alto.

Ver todo el resumen >>>
Sistema Operativo
Programa que controla la ejecución de aplicaciones.
Actúa como interfaz entre los programas y el hardware.
Administra los recursos del sistema (Memoria, micro, dispositivos I/O).

Objetivos de los SO
Facilidad de uso para los programadores:
Interfaz uniforme para accesar a recursos y dispositivos.
Soporte para el acceso y manipulación de archivos.
Estadísticas y monitoreo de uso/ rendimiento de los recursos.
Facilidad de uso para usuario final:
Ejecución de programas.
Acceso y configuración de aplicaciones.
Uso de dispositivos
Administración de archivos.
Capacidad de actualización a nuevas versiones.
Eficiencia en la ejecución de múltiples tareas.
Administrador de los recursos.
Mecanismo de control “inusual” pues usa los mismos recursos que administra.
Capacidad para evolucionar de acuerdo a necesidades de los usuarios.
Actualización de hardware.
Nuevas versiones de controladores
Servicios adicionales.
Actualizaciones del kernel.

Diseño e implementación
Software
Sumamente complejo.
Evolución lleva más de 40 años.
Principales conceptos aún se mantienen.

Principales avances teóricos del software
Procesos (como unidad de trabajo)
Gestión de memoria
Protección y seguridad de la información
Planificación y control de recursos
Estructuración de sistemas.

Proceso
Unidad de ejecución.
Un solo hilo secuencial.
Recursos del sistema asociados.

Proceso <> Programa
Programa es el conjunto de líneas de código
Proceso es la sección del programa que se esta ejecutando en un instante.

Componentes de un proceso

Programa ejecutable :
(.exe) Es solo uno
Líneas de código
Librerías
Scripts

Datos del programa
Variables
stacks
buffers

Contexto de ejecución
Uno para cada proceso
Esta en RAM
registros del micro
Prioridad
dueño
estado

Gestión de memoria

Aislamiento de procesos. (Por seguridad)
Evita que un proceso interfiera en la memoria o instrucciones de otro proceso.
Ej. IExplorer no puede ingresar a lo que esta digitado en Word.
Asignación y gestión automática.
Soporta la asignación dinámica de memoria.
Transparente al programador.
La realiza el SO.
Soporte a la programación modular.
Capacidad para definir, cargar y descargar módulos.
Ahorra memoria y no cargar módulos que no se van a utilizar.
Protección y control de acceso.
Garantizar que solo los usuarios/ procesos indicados tiene acceso a la info
Compartida.
Almacenamiento a largo plazo.
Provee mecanismos para almacenar y recuperar información cuando el sistema
Esta apagado (DB, archivos, directorios)

Memoria virtual

Si no existiera, el SO estaría obligado a cargar los procesos completos en RAM.
Permite a los programas direccionar la memoria desde un punto a otro lógico.
Cantidad de memoria física no es relevante para los procesos.
Se basa en bloques de tamaño fijo llamados páginas.

Página
Bloque mínimo de memoria que se transfiere entre memoria virtual y el disco.

Protección y seguridad de la información
Disponibilidad
Capaz de recuperarse rápidamente cuando el sistema falla.
Confidencialidad (para los usuarios)
Control de acceso a programas y datos.
Integridad de datos
Protección frente a modificaciones no autorizadas (virus)
Autenticidad
Verificación de la identidad de los usuarios y validez de mensajes y/ o datos.

Planificación y gestión de recursos
Factores claves en la política de planeación
Equitatividad
Procesos deben tener acceso equitativo a los recursos.
Especialmente cuando tienen demanda/ prioridad similar.
Multitask, para que todos los procesos se corran igual de tiempo en CPU.
Respuesta diferencial
Capacidad del SO para tomar decisiones en forma dinámica sobre la marcha.
Discriminar entre diferentes clases de trabajo y satisfacer el total de requisitos.
Eficiencia
Definir realmente lo que es urgente.
Maximizar el uso de los recursos y minimizar el tiempo de respuesta.

Principales elementos de la planificación y gestión de los recursos
Colas de prioridad
Colas de corto plazo, procesos listos para usarse.
Colas de largo plazo, procesos nuevos a los que se le debe asignar memoria.
Colas de E/ S, una por dispositivo para almacenar procesos en espera de uso.
Manejador a llamadas del sistema
SO administra los recursos y su prioridad de llamadas de cada recurso.
Pueden generar interrupciones, lo cual implica mover los procesos entre colas.
Manejador de interrupciones (Interrupt handler o ISR)
Interrupción:Cuando un proceso interrumpe el CPU para atender otro proceso.
IRQ, interrupt request: acto de interrumpir un proceso, atender una subrutina.
Recibe el control cada vez que se genera un IRQ.
Latencia tiene que ser corta.

Desarrollo de los sistemas operativos modernos
Arquitectura micro núcleo o micro kernel
Contrario a modelos monolíticos
Asigna solo unas cuantas funciones esenciales al núcleo.
Permite la configuración del sistema de acuerdo a su función.
Multithreading o Multihilos
Un proceso se divide en hilos que se pueden ejecutar concurrentemente.


Hilo <>Proceso

Hilo
Unidad de ejecución
No tiene recursos asociados
Se asigna CPU

Proceso
Unidad de ejecución
Recursos asociados
Se asigna memoria

Si se cae un hilo, se cae todo el proceso.


Procesamiento simétrico
Arquitectura de múltiples procesadores.
Todos los procesadores pueden realizar las mismas funciones.
Transparente al usuario.
Ventajas del procesamiento simétrico:
Rendimiento
Más de un proceso se ejecuta simultáneamente.
Disponibilidad (en la buena teoría…)
El fallo de un procesador no implica el fallo de la máquina completa.
Desventajas :
Precio y difícil administración.
Sistemas operativos distribuidos
Múltiples computadoras dan la noción de un solo espacio de memoria.
Clústeres permiten agregar capacidad de procesamiento (Google!)
Diseño orientado a objetos
Añade extensiones modulares a un pequeño núcleo.
Facilita la personalización sin eliminar la integridad
Permite el desarrollo distribuido.

Traza de procesos
Secuencia de instrucciones que se ejecutan para dicho proceso.
Se puede caracterizar el comportamiento de un procesador mostrando cómo se
entrelazan.

Dispatcher (Activador)
Programa responsable de intercambiar el procesador de un proceso a otro.
Mientras un proceso está en ejecución, el dispatcher puede detenerlo y asignar el
CPU a otro proceso.

Creación de procesos
BCP= estructura de datos que utiliza el SO para administrar los procesos.
1. Construir el process control block (BCP)
Asignar identificador único
Seleccionar prioridad
Inicializar datos de contexto
Definir relación padre-hijo
2. Reservar espacio para datos (En RAM)
Para la pila, el heap, para el código y asingar punteros en el process control…

Terminación de procesos
Liberar recursos
De memoria real y virtual, en almacenamiento secundario, desocupar
dispositivos, terminación de procesos hijos y eliminación del process…

Estados de los procesos
Estrategia Round Robin: Ciclo de asignación del CPU por cierto tiempo a cada proceso.

Ver diagrama de estados de los procesos

Intercambio o Swapping
Base fundamental de la memoria virtual.
Mover parte o todo el proceso de memoria principal a disco.
Se aprovecha el tiempo ocioso del CPU teniendo más procesos en ejecución.

Estructuras de control
El SO debe disponer información sobre:
Tablas de procesos
Id, estado (listo, en proceso, suspendido), localización en memoria, posición en disco, prioridad y privilegios.
Tablas de memoria (En RAM)
Registros de control para memoria real y virtual
Atributos de protección y control de acceso (para evitar que se modifique otro
proceso).
Tablas de E/ S
Estado del dispositivo.
Canales de comunicación asociados.
Dirección de memoria para ser usada como fuente o destino de los datos.
Tablas de archivos (Usualmente está en RAM)
Nombre y localización del archivo. Propietario.
Estado actual (abierto, cerrado, borrado). Fecha de última modificación.
Permisos asociados para control de acceso. Tamaño real.

Modos de ejecución (Uno u otro)
Ayudan a proteger tablas de procesos, memoria, E/ S y archivos.
El modo actual de ejecución se almacena en el CPU dentro del PSW (program status word)

Modo Usuario
Menos privilegios
Acceso restringido a áreas de memoria
Ciertas instrucciones restringidas
Mayoría de programas comunes

Modo Núcleo
Todos los privilegios
Acceso libre a memoria
Ejecuta cualquier instrucción
Dispatcher y SO

Interrupciones
Evento que dispara el cambio de proceso.
Durante la interrupción, el SO toma el control del micro y decide qué hacer.
Toda interrupción obliga al proceso a cambiar de estado.
Tipos:
Trap: Condición de error durante la ejecución de la instrucción actual (división
por cero, bluescreen, pulgas del software).
Interrupción: Evento externo a la ejecución del proceso. Esto es interrupción de
Reloj o fallo de página.
Llamadas al sistema: Solicitud explícita al SO. Por ejemplo virus, o abrir, cerrar,
leer o salvar un archivo.

Hilos de ejecución o Threads
Capacidad de un SO de dar soporte a múltiples hilos de ejecución por proceso.
Los hilos comparten recursos.
Si un hilo abre un archivo, otros hilos pueden accesarlo.
Si un hilo consume toda la memoria, los otros hilos tendrá problemas de espacio.
Cuando un proceso es suspendido, todos sus hilos son bajados a disco.
Finalizar un proceso implica finalizar todos los hilos asociados.
Beneficios: Gracias a que la memoria se reserva para el proceso, y los hilos
comparten dicha memoria.
Crear y finalizar un hilo tarda menos tiempo que un proceso.
Cambiar entre hilos tarda menos tiempo que entre procesos.
La comunicación entre hilos es más sencilla y eficiente.
Desventaja: Se pueden sobre escribir datos entre hilos.

Suscribirse a: Entradas (Atom)