viernes, 24 de junio de 2011
TIPOS DE RELACIONES
Relaciones (bases de datos)
Las diferentes formas de relación entre diversas bases de datos que podemos encontrar son:
-Relaciones "uno a uno"
Estas relaciones entre bases de datos se dan cuando cada campo clave aparece sólo una vez en cada una de las tablas.
Tomando un ejemplo del mundo real, una clara relación de "uno a uno" podría ser, el nombre de cualquier persona y su número de teléfono. Si partimosdel supuesto en que cada persona tiene un solo número de teléfono, se podría hablar de una relación "uno a uno".
Gráficamente, se podría representar de la siguiente manera:
Este tipo de relaciones se caracteriza porque cada uno de los campos define a aquél con el que se relaciona. Es decir, conociendo el nombre de una persona podemos conocer su número telefónico. O si sabemos su número telefónico, podemos identificar al dueño. En estos casos, se suele aconsejar incluir todos los datos dentro de una sola tabla.
-Relaciones de "uno a varios"
El ejemplo del caso anterior (cada persona, un teléfono), si bien es correcto teóricamente, es muy improbable desde el punto de vista de la realidad. Con la gran expansión de los teléfonos, por lo general, cada persona tiene un número de teléfono fijo, y además del teléfono móvil. Debemos tener en cuenta que del de su casa también tendrá un número de teléfono de empresa, y que quizá también sus móviles estén divididos en ocio y trabajo.
Por ello, debemos tener nuestras bases de datos preparadas para ello.
Este tipo de relaciones es conocido como "uno a varios", y se podría representar de la siguiente manera:
En este caso, lo aconsejable no es almacenar todos los datos en una sola tabla, sino lo eficiente es hacerlo en tablas separadas, utilizando el identificador ID para relacionarlas.
Echemos un vistazo a la figura anterior. En la taba Nombre almacenamos el nombre y apellido, con su ID o número identificador.
En la otra tabla, Teléfonos, almacenamos únicamente números de teléfono, con su correspondiente número identificador, en este caso TID.
La manera en que se relaciona una con otra es mediante el identificador ID, que está presente en ambas tablas.
A simple vista podemos advertir que la primera de las personas de la tabla nombres, Juan Timaná, tiene 2 números telefónicos, pues su ID, que en este caso es 1, aparece en dos de los teléfonos de la otra tabla.
De este modo será mucho más sencillo cambiar, eliminar o ampliar los números de teléfono en la misma tabla.
Si estas tablas están creadas en MySQL, la sentencia que nos ayudaría a encontrar todos los teléfonos de una determinada persona sería:
SELECT n.nombre, t.telf
FROM nombre n
INNER JOIN telefonos t ON n.id = t.id
WHERE n.nombre = "Juan Timaná"
-Relaciones de "varios con varios"
La última de las relaciones que podemos encontrar es la de "varios con varios". Dado que en la vida las cosas rara vez son sencillas, éste será el tipo de relación que nos encontraremos más a menudo.
Volviendo al tema de los teléfonos, hemos encontrado la manera de relacionar cada una de las personas con sus diversos teléfonos: el de su casa, el de su empresa, el móvil. Pero no será extraño tener en nuestra base de datos diversas personas que trabajen en la misma empresa, por lo que el número de su trabajo será el mismo, o miembros de una misma familia, por lo que compartirán el mismo teléfono de su hogar.
¿Cómo tratar este tipo de relaciones? Si nos limitamos a repetir dicho número de tablas, estaremos creando problemas de redundancia de datos, que a largo plazo lastrarán la rapidez y eficacia de nuestras tablas.
Este tipo de relaciones podría ilustrarse de la siguiente manera:
Como vemos, cada elemento de la base de datos puede relacionarse libremente con uno o varios miembros de las distintas tablas.
En estos casos no hay una regla fija a la que podamos acogernos, pero lo aconsejable es aproximarse lo más posible a la realidad, y no dudar en establecer tablas intermedias que nos ayuden a asociar mejor los datos.
Volviendo al tema de los teléfonos, imaginemos que varias personas de nuestra tabla trabajan en la misma empresa ACME Productions tiene varias líneas, por lo que los números de teléfono de trabajo de estas personas serían varios. ¿Cómo representarlo en nuestra base de datos?
CLAVE PRINCIPAL
Clave primaria
En el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No pueden haber dos filas en una tabla que tengan la misma clave primaria.
Una clave primaria debe identificar unívocamente a todas las posibles filas de una tabla y no solo a las filas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque no identifican unívocamente números de teléfono o palabras.
Una clave primaria es un caso especial de clave única. La mayor diferencia es que para claves únicas, no se impone automáticamente la restricción implícita NOT NULL, mientras que para claves primarias, sí.
Así, los valores en columnas de clave única pueden o no ser NULL. Otra diferencia es que las claves primarias deben definirse por medio de otra sintaxis.
El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre clave primaria y otros tipos de claves. Las claves primarias fueron agregadas al estándar SQL principalmente para conveniencia del programador.
Tanto claves únicas como claves primarias pueden referenciarse con claves foráneas.
ATRIBUTO
Atributos
Los atributos son las características que definen o identifican a una entidad, estas pueden ser muchas, y solo el diseñador utiliza o implementa las que considere más relevantes. Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades.
Un conjunto de entidades dentro de una entidad, tiene valores específicos asignados para cada uno de sus atributos, de esta forma, es posible su identificación unívoca.
Ejemplos:
A la colección de entidades Alumnos, con el siguiente conjunto de atributos en común, (id, nombre, edad, semestre), pertenecen las entidades:
• (1, Sofia, 38 años, 2)
• (2, Josefa, 19 años, 5)
• (3, Carlos, 20 años, 2)
• ...
Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el valor de sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos valores para algunos de sus atributos, pero nunca para todos.
En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un alumno de otro es su número de id.
Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que será almacenado o a restricciones en los valores que el atributo puede tomar (Cadenas de caracteres, números, solo dos letras, solo números mayores que cero, solo números enteros...).
Cuando una entidad no tiene un valor para un atributo dado, este toma el valor nulo, bien sea que no se conoce, que no existe o que no se sabe nada al respecto del mismo.
ENTIDAD
Entidad
Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una misma entidad.
Algunos Ejemplos:
• Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos).
• Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de bastidor).
• Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección).
Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa, etc. (entidad concreta); o un objeto con existencia conceptual como: un puesto de trabajo, una asignatura de clases, un nombre, etc. (entidad abstracta).
Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la entidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura, Peso, Fecha de nacimiento, etc...
RELACION
Relación
Describe cierta dependencia entre entidades o permite la asociación de las mismas.
Ejemplo:
Dadas dos entidades "Habitación 502" y "Mark", es posible relacionar que la habitación 502 se encuentra ocupada por el huésped de nombre Mark.
Una relación tiene sentido al expresar las entidades que relaciona. En el ejemplo anterior, Un Huésped (entidad), se aloja (relación) en una habitación (entidad).
DIAGRAMA ENTIDAD RELACION
Diagrama Entidad-Relación
1. Se elabora el diagrama (o diagramas) entidad-relación.
2. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama.
Dado lo rudimentario de esta técnica se necesita cierto entrenamiento y experiencia para lograr buenos modelos de datos.
El modelado de datos no acaba con el uso de esta técnica. Son necesarias otras técnicas para lograr un modelo directamente implementable en una base de datos. Brevemente:
• Transformación de relaciones múltiples en binarias.
• Normalización de una base de datos de relaciones (algunas relaciones pueden transformarse en atributos y viceversa).
• Conversión en tablas (en caso de utilizar una base de datos relacional).
El modelo de datos entidad-relación está basado en una percepción del mundo real que consta de una colección de objetos básicos, llamados entidades, y de relaciones entre esos objetos.
REGISTRO
Registro
Un registro (también llamado fila o tupla) representa un objeto único de datos implícitamente estructurados en una tabla. En términos simples, una tabla de una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura.
Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad. Se le asigna automáticamente un número consecutivo (número de registro) que en ocasiones es usado como índice aunque lo normal y práctico es asignarle a cada registro un campo clave para su búsqueda.
La estructura implícita de un registro y el significado de los valores de sus campos exige que dicho registro sea entendido como una sucesión de datos, uno en cada columna de la tabla. La fila se interpreta entonces como una variable relacional compuesta por un conjunto de tuplas, cada una de las cuales consta de dos ítems: el nombre de la columna relevante y el valor que esta fila provee para dicha columna.
CAMPO
Campo
En informática, un campo es un espacio de almacenamiento para un dato en particular. En las bases de datos, un campo es la mínima unidad de información a la que se puede acceder; un campo o un conjunto de ellos forman un registro, donde pueden existir campos en blanco, siendo éste un error del sistema. En las hojas de cálculo los campos son llamados celdas. La mayoría de los campos tienen atributos asociados a ellos. Por ejemplo, algunos campos son numéricos mientras otros almacenan texto, también varía el tamaño de estos. Adicionalmente, cada campo tiene un nombre.
INFORMACION
Información
Desde el punto de vista de la ciencia de la computación, la información es un conocimiento explícito extraído por seres vivos o sistemas expertos como resultado de interacción con el entorno o percepciones sensibles del mismo entorno. En principio la información, a diferencia de los datos o las percepciones sensibles, tienen estructura útil que modificará las sucesivas interacciones del ente que posee dicha información con su entorno.
Principales características de la información
En general la información tiene una estructura interna y puede ser calificada según varios aspectos:
• Significado (semántica): ¿Qué quiere decir? Del significado extraído de una información, cada individuo evalúa las consecuencias posibles y adecúa sus actitudes y acciones de manera acorde a las consecuencias previsibles que se deducen del significado de la información. Esto se refiere a qué reglas debe seguir el individuo o el sistema experto para modificar sus expectativas futuras sobre cada posible alternativa.
• Importancia (relativa al receptor): ¿Trata sobre alguna cuestión importante? La importancia de la información para un receptor, se referirá a en qué grado cambia la actitud o la conducta de los individuos. En las modernas sociedades, los individuos obtienen de los medios de comunicación masiva gran cantidad de información, un gran parte de la misma es poco importante para ellos, porque altera de manera muy poco significativa la conducta de los individuos. Esto se refiere a en qué grado cuantitativo deben alterarse las expectativas futuras. A veces se sabe que un hecho hace menos probables algunas cosas y más otras, la importancia tiene que ver con cuanto menos probables serán unas alternativas respecto a las otras.
• Vigencia (en la dimensión espacio-tiempo): ¿Es actual o desfasada? En la práctica la vigencia de una información es difícil de evaluar, ya que en general acceder a una información no permite conocer de inmediato si dicha información tiene o no vigencia. Esto tiene que ver con la sincronización en el tiempo de los indicios que permiten reevaluar las expectativas con las expectativas en un momento dado.
• Validez (relativa al emisor): ¿El emisor es fiable o puede proporcionar información no válida (falsa)? Esto tiene que ver si los indicios deben ser considerados en la reevaluación de expectativas o deben ser ignorados por no ser indicios fiables.
• Valor (activo intangible volátil): ¿Cómo de útil resulta para el destinatario?
DATO
Dato
El dato es una representación simbólica (numérica, alfabética, algorítmica etc.), un atributo o una característica de una entidad. Los datos son hechos que describen sucesos y entidades. No tienen ninguna información. Puede significar un numero, una letra, o cualquier símbolo que representa una palabra, una cantidad, una medida o una descripción. El dato no tiene valor semántico (sentido) en sí mismo, pero si recibe un tratamiento (procesamiento) apropiado, se puede utilizar en la realización de cálculos o toma de decisiones. Es de empleo muy común en el ámbito informático y, en general, prácticamente en cualquier disciplina científica.
En programación, un dato es la expresión general que describe las características de las entidades sobre las cuales opera un algoritmo.
En Estructura de datos, es la parte mínima de la información.
Un dato por sí mismo no constituye información, es el procesamiento de los datos lo que nos proporciona información.
BASE DE DATOS
Base de datos
Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.
Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática.
Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.
Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios países. Por ejemplo, en España los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD).
HISTORIA DE LA PROGRAMACION
Historia de la programación
Sobre los últimos 50 años, los idiomas que programan han evolucionado del código binario de maquina a herramientas poderosas que crean las abstracciones complejas. Es importante por que los idiomas han evolucionado, y que capacidades nos dan los nuevos idiomas.
“Tan largo como no había maquinas, programar era ningún problema; cuando tuvimos pocas computadoras débiles, programar llegó a ser un problema templado y ahora que tenemos las computadoras gigantescas, programar ha llegado a ser un problema igualmente gigantesco. En este sentido que la industria electrónica no ha resuelto un solo problema, ha creado el problema de usar su producto”.
Una de las llaves a programar exitoso es el concepto de la abstracción. La abstracción es la llave a la construcción de sistemas complejos de software. Como el tamaño de nuestros problemas crece, la necesidad para la abstracción aumentó dramáticamente. Los sistemas sencillos se caracterizaban por idiomas usados en 1950’s y 60’s, un solo programista podría entender el problema entero y por lo tanto manipular todas las estructuras y datos del programa. Los programistas hoy pueden entender todos los programas y los datos.
La mayoría de los libros y el reglamento en la historia de programar los idiomas tienden a discutir los idiomas en términos de generaciones. Esto es un arreglo útil para clasificar los idiomas por la edad.
-Primera generación:
Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas. Las primeras se usaban como calculadoras simples.
John Von Neumann desarrolló el modelo que lleva su nombre para describir este concepto de “programa almacenado”. En este modelo se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa.
Se tenía el problema de representar las acciones que iba a realizar la computadora y la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios. Entonces a cada acción que sea capaz de realizar la computadora asociarle un número, que será su código de operación (opcode)[1].
-Segunda generación:
El primer gran avance que se dio, como ya se comento, fue la abstracción dada por el Lenguaje Ensamblador y con el, el nacimiento de las primeras herramientas automáticas para generar el condigo maquina. Esto redujo los errores triviales, como podía ser el numero que correspondía a una operación que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer. Sin embargo, aún aquí es fácil para el programador perderse y cometer errores de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU y entender bien todo lo que sucede dentro de el.
-Tercera generación:
Con el desarrollo en los 50’s y 60’s de algoritmos de mas elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras científicos de otras ramas; ellos conocían mucho de física, química y otras ramas similares, pero no de computación y por supuesto, les era sumamente complicado trabajar con lenguaje ensamblador en vez de formulas. Así nació el concepto de lenguaje de alto nivel con el primer compilador de FORTAN (FORmula TRANslation), que inicio con un simple esfuerzo de traducir un lenguaje de formulas, al lenguaje ensamblador y por consiguiente al lenguaje de maquina. A partir de FORTAN, se han desarrollado innumerables lenguajes que siguen el mismo concepto. buscar la mayor abstracción posible y facilitar la vida al programador, aumentando la productividad, encargándose los compiladores o intérpretes de traducir el lenguaje de alto nivel al lenguaje de computadora.
-Cuarta generación:
Los idiomas de cuarta generación parecen según las instrucciones a las de la tercera generación. Lo nuevo de estos lenguajes son los conceptos como clases, objetos y eventos que permiten soluciones más fáciles y lógicos.
La mayoría de los idiomas modernos son objetivos orientados, que permite que modele un mundo verdadero que usa mi idioma. Además, puedo limitar el acceso para modelar las restricciones de mundo verdadero en datos. La llave es que use el término “mundo verdadero”.
-Quinta generación:
Como la quinta generación están conocidos los lenguajes de inteligencia artificial. Han sido muy valorados al principio de los 90’s mientras ahora el desarrollo de software toma otros caminos.
Lo que veremos en el futuro es menos dependencia en el idioma y mas en el modelando herramientas, tal como el unificado modelando el
TECNICAS DE DISEÑO DE PROGRAMACION
Técnicas de diseño de programación
-Top Down
También conocida como de arriba-abajo y consiste en establecer una serie de niveles de mayor a menor complejidad que den solución al problema. Consiste en efectuar una relación entre las etapas de estructuración de forma que una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y salidas de información. Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa.
La utilización de la técnica de diseño Top-Down tiene los siguientes objetivos básicos:
- Simplificación del problema y de los subprogramas de cada descomposición.
- Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas.
- El programa final queda estructurado en forma de bloqueo o módulos lo que hace más sencilla su lectura y mantenimiento.
-Bottom up:
El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse conforme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato.
Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es difícil llegar a integrar los subsistemas al grado tal de que el desempeño global, sea fluido. los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha limite para la integración total del sistema. En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, carece de ciertas limitaciones por haber tomado un enfoque ascendente.
Uno de ellos es la duplicación de esfuerzos para acceder al software y más aún al introducir los datos.
Otro es, que se introducen al sistema muchos datos carentes de valor.
Un tercero es que los objetivos globales de la organización no fueron considerados y en consecuencia no se satisfacen.
-Warnier Orr:
Los diagramas de Warnier Orr (también conocidos como construcción lógica de programas/construcción lógica de sistemas) fueron desarrollados inicialmente en Francia por Jean Dominique Warnier y en los Estados Unidos por Kenneth Orr. Este método ayuda al diseño de estructuras de programas identificando la salida y resultado del procedimiento, y entonces trabaja hacia atrás para determinar los pasos y combinaciones de entrada necesarios para producirlos. Los sencillos métodos gráficos usados en los diagramas de Warnier Orr hacen evidentes los niveles en un sistema y mas claros los movimientos de los datos en dichos niveles.
Las diagramas de Warnier Orr muestran los procesos y la secuencia en que se realizan. cada proceso se define de una manera jerarquica, es decir, consta de conjuntos de subprocesos que lo definen, en cada nivel, el proceso se muestra en una llave que agrupa a sus componentes. Puesto que un proceso puede tener muchos subprocesos distintos, un diagrama de Warnier Orr usa un conjunto de llaves para mostrar cada nivel del sistema.
TIPOS DE DATOS
Tipos de datos
Dato: Se define como la expresión general que describe los objetos con los cuales opera una computadora.
Tipo numérico:
Enteros (integer) Ejemplo: 1,10, 100, -2
Reales (real) Ejemplo: 1.36, 4.5, -2.34
Tipo de cadena:
Cadenas (string) Ejemplo: Palabras, frases
Caracteres (char) Ejemplo: a, A, 1, 2, @, -
Tipo lógicos o boolean:
Falso o verdadero (false/true)
Si o No
-Tipo de dato numérico entero (integer):
Son números completos no tienen decimales y pueden ser negativos y positivos.
-Tipo de dato numérico real:
Estos números siempre tienen punto decimal y pueden ser positivos o negativos.
-Tipo de dato cadena:
Representan información textual (palabras, frases, etc.). Son delimitadas por apostrofes o comillas.
-Tipo de dato caracter:
Un dato de este tipo contiene un solo caracter ya sea alfabético, numérico o especiales.
-Tipo de dato lógico o boolean:
Este dato solo puede tomar uno de dos valores, falso o verdadero y si o no.
VARIABLES Y CONSTANTES
Variables y Constantes
-Constante:
Es decir su valor no cambia durante la ejecución del programa
Ejemplo:
A=b*h
X
X:=2;
-Variable:
Es decir su valor cambia durante la ejecución del programa.
Ejemplo.
A=b*h
2
Variables: A, b, h
Globales y locales
Una variable global, puede ser utilizada durante la ejecución de TODO el programa.
Una variable local se usa y se declara dentro de un bloque, procedimiento o subprograma.
Par declarar tanto constantes como variables es necesario un identificador.
Identificador.-Es aquel que va a almacenar un valor constante o variable para su siguiente uso.
Reglas.-
1.- Su nombre debe iniciar con una letra
Ejemplo:
N1umero:integer;
numero1:integer;
numero_1:integer;
2.-Debe ser único en su tipo y nombre
Ejemplo:
3.- No debe contener espacios en blanco, de ser necesario utilizaras guión bajo (_)
Ejemplo:
numero_1:integer
Suscribirse a:
Entradas (Atom)