5 TRABAJO CON BASES DE DATOS
5.1 Introducción a Bases de Datos
Las bases de datos se pueden definir como una colección de datos interrelacionados entre si, almacenados en conjunto sin redundancias perjudiciales e innecesarias. Su finalidad es servir a una aplicación o más, de la mejor manera posible, los datos se almacenan de modo que resulten independientes de los programas que los usan; se emplean métodos bien determinados para incluir datos nuevos y para modificar o extraer los datos almacenados.
5.1.1 Redundancia y Duplicidad
Si se revisara una biblioteca de cintas, discos e información concerniente a las bases nos encontraríamos con que en estas existe una enorme redundancia y duplicación en los datos.
Generalmente esta duplicidad se genera con la finalidad de hacer más accesible la información o facilitar la reconstrucción de ésta en caso de perdida accidental. Al hablar de redundancia debemos hablar de NO redundancia, aunque es mejor, referirse a redundancia controlada o mínima en lugar de no redundancia.
Una base de datos bien organizada debe permitir una buena reestructuración al agregar nuevos tipos, es decir, esto no debe originar el volver a escribir los programas de aplicación, ni provocar complicaciones.
5.1.2 Independencia
Generalmente se habla de la independencia como un gran atributo de las bases de datos. La independencia se refiere a que los programas de aplicación y los datos que de ellos se sirven son mutuamente independientes. Esto significa que el modificar los programas no afecta los datos o su organización (claro que no siempre existe una buena independencia en los datos).
El software de base de datos debe proporcionar formas de hacer transformaciones según la estructura del archivo que le interesa al programador de aplicaciones en la estructura física que en verdad se almacena y viceversa. El grado de necesidad de que el programador de aplicaciones conozca los detalles de los datos físicos varía de un sistema a otro.
5.1.3 Características de una Base de Datos
Las bases de datos tienen muchas formas de organización pero deben tener determinadas características:
5.2 Organizaciones de Datos
Una base de datos es una colección de información. Y su característica principal es que los datos los organiza de acuerdo a modelos de datos.
Se considera la definición de Modelo de datos como "un conjunto de conceptos y de reglas de composición de esos conceptos que permite describir unos datos", es decir, proveen un marco teórico que sustenta una metodología bien definida para el almacenamiento y recuperación de la información.
En la práctica existen tres modelos principales de datos: el modelo jerárquico, el modelo red, y el modelo relacional. Este último esta relacionado con las bases de datos relacionales y el enfoque Entidad-Relación, al cual está enfocado este estudio.
Visual Basic es capaz de interactuar tanto con bases de datos relacionales, en particular en forma natural con MS-Access y con cualquier otro tipo de Bases de datos relacionales como Oracle, SQL Sever, etc. que soporte ODBC (Open Data Base Conectibity) y también en forma natural con algunas Xbases : Dbase III y IV, FoxPro, Paradox, Btrieve.
En el contexto de este curso nos referiremos al estudio de MS-Access como base de datos nativa de Visula Basic. Antes de pasar a estudiar Access como ambiente de base de datos relacional es necesario definir algunos conceptos sobre bases de datos relacionales.
5.2.1 Bases de Datos Relacionales
El modelo relacional data de 1970 (CODD-IBM-San José), está basado en conceptos muy sencillos. El modelo relacional tiene asociada una teoría que no puede ser separada del modelo: la teoría de la normalización de las relaciones. Esta teoría tiene por objeto eliminar los comportamientos anormales de las relaciones durante las actualizaciones. También permite eliminar los datos redundantes y facilita la comprensión de las relaciones semánticas entre los datos.
5.2.1.1 Los Conceptos Básicos del Modelo Relacional
Una entidad es un objeto que existe y puede distinguirse de otros objetos. Una entidad puede ser concreta, por ejemplo una persona o un libro, o abstracta, como un día festivo o un concepto. Una entidad identifica en forma unívoca al objeto que representa en el universo, por ejemplo Cuenta Corriente 143-2343-34-21.
Un conjunto de entidades es un grupo de entidades del mismo tipo. Por ejemplo, el conjunto de todas las personas que tienen una cuenta en el banco puede definirse como el conjunto de entidades CuentaCorrentistas del banco. Así mismo, el conjunto de entidades Cuenta podría representar el conjunto de todas las cuentas en un banco determinado. Las entidades pueden pertenecer a más de un conjunto, por ejemplo, la entidad Persona puede pertenecer a los conjuntos Empleado, Cliente, Asociado, etc.
Las entidades están representadas y tienen sentido por sus atributos. Los posibles atributos del conjunto de entidades CuentaCorrentista son Nombre, Rut, Calle, Número, Ciudad. Los valores permitidos para un atributo constituyen su dominio. El dominio de el atributo Nombre podría ser el conjunto de todas las cadenas de caracteres de una determinada longitud.
Fuera del marco teórico, un conjunto de entidades es lo que llamamos Tabla. Cada Columna en la tabla corresponde a un atributo, suele recibir el nombre de Campos. Cada Fila en la tabla corresponde a los datos de una entidad del mundo real, se le llama habitualmente Registro. La siguiente tabla ilustra esto:
Número cuenta |
Rut cliente |
Saldo |
Giros |
Dépositos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cuando se analiza un problema informático una de las primeras tareas es reconocer el universo de información. Si se pudiera almacenar y recuperar mágicamente toda la infomación que constituye el universo tendriamos resuelto nuestro problema. Sin embargo, es necesario dar una estructuración adecuda a la infomación para evitar los problemas de redundancia y duplicidad. Esta estructuración significa identificar y definir las entidades que costituyen el universo. Para ello se aplica una descomposición a al universo de modo que:
Si una tabla contiene un campo definido como edades de cargas familiares se podría definir para que contuviera una cadena de caracteres con esos valores: 5; 11; 18 lo que no sería correcto. En tal caso sería necesario definir una columna para carga o una tabla que permita almacenarlas.
Relaciones
Es la asociación entre varias entidades. Por ejemplo, es posible definir una relación que asocia al CuentaHabiente "Harris" con la cuenta 323. Esto especifica que Harris es un CuentaHabiente con la cuenta bancaria 323.
Un conjunto de relaciones es un grupo de relaciones del mismo tipo. Formalmente es una relación matemática de N mayor o igual que 2 (posiblemente idénticos) conjuntos de entidades. Por ejemplo, se puede definir la relación CtHabCta para notar la asociación entre los cuentahabientes y las cuentas bancarias. Una relación también puede tener atributos, por ejemplo, fecha podría ser un atributo del conjunto de relaciones CtHabCta; esto especifica la última vez que el CuentaHabiente tuvo acceso a su cuenta.
Una limitante importante es la de las cardinalidades de mapeo entre las distintas entidades, es decir, el Nº de entidades con las que puede asociarse otra entidad a través de una asociación. Para un conjunto binario de relaciones se tiene lo siguiente:
Relación |
Asociación |
Descripción |
Una a Una |
(1 : 1) |
Función inyectiva de A en B |
Una a Muchas |
(1 : n) |
Una entidad A está relacionada con varias entidades de B. |
Muchas a Una |
(n : 1) |
Muchas entidades de A está solo relaciona con una entidad de B. |
Muchas a Muchas |
(n : n) |
Varias entidades de A están relacionadas con varias entidades de B. |
A continuación se muestran grágicamente dichas asociaciones:
Otra limitante es la dependencia de existencia. Si X depende de Y, entonces si elimino Y también elimino X. Se dice que X es una entidad subordinada o débil y que Y es una entidad dominante o fuerte. Por ejemplo considere la entidad fuerte CuentaHabiente y la entidad débil Cuenta.
Como ya se ha mencionado anteriormente las llaves permiten identificar una entidad o un grupo. La llave está constituida por atributos (puede ser 1 o un grupo). Una entidad fuerte posee una llave primaria. Una llave primaria me permite identificar una entidad y la llave secundaria me permite identificar un grupo de entidades.
Corresponden a un atributo de una tabla relacionada que es llave primaria en una tabla principal, es decir, es el atributo de una entidad, que es clave primaria de otra.
Conjunto de reglas que se siguen para preservar las relaciones establecidas entre las tablas cuando se introducen o se agregan registros. Si se exige integridad referencial el SABDR (Sistema Administrador de Bases de Datos Relacionales) impedirá agregar registros a una tabla relacionada para la cual no hay un registro principal; también impedirá cambiar valores en una tabla principal cuando el resultado de la modificación implica dejar registros huérfanos en la tabla relacionada, así como eliminar registros cuando existen registros coincidentes en una tabla relacionada.
La aproximación por descomposición para concebir esquemas relacionales parte de una relación compuesta de todos los atributos, llamada la relación universal para descomponer después esta relación en sub relaciones que no padecen las anomalías anteriormente descritas. El proceso es un proceso de depuración sucesiva que debe lograr aislar unas entidades y unas asociaciones del mundo real. Debe estar realizado por un algoritmo a partir de una buena comprensión semántica de los datos.
Se puede definir una base de datos relacional como una base de datos que el usuario percibe como un conjunto de relaciones normalizadas que varían con el tiempo, de diversos grados. En otras palabras, el término base de datos relacional significa una base de datos para la cual los operadores a disposición del usuario operan sobre estructuras relacionales. No significa por fuerza que los datos estén almacenados en forma de tablas físicas.
En resumen, puede decirse que, en términos tradicionales, una relación se asemeja a un archivo, una tupla a un registro y un atributo a un campo .Sin embargo, estas correspondencia son a lo sumo aproximadas. Dicho de otra manera, las relaciones pueden considerarse archivos "altamente disciplinados". Esta disciplina se traduce en una simplificación considerable de las estructuras de datos que el usuario debe manejar, y, por tanto, en una simplificación correspondiente de los operadores necesarios para manipularlas.
Los conceptos de bases de datos relacionales constituyen una base robusta para el modelamiento de bases de datos que garantizan calidad en el almacenamiento y recuperación de la información. La utilización del modelo entidad relación permite obtener una estructura normalizada para la base de datos.