1 Sistemas Gestores de Bases de Datos
1.1 Objetivo de las Bases de Datos
Un sistema gestor de bases de datos (SGBD) consiste en una colección de datos interrelacionados y un conjunto de programas para acceder a dichos datos. La colección de datos, normalmente denominada base de datos, contiene información relevante para una empresa. El objetivo principal de un SGBD es proporcionar una forma de almacenar y recuperar la información de una base de datos de manera que sea tanto práctica como eficiente.
Los sistemas de bases de datos se diseñan para gestionar grandes cantidades de información. La gestión de los datos implica tanto la definición de estructuras para almacenar la información como la provisión de mecanismos para la manipulación de la información. Además los sistemas de base de datos deben proporcionar la fiabilidad de la información almacenada, a pesar de las caídas del sistema o los intentos de acceso sin autorización.
Una base de datos de puede definir como:
- Una colección interrelacionada de datos, almacenados en un conjunto sin redundancias innecesarias cuya finalidad es la de servir a una o mas aplicaciones de la manera mas eficiente.
- Conjunto de datos organizados con características afines entre sí, que identifican a un ente en especial, cualquier colección de información interrelacionada, es una base de datos.
- Conjunto autodescriptivo de registros integrados; autodescriptivo ya que puede contener información del usuario, descripción de la Base de Datos, que nos permiten representar las relaciones entre los datos. En donde la información que se tiene almacenada esta disponible para todos los usuarios del sistema, en los que los datos redundantes pueden eliminarse o al menos minimizarse.
Los componentes de una base de datos son:
Los datos: El componente fundamental de una base de datos son los datos que están interrelacionados entre si, formando un conjunto con un mínimo de redundancias.
El software: los datos, para que puedan ser utilizados por diferentes usuarios y diferentes aplicaciones, deben estar estructurados y almacenados de forma independiente de las aplicaciones. Para ello se utiliza un software o conjunto de programas que actúa de interfaz entre los datos y las aplicaciones. A este software se le denomina Sistema de Gestión de Base de Datos (SGBD). El SGBD crea y organiza la base de datos, y además atiende todas las solicitudes de acceso hechas a la base de datos tanto por los usuarios como por las aplicaciones.
Recurso Humano:
- Informático: son los profesionales que definen y preparan la base de datos.
- Usuarios: Son los que tienen acceso a la base de datos para ingresar o manipular la información contenida en esta, dependiendo del nivel de usuario o control de seguridad establecido.
1.2 Áreas de Aplicación de los Sistemas de Bases de datos
Las bases de datos son ampliamente usadas. Las siguientes son algunas de sus aplicaciones más representativas:
Banca: Para llevar el control de la información de los clientes, cuentas, prestamos y todas las transacciones bancarias.
Líneas aéreas: Para llevar el control de todas las planificaciones de vuelos de una aerolínea y las reservaciones hechas por los clientes. Las líneas aéreas fueron de las primeras en usar las base de datos de forma distribuida geográficamente (las terminales situadas en todo el mundo accedían al sistema de base de datos centralizado a través de las líneas telefónicas y otras redes de datos).
Escuelas: Para llevar el control de los estudiantes, horarios, cursos, inscripciones y calificaciones.
Transacciones de tarjetas de crédito: Para llevar el control de compras con tarjeta de crédito y generación mensual de estados de cuenta de los usuarios.
Telecomunicaciones: Para guardar un registro de las llamadas realizadas, generación mensual de factures, control del saldo de las tarjetas de prepago y almacenar información sobre las redes de comunicaciones.
Finanzas: Para almacenar información sobre grandes empresas, ventas y compras de documentos formales financieros, como bolsa y bonos.
Ventas: Para tener el control de la información de los clientes, productos y la información de las ventas generadas de forma diaria o mensual según el control que se desee tener.
Producción: Para la gestión de la cadena de producción, seguimiento de la producción y control de inventarios en almacén.
Recursos humanos: Para llevar el control de información sobre los empleados, salaries, impuestos y con esto poder generar la nómina.
1.3 Modelos de datos
Bajo la estructura de la base de datos se encuentra el modelo de datos: una colección de herramientas conceptuales para describir los datos, las relaciones, la semántica y las restricciones de consistencia.
Dentro del modelo de datos se encuentran:
Modelo Entidad-relación: El modelo de datos entidad-relación (E-R) 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 estos objetos. Una entidad es una cosa u objeto en el mundo real que es distinguible de otros objetos.
Las entidades se describen en una base de datos mediante un conjunto de atributos. Una relación es una asociación entre varias entidades.
La estructura lógica general de una base de datos se puede expresar gráficamente mediante un diagrama ER, que consta de los siguientes componentes:
Rectángulos, que representan conjuntos de entidades. Elipses, que representan atributos.Rombos, que representan relaciones entre conjuntos de entidades.Líneas, que unen los atributos con los conjuntos de entidades y los conjuntos de entidades con las relaciones.
Ejemplo de un diagrama entidad-relación (Figura 1.1).
Modelo Relacional.
En el modelo relacional se utiliza un grupo de tablas para representar los datos y las relaciones entre ellos. Cada tabla está compuesta por varias columnas, y cada columna tiene un nombre único.
El modelo relacional es un ejemplo de un modelo basado en registros. Los modelos basados en registros se denominan así porque la base de datos se encuentra en registros de formato fijo de varios tipos. Cada tabla contiene registros de un tipo particular. Cada tipo de registro define un número fijo de campos, o atributos. Las columnas de la tabla corresponden a los atributos del tipo de registro.
El modelo de datos relacional es el modelo de datos más ampliamente usado, y una amplia mayoría de sistemas de bases de datos actuales se basan en el modelo relacional.
El modelo relacional se encuentra a un nivel de abstracción inferior al modelo de datos E-R (Entidad-Relación). Los diseños de bases de datos a menudo se realizan en el modelo E-R, y después se traducen al modelo relacional.
Modelo Orientado a Objetos.
El modelo orientado a objetos se puede observar como una extensión del modelo E-R con las nociones de encapsulación, métodos (funciones) e identidad de objeto. El modelo de datos relacional orientado a objetos combina las características del modelo de datos orientado a objetos y el modelo de datos relacional.
Los modelos de datos semiestructurados permiten la especificación de datos donde los elementos de datos individuales del mismo tipo pueden tener diferentes conjuntos de atributos.
Esto es diferente de los modelos de datos mencionados anteriormente, en los que cada elemento de datos de un tipo particular debe tener el mismo conjunto de atributos. El lenguaje de marcas extensible (XML, eXtensible Markup Language) se usa ampliamente para representar datos semi-estructurados.
Históricamente, otros dos modelos de datos, el modelo de datos de red y el modelo de datos jerárquico, precedieron al modelo de datos relacional. Estos modelos estuvieron ligados fuertemente a la implementación subyacente y complicaban la tarea del modelado de datos. Como resultado se usan muy poco actualmente, excepto en el código de bases de datos antiguo que aún está en servicio en algunos lugares.
1.4 Arquitectura del Sistema Gestor de Bases de datos
La mayoría de usuarios de un sistema de bases de datos no están situados actualmente junto al sistema de bases de datos, sino que se conectan a él a través de una red.
Se puede diferenciar entonces entre las máquinas cliente, en donde trabajan los usuarios remotos de la base de datos, y las máquinas servidor, en las que se ejecuta el sistema de bases de datos.
Las aplicaciones de bases de datos se dividen usualmente en dos o tres partes, como se ilustra en la Figura 1.2. En una arquitectura de dos capas, la aplicación se divide en un componente que reside en la máquina cliente, que llama a la funcionalidad del sistema de bases de datos en la máquina servidor mediante instrucciones del lenguaje de consultas. Los estándares de interfaces de programas de aplicación como ODBC y JDBC se usan para la interacción entre el cliente y el servidor.
En cambio, en una arquitectura de tres capas, la máquina cliente actúa simplemente como frontal y no contiene ninguna llamada directa a la base de datos. En su lugar, el cliente se comunica con un servidor de aplicaciones, usualmente mediante una interfaz de formularios.
El servidor de aplicaciones, a su vez, se comunica con el sistema de bases de datos para acceder a los datos.
La lógica de negocio de la aplicación, que establece las acciones a realizar bajo determinadas condiciones, se incorpora en el servidor de aplicaciones, en lugar de ser distribuida a múltiples clientes. Las aplicaciones de tres capas son más apropiadas para grandes aplicaciones, y para las aplicaciones que se ejecutan en World Wide Web.
1.5 Niveles de abstracción
Para que el sistema sea útil debe recuperar los datos eficientemente. Esta preocupación ha conducido al diseño de estructuras de datos complejas para la representación de los datos en la base de datos. Como muchos usuarios de sistemas de bases de datos no están familiarizados con computadores, los desarrolladores esconden la complejidad a los usuarios a través de varios niveles de abstracción para simplificar la interacción de los usuarios con el sistema, en la figura 1.3, se esquematizan los tres niveles de abstracción de base de datos. A continuación se definen los principales niveles de abstracción:
Nivel físico. El nivel más bajo de abstracción describe cómo se almacenan realmente los datos. En el nivel físico se describen en detalle las estructuras de datos complejas de bajo nivel.
En el nivel físico, un registro cliente, cuenta o empleado se puede describir como un bloque de posiciones almacenadas consecutivamente (por ejemplo, palabras o bytes). El compilador del lenguaje esconde este nivel de detalle a los programadores. Análogamente, el sistema de base de datos esconde muchos de los detalles de almacenamiento de nivel inferior a los programadores de bases de datos. Los administradores de bases de datos pueden ser conscientes de ciertos detalles de la organización física de los datos.
Nivel lógico. El siguiente nivel más alto de abstracción describe qué datos se almacenan en la base de datos y qué relaciones existen entre esos datos. La base de datos completa se describe así en términos de un número pequeño de estructuras relativamente simples.
En el nivel lógico cada registro de este tipo se describe mediante una definición de tipo y se define la relación entre estos tipos de registros. Los programadores, cuando usan un lenguaje de programación, trabajan en este nivel de abstracción. De forma similar, los administradores de bases de datos trabajan habitualmente en este nivel de abstracción.
Nivel de vistas. El nivel más alto de abstracción describe sólo parte de la base de datos completa. Muchos usuarios del sistema de base de datos no necesitan toda esta información. En su lugar, tales usuarios necesitan acceder sólo a una parte de la base de datos. Para que su interacción con el sistema se simplifique, se define la abstracción del nivel de vistas.
En el nivel de vistas, los usuarios de computadoras ven un conjunto de programas de aplicación que esconden los detalles de los tipos de datos. Análogamente, en el nivel de vistas se definen varias vistas de una base de datos y los usuarios de la misma ven única y exclusivamente esas vistas. Además de esconder detalles del nivel lógico de la base de datos, las vistas también proporcionan un mecanismo de seguridad para evitar que los usuarios accedan a ciertas partes de la base de datos. Por ejemplo, los cajeros de un banco ven únicamente la parte de la base de datos que tiene información de cuentas de clientes; no pueden acceder a la información referente a los sueldos de los empleados.
1.6 Tipos de usuarios
Un objetivo principal de un sistema de bases de datos es recuperar información y almacenar nueva información en la base de datos. Las personas que trabajan con una base de datos se pueden catalogar como usuarios de bases de datos o como administradores de bases de datos, los cuales se describen a continuación.
1.6.1 Usuarios de bases de datos e interfaces de usuario
Hay cuatro tipos diferentes de usuarios de un sistema de base de datos, diferenciados por la forma en que ellos esperan interactuar con el sistema.
- Usuarios normales.
- Programadores de aplicaciones.
- Los usuarios sofisticados.
- Usuarios especializados.
Usuarios normales. Son usuarios no sofisticados que interactúan con el sistema mediante la invocación de alguno de los programas de aplicación. Por ejemplo considere que un usuario desea consultar su saldo a través de la web. Tal usuario únicamente puede acceder a un formulario donde introduce su número de cuenta y clave de autentificación, en ese momento un programa de aplicación en el servidor Web verifica su número de cuenta y clave, si son validos entonces recuera el saldo de la cuenta y muestra la información al usuario.
La interfaz de usuario para los usuarios normales en este caso es una interfaz de formularios, donde el usuario solo puede llenar y realizar las acciones que se le indiquen en el formulario. Los usuarios normales pueden también simplemente leer informes generados por la base de datos.
Programadores de aplicaciones. Son profesionales informáticos que escriben programas de aplicación. Los programadores de aplicación pueden elegir entre muchas herramientas para desarrollar interfases de usuario, las interfases desarrolladas son las que deben tener interacción con la base de datos.
Los usuarios sofisticados. Son los usuarios que interactúan con el sistema sin programas escritos, se encargan de formar sus consultas en un lenguaje de consulta de base de datos. Cada una de estas consultas se envía al procesador de consultas, cuya función es transformar que se encuentran en un lenguaje de manipulación de datos (LMD) a instrucciones que el gestor de almacenamiento entienda. Los analistas que envían las consultas para explorar los datos en la base de datos entran en esta categoría.
Existen herramientas de procesamiento analítico que le permiten a los analistas simplificar su trabajo, permitiendo una selección muy específica de registros, examinar datos con más detalle, recopilación de datos que les ayudan a encontrar ciertas clases de patrones de datos existentes dentro de la base de datos que pueden ser un auxiliar para la toma de decisiones en una empresa.
Usuarios especializados. Son usuarios sofisticados que escriben aplicaciones de base de datos especializadas que no son adecuadas en el marco de procesamiento de datos tradicional, dentro de estas están los sistemas de diseño asistido por computadora, sistemas de base de conocimientos y sistemas expertos, sistemas que almacenan los datos con tipos de datos complejos (por ejemplo, datos gráficos y datos de audio) y sistemas de modelado del entorno.
1.6.2 Administrador de la base de datos
Una de las principales razones de usar SGBDs (Sistemas Manejadores de Base de Datos) es tener un control centralizado tanto de los datos como de los programas que acceden a esos datos. La persona que tiene este control central sobre el sistema se llama administrador de la base de datos (ABD). Las funciones del ABD incluyen las siguientes:
Definición del esquema. El ABD crea el esquema original de la base de datos escribiendo un conjunto de instrucciones de definición de datos en el LDD.
Definición de la estructura y del método de acceso.
Modificación del esquema y de la organización física. Los ABD realizan cambios en el esquema y en la organización física para reflejar las necesidades cambiantes de la organización, o para alterar la organización física para mejorar el rendimiento.
Concesión de autorización para el acceso a los datos. La concesión de diferentes tipos de autorización
permite al administrador de la base de datos determinar a qué partes de la base de datos puede acceder cada usuario. La información de autorización se mantiene en una estructura del sistema especial que el sistema de base de datos consulta cuando se intenta el acceso a los datos en el sistema.
Mantenimiento rutinario. Algunos ejemplos de actividades rutinarias de mantenimiento del administrador de la base de datos son:
- Copia de seguridad periódica de la base de datos, bien sobre cinta o sobre servidores remotos, para prevenir la pérdida de datos en caso de desastres como inundaciones.
- Asegurarse de que haya suficiente espacio libre en disco para las operaciones normales y aumentar el espacio en disco según sea necesario.
- Supervisión de los trabajos que se ejecuten en la base de datos y asegurarse de que el rendimiento no se degrada por tareas muy costosas iniciadas por algunos usuarios.
1.7 Tipos de lenguajes
Un sistema de bases de datos proporciona un lenguaje de definición de datos para especificar el esquema de la base de datos y un lenguaje de manipulación de datos para expresar las consultas a la base de datos y las modificaciones.
1.7.1 Lenguaje de definición de datos
Un esquema de base de datos se especifica mediante un conjunto de definiciones expresadas mediante un lenguaje especial llamado lenguaje de definición de datos (LDD).
Por ejemplo, la siguiente instrucción en el lenguaje SQL define la tabla clientes:
create table clientes
(
clave_cliente char(10),
nombre char(20)
)
La ejecución de la instrucción LDD (Lenguaje de Definición de Datos) anterior crea la tabla clientes. Además, actualiza un conjunto especial de tablas denominado diccionario de datos o directorio de datos.
Un diccionario de datos contiene metadatos, es decir, datos acerca de los datos. El esquema de una tabla es un ejemplo de metadatos. Un sistema de base de datos consulta el diccionario de datos antes de leer o modificar los datos reales.
Especificamos el almacenamiento y los métodos de acceso usados por el sistema de bases de datos por un conjunto de instrucciones en un tipo especial de LDD denominado lenguaje de almacenamiento y definición de datos. Estas instrucciones definen los detalles de implementación de los esquemas de base de datos, que se ocultan usualmente a los usuarios.
1.7.2 Lenguaje de manipulación de datos
La manipulación de datos es:
La recuperación de información almacenada en la base de datos.La inserción de información nueva en la base de datos.El borrado de información de la base de datos.La modificación de información almacenada en la base de datos.
Un lenguaje de manipulación de datos (LMD) es un lenguaje que permite a los usuarios acceder o manipular los datos organizados mediante el modelo de datos apropiado. Hay dos tipos básicamente:
- LMDs procedimentales. Requieren que el usuario especifique qué datos se necesitan y cómo obtener esos datos.
- LMDs declarativos (también conocidos como LMDs no procedimentales). Requieren que el usuario especifique qué datos se necesitan sin especificar cómo obtener esos datos.
Los LMDs declarativos son más fáciles de aprender y usar que los LMDs procedimentales. Sin embargo, como el usuario no especifica cómo conseguir los datos, el sistema de bases de datos tiene que determinar un medio eficiente de acceder a los datos. El componente LMD del lenguaje SQL es no procedimental.
Una consulta es una instrucción de solicitud para recuperar información. La parte de un LMD que implica recuperación de información se llama lenguaje de consultas.
Aunque técnicamente sea incorrecto, en la práctica se usan los términos lenguaje de consultas y lenguaje de manipulación de datos como sinónimos.
Esta consulta en el lenguaje SQL encuentra el nombre del cliente cuyo identificador de cliente es 12345.
Esta consulta en el lenguaje SQL encuentra el nombre del cliente cuyo identificador de cliente es 12345.
select clientes.nombre
from clientes
where clientes.clave_cliente= '12345'
Lo que está haciendo la consulta anterior es seleccionando (select) el nombre del cliente (clientes.nombre) de (from) la tabla clientes, donde (where) la clave del cliente (clientes.clave_cliente) sea igual a '12345'.