Sistemas de Gestión de Bases de Datos-1
Sistemas de Gestión de Bases de Datos-1
Sistemas de Gestión de Bases de Datos-1
BASE DE DATOS
SISTEMA DE GESTIÓN
(SGBD)
(R-13 Autónomo)
0)
TC
ro
_ naigatioral II
PROGRAMA DE ESTUDIOS
(R15A0509) SISTEMAS DE GESTIÓN DE BASES DE DATOS
Objetivos:
• Comprender los conceptos básicos y las aplicaciones de los sistemas de bases de datos.
• Dominar los conceptos básicos de SQL y crear consultas utilizando SQL.
• Comprender los principios de diseño de bases de datos relacionales.
• Familiarizarse con los aspectos básicos del procesamiento de transacciones y el control de
concurrencia.
• Familiarizarse con las estructuras de almacenamiento de bases de datos y las técnicas de
acceso.
UNIDAD I:
Aplicaciones de sistemas de bases de datos, Propósito de los sistemas de bases de datos, Vista de datos
– Abstracción de datos – Instancias y esquemas – Modelos de datos – Modelo ER – Modelo relacional
– Otros modelos – Lenguajes de bases de datos – DDL – DML – Acceso a bases de datos Programas –
Usuarios de bases de datos y Administrador – Gestión de transacciones – Arquitectura de base de
datos – Administrador de almacenamiento – Procesador de consultas
Diseño de bases de datos y diagramas ER – Modelo ER - Entidades, Atributos y conjuntos de
entidades – Relaciones y conjuntos de relaciones – Cuestiones de diseño ER – Diseño conceptual –
Diseño conceptual para empresa universitaria.
Introducción al Modelo Relacional – Estructura – Esquema de Base de Datos, Claves – Diagramas de
Esquema
UNIDAD II:
Lenguajes de consulta relacionales, operaciones relacionales.
Álgebra relacional – Operaciones de selección y proyección de conjuntos – cambio de nombre –
Uniones – División – Ejemplos de resúmenes de álgebra – Cálculo relacional – Cálculo relacional de
tuplas – Cálculo relacional de dominio.
Descripción general del lenguaje de consulta SQL: estructura básica de consultas SQL, operaciones de
conjunto, funciones agregadas, GROUPBY, HAVING, subconsultas anidadas, vistas, activadores.
UNIDAD III:
Normalización: introducción, descomposición sin pérdidas y dependencias funcionales, primera,
segunda y tercera formas normales: preservación de la dependencia, forma normal de Boyee/Codd.
Formas normales superiores: Introducción, Dependencias multivaluadas y Cuarta forma normal, Unir
dependencias y Quinta forma normal
UNIDAD IV:
Concepto de transacción - Estado de transacción - Implementación de atomicidad y durabilidad -
Concurrente - Ejecuciones - Serialización - Recuperabilidad - Implementación de aislamiento -
Pruebas de serialización - Protocolos basados en bloqueo - Protocolos basados en marcas de tiempo -
Protocolos basados en validación - Granularidad múltiple.
Recuperación y Atomicidad – Recuperación basada en registros – Recuperación con transacciones
concurrentes – Gestión de buffers – Falla con pérdida de almacenamiento no volátil-Sistemas de
recuperación avanzada-Sistemas de respaldo remoto.
UNIDAD V:
Organización de archivos: – Organización de archivos – varios tipos de índices. Procesamiento de
consultas – Medidas del costo de la consulta - Operación de selección – Operación de proyección, -
Operación de unión – operación de conjunto y operación agregada – Optimización de consultas
relacionales – Transacción de consultas SQL – Estimación del costo – Reglas de equivalencia.
LIBROS DE TEXTO:
1. Conceptos del sistema de base de datos, Silberschatz, Korth, McGraw Hill, sexta edición.
(Todas las UNIDADES excepto la III.ª)
2. Sistemas de gestión de bases de datos, Raghurama Krishnan, Johannes Gehrke, TATA
McGrawHill, tercera edición.
LIBROS DE REFERENCIA:
1. Fundamentos de sistemas de bases de datos, Elmasri Navathe Pearson Education.
2. Introducción a los sistemas de bases de datos, CJ Date, A.Kannan, S.Swami Nadhan, Pearson,
octava edición para la UNIDAD III.
3
URL:
Resultados:
• Demostrar los elementos básicos de un sistema de gestión de bases de datos relacionales.
• Capacidad para identificar los modelos de datos para problemas relevantes.
• Capacidad para diseñar relaciones entre entidades y convertir diagramas de relaciones entre
entidades en RDBMS y formular consultas SQL sobre los datos respectivos.
• Aplicar la normalización para el desarrollo de software de aplicación.
4
UNIDAD 1
Datos : hechos, cifras, estadísticas, etc. que no tienen ningún significado particular (por ejemplo, 1, ABC, 19,
etc.).
Registro : recopilación de elementos de datos relacionados; por ejemplo, en el ejemplo anterior los tres
elementos de datos no tenían significado. Pero si los organizamos de la siguiente manera, colectivamente
representan información significativa.
Rollo Nombre Edad
1 ABC 19
Las columnas de esta relación se denominan Campos , Atributos o Dominios . Las filas se llaman Tuplas o
Registros .
Dat base : Colección de relaciones relacionadas. Considere la siguiente colección
o de tablas: T2
s Rollo Nombre Edad DIRECCIÓ
Rollo
N
1 ABC 19 1 KOL
2 DEF 22 2 DEL
3 XYZ 28 3 MAMÁ
T
l T4
3
Una base de datos en un DBMS podría ser vista por muchas personas diferentes con diferentes
responsabilidades.
Por ejemplo, dentro de una empresa hay diferentes departamentos, así como clientes, cada uno de los cuales
necesita ver diferentes tipos de datos. Cada empleado de la empresa tendrá diferentes niveles de acceso a la
base de datos con su propia aplicación front-end personalizada.
En una base de datos, los datos se organizan estrictamente en formato de filas y columnas. Las filas se
llaman Tupla o Registro . Los elementos de datos dentro de una fila pueden pertenecer a diferentes tipos de
datos. Por otro lado, las columnas suelen denominarse Dominio o Atributo . Todos los elementos de datos
dentro de un único atributo son del mismo tipo de datos.
El sistema de gestión es importante porque sin la existencia de algún tipo de reglas y regulaciones no es
posible mantener la base de datos. Tenemos que seleccionar los atributos particulares que deben incluirse en
una tabla particular; los atributos comunes para crear relaciones entre dos tablas; si es necesario insertar o
eliminar un nuevo registro, entonces qué tablas deben manejarse, etc. Estos problemas deben resolverse
teniendo algún tipo de reglas a seguir para mantener la integridad de la base de datos.
6
Los sistemas de bases de datos están diseñados para gestionar grandes cantidades de información. La
gestión de datos implica tanto definir estructuras para el almacenamiento de información como proporcionar
mecanismos para la manipulación de la información. Además, el sistema de base de datos debe garantizar la
seguridad de la información almacenada, a pesar de fallos del sistema o intentos de acceso no autorizado. Si
se van a compartir datos entre varios usuarios, el sistema debe evitar posibles resultados anómalos.
Debido a que la información es tan importante en la mayoría de las organizaciones, los informáticos han
desarrollado una gran cantidad de conceptos y técnicas para gestionar datos. Estos conceptos y técnicas
forman el foco de este libro. Este capítulo presenta brevemente los principios de los sistemas de bases de
datos.
Las bases de datos afectan todos los aspectos de nuestras vidas. Algunas de las principales áreas de
aplicación son las siguientes:
1. Bancario
2. aerolíneas
3. universidades
4. Fabricacion y venta
5. Recursos humanos
Información empresarial
◦ Ventas : Para información de clientes, productos y compras.
◦ Contabilidad : Para pagos, recibos, saldos de cuentas, activos y otra información contable.
◦ Recursos humanos : para obtener información sobre empleados, salarios, impuestos sobre la nómina y
beneficios, y para la generación de cheques de pago.
◦ Fabricación : Para la gestión de la cadena de suministro y para el seguimiento de la producción de artículos
en fábricas, inventarios de artículos en almacenes y tiendas, y pedidos de artículos.
Minoristas en línea : para los datos de ventas mencionados anteriormente más el seguimiento de pedidos
en línea, la generación de listas de recomendaciones y
mantenimiento de evaluaciones de productos en línea.
Bancos y finanzas
◦ Banca : Para información de clientes, cuentas, préstamos y transacciones bancarias.
◦ Transacciones con tarjeta de crédito : Para compras con tarjetas de crédito y generación de extractos
mensuales.
◦ Finanzas : para almacenar información sobre tenencias, ventas y compras de instrumentos financieros
como acciones y bonos; también para almacenar datos de mercado en tiempo real para permitir el
comercio en línea por parte de los clientes y el comercio automatizado por parte de la empresa.
◦ Universidades : para información de estudiantes, inscripciones a cursos y calificaciones (además de
información empresarial estándar, como recursos humanos y contabilidad).
◦ Aerolíneas : Para reservas e información de horarios. Las aerolíneas estuvieron entre las primeras en
utilizar bases de datos de forma distribuida geográficamente.
◦ Telecomunicaciones : para mantener registros de las llamadas realizadas, generar facturas mensuales,
mantener saldos en tarjetas telefónicas prepagas y almacenar información sobre las redes de
comunicación.
7
Propósito de los sistemas de bases de datos
Los sistemas de bases de datos surgieron en respuesta a los primeros métodos de gestión computarizada de
datos comerciales. Como ejemplo de tales métodos, típicos de la década de 1960, consideremos parte de una
organización universitaria que, entre otros datos, mantiene información sobre todos los profesores,
estudiantes, departamentos y cursos ofrecidos. Una forma de mantener la información en una computadora
es almacenarla en archivos del sistema operativo. Para permitir a los usuarios manipular la información, el
sistema cuenta con una serie de programas de aplicación que manipulan los archivos, incluidos programas
para:
V Agregar nuevos estudiantes, instructores y cursos
V Registrar estudiantes para cursos y generar listas de clases
{ Asigne calificaciones a los estudiantes, calcule promedios de calificaciones (GPA) y genere expedientes
académicos
Los programadores de sistemas escribieron estos programas de aplicación para satisfacer las necesidades de
la universidad.
Se agregan nuevos programas de aplicación al sistema a medida que surge la necesidad. Por ejemplo,
supongamos que una universidad decide crear una nueva especialización (digamos, informática). Como
resultado, la universidad crea un nuevo departamento y crea nuevos archivos permanentes (o agrega
información a los archivos existentes) para registrar información sobre todos los profesores. en el
departamento, estudiantes de esa especialización, oferta de cursos, requisitos de grado, etc. Es posible que
la universidad tenga que redactar nuevos programas de aplicación para abordar las reglas específicas de la
nueva especialización. Es posible que también sea necesario redactar nuevos programas de aplicación para
manejar las nuevas reglas en la universidad. Así, a medida que pasa el tiempo, el sistema adquiere más
archivos y más programas de aplicación.
Este típico sistema de procesamiento de archivos es compatible con un sistema operativo convencional. El
sistema almacena registros permanentes en varios archivos y necesita diferentes programas de aplicación
para extraer registros y agregar registros a los archivos apropiados. Antes de que se introdujeran los sistemas
de gestión de bases de datos (DBMS), las organizaciones normalmente almacenaban información en dichos
sistemas. Mantener la información organizacional en un archivo El sistema de procesamiento tiene una serie
de desventajas importantes:
Redundancia e inconsistencia de datos . Dado que diferentes programadores crean los archivos y
programas de aplicación durante un largo período, es probable que los distintos archivos tengan estructuras
diferentes y los programas puedan escribirse en varios lenguajes de programación. Además, la misma
información puede estar duplicada en varios lugares (archivos). Por ejemplo, si un estudiante tiene una doble
especialización (digamos, música y matemáticas), la dirección y el número de teléfono de ese estudiante
pueden aparecer en un archivo que consta de registros de estudiantes del departamento de Música y en un
archivo que consta de registros de estudiantes. de los estudiantes del departamento de Matemáticas. Esta
redundancia conduce a mayores costos de almacenamiento y acceso. Además, puede provocar
incoherencia en los datos ; es decir, es posible que las distintas copias de los mismos datos ya no
coincidan. Por ejemplo, el cambio de dirección de un estudiante puede reflejarse en los registros del
departamento de Música, pero no en ninguna otra parte del sistema.
Dificultad para acceder a los datos . Supongamos que uno de los empleados de la universidad necesita
averiguar los nombres de todos los estudiantes que viven dentro de un área de código postal particular. El
empleado solicita al departamento de procesamiento de datos que genere dicha lista. Debido a que los
diseñadores del sistema original no anticiparon esta solicitud, no existe ningún programa de aplicación
disponible para satisfacerla. Sin embargo, existe un programa de aplicación para generar la lista de todos los
estudiantes.
8
El secretario de la universidad tiene ahora dos opciones: obtener la lista de todos los estudiantes y extraer la
información necesaria manualmente o pedirle a un programador que escriba el programa de aplicación
necesario. Ambas alternativas son evidentemente insatisfactorias. Supongamos que se escribe un programa
de este tipo y que, varios días después, el mismo empleado necesita recortar esa lista para incluir sólo a
aquellos estudiantes que han tomado al menos 60 horas de crédito. Como era de esperar, no existe un
programa para generar dicha lista. Nuevamente, el secretario tiene las dos opciones anteriores, ninguna de
las cuales es satisfactoria. El punto aquí es que los entornos de procesamiento de archivos convencionales
no permiten recuperar los datos necesarios de una manera conveniente y eficiente. Se requieren sistemas de
recuperación de datos más receptivos para uso general.
Aislamiento de datos . Debido a que los datos están dispersos en varios archivos y los archivos pueden
estar en diferentes formatos, es difícil escribir nuevos programas de aplicación para recuperar los datos
apropiados.
Problemas de integridad . Los valores de datos almacenados en la base de datos deben satisfacer ciertos
tipos de restricciones de coherencia . Supongamos que la universidad mantiene una cuenta para cada
departamento y registra el monto del saldo en cada cuenta. Supongamos también que la universidad exige
que el saldo de la cuenta de un departamento nunca caiga por debajo de cero. Los desarrolladores imponen
estas restricciones en el sistema agregando el código apropiado en los distintos programas de aplicación. Sin
embargo, cuando se agregan nuevas restricciones, es difícil cambiar los programas para hacerlas cumplir. El
problema se agrava cuando las restricciones involucran varios elementos de datos de diferentes archivos.
Problemas de atomicidad . Un sistema informático, como cualquier otro dispositivo, está sujeto a fallos. En
muchas aplicaciones, es crucial que, si ocurre una falla, los datos se restablezcan al estado consistente que
existía antes de la falla.
Considere un programa para transferir $500 del saldo de la cuenta del departamento A al saldo de la cuenta
del departamento B. Si se produce una falla del sistema durante la ejecución del programa, es posible que los
$500 se eliminaron del saldo del departamento A pero no se acreditaron al saldo del departamento B , lo que
resultó en un estado de base de datos inconsistente. Claramente, es esencial para la coherencia de la base
de datos que se produzcan tanto el crédito como el débito, o que no se produzca ninguno de los dos.
Es decir, la transferencia de fondos debe ser atómica : debe realizarse en su totalidad o no realizarse en
absoluto. Es difícil garantizar la atomicidad en un sistema de procesamiento de archivos convencional.
Anomalías de acceso concurrente . En aras del rendimiento general del sistema y de una respuesta más
rápida, muchos sistemas permiten que varios usuarios actualicen los datos simultáneamente. De hecho, hoy
en día, los mayores minoristas de Internet pueden tener millones de accesos diarios a sus datos por parte de
los compradores. En dicho entorno, la interacción de actualizaciones simultáneas es posible y puede dar
como resultado datos inconsistentes. Considere el departamento A , con un saldo de cuenta de $10 000. Si
dos empleados de departamento debitan el saldo de la cuenta (digamos $500 y $100, respectivamente) del
departamento A casi exactamente al mismo tiempo, el resultado de las ejecuciones simultáneas puede dejar
el presupuesto en un estado incorrecto (o inconsistente). Supongamos que los programas que se ejecutan en
nombre de cada retiro leen el saldo anterior, reducen ese valor en la cantidad que se retira y escriben el
resultado. Si los dos programas se ejecutan simultáneamente, ambos pueden leer el valor $10 000 y escribir
$9500 y $9900, respectivamente. Dependiendo de quién escriba el valor en último lugar, el saldo de la cuenta
del departamento A puede contener $9500 o $9900, en lugar del valor correcto de $9400. Para protegerse
contra esta posibilidad, el sistema debe mantener alguna forma de supervisión.
Pero es difícil proporcionar supervisión porque los datos pueden ser accedidos por muchos programas de
aplicación diferentes que no han sido coordinados previamente.
Como otro ejemplo, supongamos que un programa de registro mantiene un recuento de estudiantes
registrados para un curso, con el fin de imponer límites en el número de estudiantes registrados. Cuando un
9
estudiante se registra, el programa lee el recuento actual de los cursos, verifica que el recuento no esté ya en
el límite, agrega uno al recuento y almacena el recuento en la base de datos. Supongamos que dos
estudiantes se registran simultáneamente, con el conteo en (digamos) 39. Las dos ejecuciones del programa
pueden leer el valor 39 y luego ambas escribirían 40, lo que llevaría a un aumento incorrecto de solo 1, a
pesar de que dos estudiantes se registraron exitosamente para el curso y el conteo debería ser 41. Además,
supongamos que el límite de inscripción al curso fuera 40; en el caso anterior, ambos estudiantes podrían
registrarse, lo que conllevaría una violación del límite de 40 estudiantes.
Problemas de seguridad . No todos los usuarios del sistema de base de datos deberían poder acceder a
todos los datos. Por ejemplo, en una universidad, el personal de nómina necesita ver sólo la parte de la base
de datos que tiene información financiera. No necesitan acceso a información sobre expedientes académicos.
Pero, dado que los programas de aplicación se agregan al sistema de procesamiento de archivos de manera
ad hoc, es difícil hacer cumplir tales restricciones de seguridad.
Estas dificultades, entre otras, impulsaron el desarrollo de sistemas de bases de datos. A continuación,
veremos los conceptos y algoritmos que permiten a los sistemas de bases de datos resolver los problemas
con los sistemas de procesamiento de archivos.
Control de redundancia: la redundancia de datos se refiere a la duplicación de datos (es decir, almacenar
los mismos datos varias veces). En un sistema de base de datos, al tener una base de datos centralizada y un
control centralizado de los datos por parte del DBA, se evita la duplicación innecesaria de datos. También
elimina el tiempo extra para procesar un gran volumen de datos. Resulta en ahorrar espacio de
almacenamiento.
Intercambio de datos mejorado : DBMS permite al usuario compartir los datos en cualquier cantidad de
programas de aplicación.
Integridad de los datos : integridad significa que los datos de la base de datos son precisos. El control
centralizado de los datos ayuda a permitir que el administrador defina restricciones de integridad para los
datos en la base de datos. Por ejemplo: en la base de datos de clientes podemos imponer una integridad que
debe aceptar al cliente solo de la ciudad de Noida y Meerut.
Seguridad: tener autoridad total sobre los datos operativos permite al DBA garantizar que el único medio de
acceso a la base de datos sea a través de los canales adecuados. El DBA puede definir comprobaciones de
autorización que se llevarán a cabo cada vez que se intente acceder a datos confidenciales.
Coherencia de los datos: al eliminar la redundancia de datos, reducimos en gran medida las oportunidades
de inconsistencia. Por ejemplo: si la dirección de un cliente se almacena solo una vez, no podemos tener
desacuerdos sobre los valores almacenados. Además, la actualización de los valores de los datos se
simplifica enormemente cuando cada valor se almacena en un solo lugar. Finalmente, evitamos el desperdicio
de almacenamiento que resulta del almacenamiento de datos redundante.
Acceso eficiente a los datos: en un sistema de base de datos, los datos son administrados por el DBMS y
todo el acceso a los datos se realiza a través del DBMS, lo que proporciona una clave para el procesamiento
eficaz de los datos.
Cumplimiento de estándares : con la centralización de los datos, el DBA puede establecer y hacer cumplir
los estándares de datos que pueden incluir convenciones de nomenclatura, estándares de calidad de datos,
etc.
1
Independencia de datos : en un sistema de base de datos, el sistema de gestión de bases de datos 0
proporciona la interfaz entre los programas de aplicación y los datos. Cuando se realizan cambios en la
representación de los datos, los metadatos obtenidos por el DBMS cambian pero el DBMS continúa
proporcionando los datos al programa de aplicación en la forma utilizada anteriormente. Los DBM se
encargan de la tarea de transformación de datos cuando sea necesario.
Vista de datos
Un sistema de base de datos es una colección de datos interrelacionados y un conjunto de programas que
permiten a los usuarios acceder y modificar estos datos. Uno de los objetivos principales de un sistema de
base de datos es proporcionar a los usuarios una visión abstracta de los datos. Es decir, el sistema oculta
ciertos detalles de cómo se almacenan y mantienen los datos.
1
Abstracción de datos 1
Para que el sistema sea utilizable, debe recuperar datos de manera eficiente. La necesidad de eficiencia ha
llevado a los diseñadores a utilizar estructuras de datos complejas para representar datos en la base de
datos. Dado que muchos usuarios de sistemas de bases de datos no están capacitados en informática, los
desarrolladores ocultan la complejidad a los usuarios a través de varios niveles de abstracción, para
simplificar las interacciones de los usuarios con el sistema:
Externo
Esquema
Conceptual
Esquema
Interno
Esquema
DISCO
de base
de datos
• Nivel lógico (o vista conceptual/esquema) : el siguiente nivel superior de abstracción describe qué datos
se almacenan en la base de datos y qué relaciones existen entre esos datos. Por tanto, el nivel lógico
describe toda la base de datos en términos de un pequeño número de estructuras relativamente simples.
Aunque la implementación de estructuras simples en el nivel lógico puede implicar estructuras complejas en el
nivel físico, el usuario del nivel lógico no necesita ser consciente de esta complejidad. Esto se conoce como
independencia física de los datos . Los administradores de bases de datos, que deben decidir qué
información conservar en la base de datos, utilizan el nivel lógico de abstracción.
• Nivel de vista (o Vista externa/Esquema): el nivel más alto de abstracción describe solo una parte de
toda la base de datos. Aunque el nivel lógico utiliza estructuras más simples, la complejidad persiste debido a
la variedad de información almacenada en una gran base de datos. Muchos usuarios del sistema de base de
datos no necesitan toda esta información; en cambio, necesitan acceder sólo a una parte de la base de datos.
El nivel de abstracción de vista existe para simplificar su interacción con el sistema. El sistema puede
proporcionar muchas vistas para la misma base de datos. La Figura 1.2 muestra la relación entre los tres
niveles de abstracción.
Una analogía con el concepto de tipos de datos en los lenguajes de programación puede aclarar la distinción
entre niveles de abstracción. Muchos lenguajes de programación de alto nivel admiten la noción de tipo
estructurado. Por ejemplo, podemos describir un registro de la siguiente manera:
tipo instructor = registro
ID : carácter (5);
nombre : carbón (20);
nombre del departamento : char (20);
salario : numérico (8,2);
fin ;
Este código define un nuevo tipo de registro llamado instructor con cuatro campos. Cada campo tiene un
1
nombre y un tipo asociado. Una organización universitaria puede tener varios tipos de registros de este tipo, 2
incluidos