TEORA DE BASES DE DATOS RECOPILADO POR: FABIO HERNN CERN CALVO
DEFINICIN Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayora por documentos y textos impresos en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnolgico de campos como la informtica y la electrnica, la mayora de las bases de datos estn en formato digital (electrnico), que ofrece un amplio rango de soluciones al problema de almacenar datos. Existen programas denominados sistemas gestores de bases de datos, abreviados SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rpida y estructurada. Las propiedades de estos SGBD, as como su utilizacin y administracin, se estudian dentro del mbito de la informtica. Las aplicaciones ms usuales son para la gestin de empresas e instituciones pblicas. Tambin son ampliamente utilizadas en entornos cientficos con el objeto de almacenar la informacin experimental. Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios pases. Por ejemplo, en Espaa los datos personales se encuentran protegidos por la Ley Orgnica de Proteccin de Datos de Carcter Personal (LOPD).
OBJETIVOS DE LOS SISTEMAS DE BD Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visin abstracta de los datos, esto se logra escondiendo ciertos detalles de cmo se almacenan y mantienen los datos. TABLA: unidad donde se creara el conjunto de datos de nuestra BD. Estos datos estarn ordenados en columnas verticales. En este se define los campos y sus caractersticas de los mismos. Consulta: aqu definimos las preguntas que formularemos a la BD con el fin de extraer y presentar la informacin resultante de diferentes formas. FORMULARIO: elemento l forma de ficha que permite la gestin de los datos de una forma ms cmoda y ms atractiva. INFORME: permite reparar los registros de la BD de forma personalizada para imprimirlos. MACRO: conjunto de instrucciones que se pueden almacenar para automatizar tareas repetitivas. MODULAR: programa o conjunto de instrucciones en el lenguaje Visual Basic
ABSTRACCIN DE LA INFORMACIN Una base de datos es en esencia una coleccin de archivos relacionados entre s, de la cual los usuarios pueden extraer informacin sin considerar las fronteras de los archivos. Un objetivo importante de un sistema de base de datos es proporcionar a los usuarios una visin abstracta de los datos, es decir, el sistema esconde ciertos detalles de cmo se almacenan y mantienen los datos. Sin embargo para que el sistema sea manejable, los datos se deben extraer eficientemente. Existen diferentes niveles de abstraccin para simplificar la interaccin de los usuarios con el sistema; Interno, conceptual y externo, especficamente el de almacenamiento fsico, el del usuario y el del programador. Nivel fsico. Es la representacin del nivel ms bajo de abstraccin, en ste se describe en detalle la forma en como de almacenan los datos en los dispositivos de almacenamiento (por ejemplo, mediante sealadores o ndices para el acceso aleatorio a los datos). Nivel conceptual. El siguiente nivel ms alto de abstraccin, describe que datos son almacenados realmente en la base de datos y las relaciones que existen entre los mismos, describe la base de datos completa en trminos de su estructura de diseo. El nivel conceptual de abstraccin lo usan los administradores de bases de datos, quienes deben decidir qu informacin se va a guardar en la base de datos. Consta de las siguientes definiciones: 1. Definicin de los datos: Se describen el tipo de datos y la longitud de campo todos los elementos direccionales en la base. Los elementos por definir incluyen artculos elementales (atributos), totales de datos y registros conceptuales (entidades). 2. Relaciones entre datos: Se definen las relaciones entre datos para enlazar tipos de registros relacionados para el procesamiento de archivos mltiples. En el nivel conceptual la base de datos aparece como una coleccin de registros lgicos, sin descriptores de almacenamiento. En realidad los archivos conceptuales no existen fsicamente. La transformacin de registros conceptuales a registros fsicos para el almacenamiento se lleva a cabo por el sistema y es transparente al usuario. Nivel de visin. Nivel ms alto de abstraccin, es lo que el usuario final puede visualizar del sistema terminado, describe slo una parte de la base de datos al usuario acreditado para verla. El sistema puede proporcionar muchas visiones para la misma base de datos. La interrelacin entre estos tres niveles de abstraccin se ilustra en la siguiente figura.
MODELOS DE DATOS Modelo: Construccin mental del mundo real Modelo de datos: Conjunto de herramientas conceptuales para describir la representacin de la informacin en trminos de datos. Esquema: La descripcin especfica de un determinado mini-mundo en trminos de un modelo de datos se denomina esquema de datos o esquema del mundo.
Ejemplar: Un ejemplar de un elemento de un esquema son los datos que en un determinado momento se encuentra almacenado en el citado elemento del esquema. La coleccin de ejemplares de todos los elementos de un esquema en un momento determinado constituye el esquema de los datos. Modelo de datos: Relaciones entre modelo, esquema y ejemplar.
USUARIOS
Gerente Cajero Usuario real
ENTIDAD/RELACIN
RELACIONAL
Informix Oracle Acces MySql SQLServer
SGDB
BD
La parte esttica de un modelo de datos es el esquema.
Nombre Apellido Cedula
TABLA
Edad
TUPLA (toda la fila)
Atributo (Nombre de la columna)
INSTANCIAS Y ESQUEMAS Las bases de datos van cambiando a lo largo del tiempo conforme a la informacin que se inserta y se elimina. El conjunto de datos que la base de datos tiene almacenado en un momento dado se denomina INSTANCIA y la estructura general que sigue la base de datos se denomina ESQUEMA. Las bases de datos tienen varios ESQUEMAS divididos segn los niveles de abstraccin: El esquema conceptual. El esquema lgico. El esquema fsico.
Metodologa de diseo de las Bases de Datos Anlisis de Requerimientos
Modelo Conceptual
Tambin se conoce como de modelo entidad relacin A este nivel no se tiene en cuenta el SGDB.
Normalizacin: Sirve para validar el modelo relacional. En este punto se pueden tener diferentes esquemas lgicos. La normalizacin se aplica al modelo relacional.
Modelo Lgico
Tambin se conoce como de modelo relacional A este nivel se tiene en cuenta el SGDB.
Modelo Fsico
Es el esquema fsico, es la Base de Datos real
SQL (LDD) Ej.: cuando se crean ndices. LDD: Lenguaje de definicin de datos. LCD: Lenguaje control de datos. Puede mltiples fsicos. de
haber modelos
Esquema conceptual 1. Identificar las entidades 2. Identificar las relaciones 3. Identificar los atributos y asociarlos a entidades o a las relaciones 4. Determinar los dominios de los atributos 5. Identificar los identificadores 6. Determinar las jerarquas de generalizacin si las hay 7. Dibujar el diagrama entidad relacin 8. Revisar el esquema conceptual local con el usuario correspondiente
Nota: Las relaciones pueden tener atributos.
Diseo Lgico 1. Construir los esquemas lgicos para cada vista de usuario y validarlos Convertir los esquemas conceptuales en lgicos Validar cada esquema mediante la normalizacin Validar cada esquema frente a las transacciones de usuario Representarlo en un esquema relacional Definir las restricciones de integridad Revisar cada esquema lgico con el usuario correspondiente
2. Construir y validar esquema lgico global Diseo Fsico 1. Traducir el esquema lgico global para el SGDB Disear el esquema lgico global para el SGDB especifico Disear las relaciones de negocio para el SGDB especifico Mezclar los esquemas lgicos locales en un esquema global Validar el esquema lgico global Estudiar el crecimiento futuro Representar el esquema lgico global Revisar el esquema lgico global con los usuarios y el desarrollador
2. Disear la representacin fsica Analizar las transacciones Escoger las organizaciones de archivo Escoger los ndices secundarios Considerar la introduccin de redundancias controladas Estimar la necesidad de espacio en disco
3. Disear los mecanismos de seguridad Disear las vistas de los usuarios Disear las reglas de acceso
4. Monitorizar y afinar el sistema
LENGUAJE DE DEFINICIN DE DATOS DDL El lenguaje de denticin de datos (LDD) expresa un conjunto de deniciones utilizadas para la especicacin de los esquemas de las BBDD y otras propiedades de los datos. El lenguaje de almacenamiento y denticin de datos es un tipo especial de LDD que determina mediante un conjunto de instrucciones la estructura de almacenamiento y los mtodos de acceso usados por el SGBD. El LDD obtiene como entrada algunas instrucciones y genera una salida que ser colocada en el diccionario de datos, que contiene metadatos (es decir, datos sobre datos). El diccionario es un tipo especial de tabla a la que slo tiene acceso y puede actualizar el SGBD. El SGBD consulta el diccionario antes de leer o modicar los datos reales. El LDD proporciona facilidades para especicar las restricciones de consistencia que deben de cumplir los valores de los datos almacenados en la BD. Los SGBDs comprueban tales restricciones cada vez que la BD sufre alguna modicacin, con lo cual se centran en las restricciones de integridad que puedan comprobarse con una sobrecarga mnima: Restricciones de dominio. Son la forma ms elemental de restriccin, lo que permite al SGBD comprobarlas fcilmente. Se debe asociar un dominio de posibles valores a cada atributo (Ej.: tipos enteros, tipos de carcter). Integridad referencial. Hay casos en los que se desea asegurar que un valor que aparece en una relacin para un conjunto de atributos aparezca tambin en otra relacin para otro conjunto de atributos (integridad referencial). Asertos. Un aserto es cualquier condicin que la BD debe satisfacer siempre. Las restricciones de integridad y de dominio son formas especiales de asertos. Autorizacin. Pueden asignarse diferentes autorizaciones a los diferentes usuarios en cuanto al tipo de acceso a los datos. Las modalidades de autorizaciones son: De lectura. Slo permite la lectura de los datos. De insercin. Permite insertar nuevos datos, pero no modicar los existentes. De actualizacin. Permite modicar los datos, pero no eliminarlos. De eliminacin. Permite eliminar los datos. A cada usuario se le puede asignar todos, ninguno o una combinacin de las diferentes autorizaciones. Cuando se viola cualquier restriccin de integridad, normalmente, se rechaza la accin que ha provocado dicha violacin.
LENGUAJE DE MANIPULACIN DE DATOS DML Es un lenguaje que permite a los usuarios acceder a los datos almacenados en la BD o manipularlos. Los
posibles tipos de accesos son: Recuperacin de la informacin. Inserccin de nueva informacin. Borrado de informacin. Modicacin de la informacin. Existen dos tipos de LMDs: LMDs procedimentales, en los que el usuario debe especicar qu datos se necesitan y cmo obtenerlos. LMDs declarativos o no procedimentales, en los que el usuario slo debe especicar qu datos se necesitan. La parte de los LMDs implicada en la recuperacin de datos se denomina lenguaje de consultas (siendo una consulta una instruccin que solicita la recuperacin de informacin). Los niveles de abstraccin tambin se aplican en la manipulacin de datos. En el nivel fsico se denen los algoritmos de acceso a los datos, mientras que los niveles superiores se encarga de facilitar el uso de la base de datos al usuario. El objetivo es permitir que los usuarios interacten de manera eciente con el sistema. El componente procesador de consultas del SGBD se encarga de traducir las consultas LMD a secuencias de acciones en el nivel fsico. SISTEMAS GESTORES DE BD (SGBD) Caractersticas de los SGBD Manejan grandes cantidades de informacin. Denen estructuras para el almacenamiento de la misma y proveen de mecanismos para su manipulacin. Deben de garantizar la abilidad de la informacin almacenada tanto lgica como fsicamente. Ante concurrencia de acceso a los datos el sistema debe evitar posibles resultados anmalos. Propsito de los SGBD Antes de la aparicin de los sistemas de gestin de bases de datos las organizaciones guardaban la informacin en cheros del sistema operativo. Para poder manejar la informacin se van desarrollando diferentes programas de aplicacin, segn surgen diferentes necesidades, cada uno de los cuales tendr una funcin especca. As, con el paso del tiempo, se van aadiendo ms cheros y programas al sistema. Este mecanismo presenta una serie de inconvenientes: Redundancia e inconsistencia de los datos. Es posible que los datos estn duplicados en varios archivos, esto provoca un aumento en los costes de acceso y almacenamiento; adems puede que las diferentes copias de un mismo dato no coincidan. Dicultad en el acceso a los datos. Cada vez que surge una nueva necesidad debemos crear nuevas aplicaciones o realizar los clculos a mano. Ninguna de estas dos opciones resulta una forma
rpida y eciente de acceso a los datos. Aislamiento de datos. Como los datos estn dispersos por varios archivos, y los archivos pueden estar en diferentes formatos, es difcil escribir nuevos programas para recuperar los datos necesarios Problemas de integridad. Los valores de los datos deben cumplir ciertas normas o restricciones. Los desarrolladores hacen cumplir estas restricciones aadiendo el cdigo correspondiente en los diversos programas, lo cual es complicado. Problemas de atomicidad. Se pretende asegurar que, en caso de fallo, los datos recuperen el estado que tenan antes de producirse el fallo. Resulta difcil asegurar la atomicidad en los sistemas convencionales de procesamiento de cheros. Anomalas en el acceso concurrente. Muchos sistemas permiten que varios usuarios actualicen los datos de forma concurrente y esto puede dar lugar a problemas de consistencia. Sera necesario alguna forma de supervisin. Problemas de seguridad. No todos los usuarios de un sistema de bases de datos deben poder acceder a toda la informacin. Todas estas dicultades, entre otras, motivaron el desarrollo de los sistemas de gestin de bases de datos. ADMINISTRADOR DE BASES DE DATOS La persona que tiene un control centralizado tanto de los datos como de los programas que tienen acceso a esos datos, se denomina administrador de BBDD (ABD). Sus funciones son: La denicin del esquema original de la BD. La denicin de la estructura y del mtodo de acceso. La modicacin del esquema y de la organizacin fsica para, por ejemplo, mejorar el rendimiento. La concesin de autorizaciones, para el acceso a los datos, a los diferentes usuarios. El mantenimiento rutinario. Como por ejemplo realizar copias de seguridad, asegurarse de que se dispone de suciente espacio en el disco, supervisar los trabajos ejecutados sobre la BD por los diferentes usuarios, etc.
USUARIOS DE LAS BASES DE DATOS Podemos definir a los usuarios como toda persona que tenga todo tipo de contacto con el sistema de base de datos desde que ste se disea, elabora, termina y se usa. Ingenuo. Es el usuario ms bsico o aquel que interacta con el sistema a travs de las interfaces que proveen las aplicaciones (estructuradas). Ejemplo: un cajero de un banco. Programador de Aplicaciones. Es el constructor de los programas.
Sofisticados. Es aquel que hace requerimientos de informacin no anticipados por las aplicaciones y por lo tanto, requiere de un lenguaje de consulta para interactuar con los datos. Administrador de Base de Datos. Es el responsable de la definicin lgica y fsica de los datos almacenados y de su contenido. Otra clasificacin mejor explicada sera: Programadores de aplicaciones. Los profesionales en computacin que interactan con el sistema por medio de llamadas DML (Lenguaje de Manipulacin de Datos), las cuales estn incorporadas en un programa escrito en un lenguaje de programacin (Por ejemplo, COBOL, PL/I, Pascal, C, etc.) Usuarios sofisticados. Los usuarios sofisticados interactan con el sistema sin escribir programas. En cambio escriben sus preguntas en un lenguaje de consultas de base de datos. Usuarios especializados. Algunos usuarios sofisticados escriben aplicaciones de base de datos especializadas que no encajan en el marco tradicional de procesamiento de datos. Usuarios ingenuos. Los usuarios no sofisticados interactan con el sistema invocando a uno de los programas de aplicacin permanentes que se han escrito anteriormente en el sistema de base de datos, podemos mencionar al usuario ingenuo como el usuario final que utiliza el sistema de base de datos sin saber nada del diseo interno del mismo por ejemplo: un cajero.
ESTRUCTURA DEL SISTEMA GLOBAL Un sistema de base de datos se encuentra dividido en mdulos cada uno de los cuales controla una parte de la responsabilidad total de sistema. En la mayora de los casos, el sistema operativo proporciona nicamente los servicios ms bsicos y el sistema de la base de datos debe partir de esa base y controlar adems el manejo correcto de los datos. As el diseo de un sistema de base de datos debe incluir la interfaz entre el sistema de base de datos y el sistema operativo. Los componentes funcionales de un sistema de base de datos, son: Gestor de archivos.
Gestiona la asignacin de espacio en la memoria del disco y de las estructuras de datos usadas para representar informacin.
Manejador de base de datos. Sirve de interfaz entre los datos y los programas de aplicacin. Procesador de consultas. Traduce las proposiciones en lenguajes de consulta a instrucciones de bajo nivel. Adems convierte la solicitud del usuario en una forma ms eficiente. Compilador de DDL. Convierte las proposiciones DDL en un conjunto de tablas que contienen metadatos, estas se almacenan en el diccionario de datos. Archivo de datos. En l se encuentran almacenados fsicamente los datos de una organizacin. Diccionario de datos. Contiene la informacin referente a la estructura de la base de datos. ndices. Permiten un rpido acceso a registros que contienen valores especficos. Una forma grfica de representar los componentes antes mencionados y la relacin que existe entre ellos sera la siguiente. ENTIDADES Y CONJUNTO DE ENTIDADES Entidad: cualquier objeto o elemento acerca del cual se puede almacenar informacin en una BD. Normalmente una entidad es aquella que posee mltiples propiedades que son sus atributos.
persona Entidad
Las entidades pueden ser de dos tipos: regulares o dbiles. Las regulares son las que tienen existencia por si mismas sin depender de otras, las dbiles su existencia depende de otra entidad.
Entidad regular
Entidad dbil
Representacin de entidad fuerte y dbil
RELACIONES Y CONJUNTO DE RELACIONES Son las que me representan las asociaciones entre las entidades, se dan entre dos o ms entidades. Se representan con el rombo y dentro de l, el nombre de la relacin.
(1,n) persona tiene (1,n) empleo
ATRIBUTOS Describes cualidades de las entidades o de las relaciones
Nombre del atributo Nombre del atributo
R1
atrib. identi
: Identificador
signatura direccion barrio
: Compuesto
telefono
: Multivaluado : Calculado derivado
edad
Segundo nombre
: Opcional : Candidata (Entidades dbiles)
atributo
RESTRICCIONES DE ASIGNACIN (MAPPING). Una planificacin E-R de una empresa puede definir ciertas restricciones a las cuales deben ajustarse los contenidos de una BDD. Una restriccin importante es la de cardinalidades de asignacin que expresan el nmero de entidades con las que se puede asociar otra entidad mediante un conjunto de relaciones. Las cardinalidades de asignacin pueden ser una de las siguientes:
(0,100) estudiante
(1,8)
cur
R2
asignatura
CLAVES O LLAVES Claves primarias Para entender lo que son las claves forneas, tal vez sea necesario entender primero lo que son las claves primarias. Es un hecho que las claves juegan un papel muy importante no slo en MySQL, sino en cualquier base de datos relacional. De manera simple, las claves proporcionan una manera rpida y eficiente de buscar datos en una tabla, adems de que permiten preservar la integridad de los datos. Una clave candidata es un campo, o una combinacin de campos, que identifican de manera nica un registro de una tabla. stas no pueden contener valores nulos, y su valor debe ser nico. Una clave primaria es una clave candidata que ha sido diseada para identificar de manera nica a los registros de una tabla a travs de toda la estructura de la base de datos. La seleccin de una clave primaria es muy importante en el diseo de una base de datos, ya que es un elemento clave de los datos que facilita la unin de tablas y el concepto total de una base de datos relacional. Las claves primarias deben ser nicas y no nulas, de manera que garanticen que una fila de una tabla pueda ser siempre referenciada a travs de su clave primaria. MySQL requiere que se especifique NOT NULL para las columnas que se van a utilizar como claves primarias al momento de crear una tabla.
Claves forneas e integridad referencial Podemos decir de manera simple que integridad referencial significa que cuando un registro en una tabla haga referencia a un registro en otra tabla, el registro correspondiente debe existir. Por ejemplo, consideremos la relacin entre una tabla cliente y una tabla venta.
+---------------+ | cliente | +---------------+ | id_cliente | | nombre | +---------------+ +---------------+ | venta | +---------------+ | id_factura | | id_cliente | | cantidad | +---------------+
Para poder establecer una relacin entre dos tablas, es necesario asignar un campo en comn a las dos tablas. Para este ejemplo, el campo id_cliente existe tanto en la tabla cliente como en la tabla venta. La mayora de las veces, este campo en comn debe ser una clave primaria en alguna de las tablas. Vamos a insertar algunos datos en estas tablas. Tabla cliente
+--------------+--------------------+ | id_cliente | nombre | +-------------+------------------+ | 1 | Juan penas | | 2 | Pepe el Toro | Tabla venta +---------------+--------------+-------------+ | id_factura | id_cliente | cantidad | +---------------+--------------+-------------+ | 1 | 1 | 23 | | 2 | 3 | 39 | | 3 | 2 | 81 | +---------------+--------------+-------------+
Hay dos registros en la tabla cliente, pero existen 3 id_cliente distintos en la tabla venta. Habamos dicho que las dos tablas se relacionan con el campo id_cliente, por lo tanto, podemos decir que Juan Penas tiene una cantidad de 23, y Pepe el Toro 81, sin embargo, no hay un nombre que se corresponda con el id_cliente 3. Las relaciones de claves forneas se describen como relaciones padre/hijo (en nuestro ejemplo, cliente es el padre y venta es el hijo), y se dice que un registro es hurfano cuando su padre ya no existe. Cuando en una base de datos se da una situacin como esta, se dice que se tiene una integridad referencial pobre (pueden existir otra clase de problemas de integridad). Generalmente esto va ligado a un mal diseo, y puede generar otro tipo de problemas en la base de datos, por lo tanto debemos evitar esta situacin siempre que sea posible. En el pasado, MySQL no se esforzaba en evitar este tipo de situaciones, y la responsabilidad pasaba a la aplicacin. Para muchos desarrolladores, esta no era una situacin del todo grata, y por lo tanto no se consideraba a MySQL para ser usado en sistemas "serios". Por supuesto, esta fue una de las cosas ms solicitadas en las anteriores versiones de MySQL; que se tuviera soporte para claves forneas, para que MySQL mantenga la integridad referencial de los datos. Una clave fornea es simplemente un campo en una tabla que se corresponde con la clave primaria de otra tabla. Para este ejemplo, el campo id_cliente en la tabla venta es la clave fornea. Ntese que este campo se corresponde con el campo id_cliente en la tabla cliente, en dnde este campo es la clave primaria. Las claves forneas tienen que ver precisamente con la integridad referencial, lo que significa que si una clave fornea contiene un valor, ese valor se refiere a un registro existente en la tabla relacionada.