miércoles, 11 de agosto de 2010

Taller #1 base de datos

Saludos a todos!!!

Desarrollar en siguiente taller segun la informacion que se encuentra registrada en este blog....


enlace al taller http://tickipedia.com/ejercicios/Taller1.pdf
Si bien este tema es objeto de numerosos teóricos y asignatura fundamental en las más importantes escuelas de informática del mundo, afrontemos el diseño relacional de nuestras bases de datos desde un punto de vista ameno y práctico, plagado de ejemplos, sin renunciar en nungún caso al rigor.

Table of Contents [hide]

1. Relaciones "uno a uno"
2. Relaciones de "uno a varios"
3. Relaciones de "varios con varios"
4. Conclusión

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 poque cad 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 cases, 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. Conla gran expansión de los teléfonos, por lo general, cada persona tiene un número de teléfono fijo, y ademas del teéfono móvil. Debemos tener en cuenta que de el 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 mas 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 la 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 teé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 limistamos 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 bas 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?

En este caso hemos creado una tabla intermedia llamada "empresas". En la tabla "nombres" incluimos un nuevo campo TID, que se relaciona con la tabla "empresas", y es esta tabla la que se relaciona directamente con los teléfonos. De esta manera, podemos almacenar todos los datos con facilidad sin tener que repetir un sólo número telefónico.
Conclusión

Por muy complicadas que parezcan las relaciones en el mundo real, tengamos por seguro que cuando queramos plasmarlas en nuestra base de datos corresponderá alguna de las tres opciones que hemos presentado. Por ello, no dudemos en invertir el tiempo que sea necesario hasta encontrar la combinación de bases de datos óptima que nos permita modelar la realidad sin repetir ninguno de los datos.

El tiempo que invirtamos en este proceso lo recuperaremos con creces durante el proceso de programación, pues nos facilitará enormemente las cosas.
Objetivos de los sistemas de bases de datos.
Los objetivos principales de un sistema de base de datos es disminuir los siguientes
aspectos:
Redundancia e inconsistencia de datos.
Puesto que los archivos que mantienen almacenada la información son creados por
diferentes tipos de programas de aplicación existe la posibilidad de que si no se controla
detalladamente el almacenamiento, se pueda originar un duplicado de información, es
decir que la misma información sea más de una vez en un dispositivo de
almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos,
además de que puede originar la inconsistencia de los datos - es decir diversas copias de
un mismo dato no concuerdan entre si -, por ejemplo: que se actualiza la dirección de un
cliente en un archivo y que en otros archivos permanezca la anterior.
Dificultad para tener acceso a los datos.
Un sistema de base de datos debe contemplar un entorno de datos que le facilite al
usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes
necesita averiguar los nombres de todos los clientes que viven dentro del código postal
78733 de la ciudad. El gerente pide al departamento de procesamiento de datos que
genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del
sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto
ocasiona una deficiencia del sistema.
Aislamiento de los datos.
Puesto que los datos están repartidos en varios archivos, y estos no pueden tener
diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los
datos apropiados.
Anomalías del acceso concurrente.
Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta
más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos
simultáneamente. En un entorno así la interacción de actualizaciones concurrentes
puede dar por resultado datos inconsistentes. Para prevenir esta posibilidad debe
mantenerse alguna forma de supervisión en el sistema.

Objetivos de los sistemas de bases de datos.
Los objetivos principales de un sistema de base de datos es disminuir los siguientes
aspectos:
Redundancia e inconsistencia de datos.
Puesto que los archivos que mantienen almacenada la información son creados por
diferentes tipos de programas de aplicación existe la posibilidad de que si no se controla
detalladamente el almacenamiento, se pueda originar un duplicado de información, es
decir que la misma información sea más de una vez en un dispositivo de
almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos,
además de que puede originar la inconsistencia de los datos - es decir diversas copias de
un mismo dato no concuerdan entre si -, por ejemplo: que se actualiza la dirección de un
cliente en un archivo y que en otros archivos permanezca la anterior.
Dificultad para tener acceso a los datos.
Un sistema de base de datos debe contemplar un entorno de datos que le facilite al
usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes
necesita averiguar los nombres de todos los clientes que viven dentro del código postal
78733 de la ciudad. El gerente pide al departamento de procesamiento de datos que
genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del
sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto
ocasiona una deficiencia del sistema.
Aislamiento de los datos.
Puesto que los datos están repartidos en varios archivos, y estos no pueden tener
diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los
datos apropiados.
Anomalías del acceso concurrente.
Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta
más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos
simultáneamente. En un entorno así la interacción de actualizaciones concurrentes
puede dar por resultado datos inconsistentes. Para prevenir esta posibilidad debe
mantenerse alguna forma de supervisión en el sistema.

Conceptos

Introducción a los conceptos de bases de datos
Conceptos básicos:
Todo buen curso necesita empezar con algunos conceptos básicos para el mejor
entendimiento del mismo, por lo tanto empezaremos con las definiciones que involucran
a las bases de datos.
Base de datos: Es un conjunto de datos que pertenecen al mismo contexto 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 tienen formato electrónico, que ofrece un amplio rango de soluciones al problema
de almacenar datos.
Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o
alfanuméricos.
Información: Es un conjunto ordenado de datos los cuales son manejados según la
necesidad del usuario, para que un conjunto de datos pueda ser procesado
eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en
archivos.
Campo: Es la unidad más pequeña a la cual uno puede referirse en un programa.
Desde el punto de vista del programador representa una característica de un individuo u
objeto.
Registro: Colección de campos de iguales o de diferentes tipos.
Tabla: Colección campos de diferente tipo que por lo general hace referencias a los
atributos de un objeto o individuo. Una tabla también puede estar conformada por un
conjunto de registros y cada uno de ellos se refiere a un objeto o individuo.

Archivo: Colección de registros almacenados siguiendo una estructura homogénea.
Sistema Manejador de Base de Datos. (DBMS): Los DBMS son un tipo de software muy
específico, dedicado a servir de interfaz entre la base de datos, el usuario y las
aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, de un
lenguaje de manipulación de datos y de un lenguaje de consulta. En los textos que tratan
este tema, o temas relacionados, se mencionan los términos SGBD y DBMS, siendo
ambos equivalentes, y acrónimos, respectivamente, de Sistema Gestor de Bases de Datos
y DataBase Management System, su expresión inglesa.
Esquema de base de datos: Es la estructura por la que esta formada la base de
datos, se especifica por medio de un conjunto de definiciones que se expresa mediante
un lenguaje especial llamado lenguaje de definición de datos. (DDL)
Administrador de base de datos (DBA): Es la persona o equipo de personas
profesionales responsables del control y manejo del sistema de base de datos,
generalmente tiene(n) experiencia en DBMS, diseño de bases de datos, Sistemas
operativos, comunicación de datos, hardware y programación.