Logo de la UM

Diseño de Bases de Datos

Diego F. Roselli Mailhe, <[email protected]>




Oprima la barra espaciadora para comenzar

Bases de Datos. Introducción

Sistema de Gestión Bases de Datos (SGBD) - (DBMS)

Archivos convencionales

Organización de archivos

Métodos de acceso

Métodos de acceso según organización
OrganizaciónSecuencialAl azar
Secuencial No
Relativa
Secuencial Indexada

Características del enfoque de BD

Ventajas de usar un SGBD

Implicaciones del enfoque de BD

Modelos de datos

Categorías de modelos de datos

Esquemas, instancias y estado de la BD

Arquitectura de tres esquemas

Arquitectura de tres esquemas. Diagrama

Independencia de datos

Puede definirse como la capacidad de modificar el esquema en un nivel del sistema de base de datos, sin tener que modificar el esquema del nivel inmediato superior.

Se pueden definir dos tipos de independencia:

Lenguajes del SGBD

Modelado de datos

Construcción del Modelo de Implantación

  1. Las entidades del ME/R serán relaciones (tablas), considerando como excepciones aquellas entidades que representan conjuntos constantes conocidos, como meses del año, días de la semana, fechas, etc.
  2. El atributo determinante de la entidad, será la clave primaria.
  3. También serán relaciones (tablas):
    • Las relaciones del ME/R, binarias, de clase N-N
    • La clave, en este caso, la forman los atributos determinantes de las entidades que participan en la relación. Cada uno de estos atributos determinantes, es, a su vez, clave foránea.
    • Las relaciones n-arias del ME/R, en los casos en que n > 2
    • La clave, en este caso, la forman los atributos determinantes de las entidades que participan en la relación, pero se excluyen aquellos que pertenezcan a entidades con cardinalidad 1.

Modelo de Implantación: relaciones N-1

Modelo de Implantación: categorías

Conceptos del Modelo Relacional

Dominio

Esquema de relación

Ejemplar de relación

Restricciones del Modelo Relacional

Restricciones de Dominio

Restricciones en la clave y restricciones sobre nulos

Superclave y Clave

BDR y esquemas de BD

Integridad de entidades, integridad referencial, claves foráneas

Relaciones de una aplicación de Biblioteca

Las claves primarias (PK) se subrayan.

Las claves foráneas (FK) se escriben en bastardilla.

Diagrama de Acceso de Datos de la aplicación de Biblioteca

Álgebra relacional. Operaciones básicas

La operación SELECCIONAR

La operación PROYECTAR

Secuencia de operaciones y la operación RENOMBRAR

Operaciones de la teoría de conjuntos

Otras operaciones de la teoría de conjuntos

Unión, intersección y Diferencia

Producto cartesiano

Producto cartesiano: un ejemplo

La operación Reunión (JOIN)

Reunión Natural

Reunión Externa y Unión Externa

Unión Externa

SQL

Create Table

create table lectores (
    ci  integer not null,
    apellidos varchar(40) not null,
    nombres varchar(40) not null,
    domicilio varchar(50),
    telefono varchar(20) not null,

    primary key(ci)
);

create table prestamos (
    ci  integer not null,
    nro_ejemp integer not null,
    fch_préstamo date not null,
    fch_vencimiento date not null,
    fch_devolucion date,

    primary key(ci, nro_ejemp, fch_préstamo),
    foreign key(ci) references(lectores),
    foreign key(nro_ejemp) references(ejemplares)
);

alter table lectores add estado char(1) not null;

alter table lectores drop estado;

Tipos de datos

Dominios

create domain tipo_CI as integer;

create table lectores (
    ci  tipo_CI not null,
    apellidos varchar(40) not null,
    nombres varchar(40) not null,
    domicilio varchar(50),
    telefono varchar(20) not null,

    primary key(ci)
);

Consultas básicas en SQL

Forma genérica:

SELECT  <lista de atributos>
FROM    <ista de tablas>
WHERE   <condición>

Ejemplos:

--
-- Todos los lectores
--
SELECT ci, apellidos, nombres, domicilio, telefono
FROM lectores
--
-- Lectores que no están dados de baja
--
SELECT apellidos, nombres, domicilio, telefono
FROM lectores
WHERE estado != 'B'

Resumen general

--
-- Forma genérica de la sentencia SELECT
--
SELECT <lista de atributos y de funciones>
FROM <lista de tablas>
[WHERE <condición>]
[GROUP BY <atributo(s) de agrupación>]
[HAVING <condición de agrupación>]
[ORDER BY <lista de atributos>]

--
-- Reunión
--
SELECT <lista de atributos>
FROM <tabla_1>
[INNER] JOIN <tabla_2>
ON <condición de reunión>
[WHERE <condición de selección>]
--
-- Reunión Externa
--
SELECT <lista de atributos>
FROM <tabla_1>
LEFT [OUTER] JOIN <tabla_2>
ON <condición de reunión>
[WHERE <condición de selección>]

--
-- Unión
--
SELECT <lista_de_atributos_1>
FROM <tabla_1>
[WHERE <condición_de_selección_1>]
UNION
SELECT <lista_de_atributos_2>
FROM <tabla_2>
[WHERE <condición_de_selección_2>]

Funciones agregadas y de agrupación

-- Contar
SELECT COUNT(*)
FROM <tabla>
[WHERE <condición de selección>]

-- Sumar
SELECT SUM(columna)
FROM <tabla>
[WHERE <condición de selección>]

-- Promedio
SELECT AVG(columna)
FROM <tabla>
[WHERE <condición de selección>]

-- Mínimo
SELECT MIN(columna)
FROM <tabla>
[WHERE <condición de selección>]

-- Máximo
SELECT MAX(columna)
FROM <tabla>
[WHERE <condición de selección>]

Inserción, eliminación, actualización

-- Inserción
INSERT INTO <tabla>
[(<lista de columnas>)]
VALUES (<lista de valores>)

-- Eliminación
DELETE FROM <tabla>
[WHERE <condición>]

-- Actualización
UPDATE <tabla>
SET <columna1> = { <valor1> | <columna2> } [, <columna3> = { <valor2> | <columna4> }...]
[WHERE <condición>]

Dependencias funcionales

Normalización

Repaso

Primera Forma Normal (1FN)

Segunda Forma Normal (2FN)

Tercera Forma Normal (3FN)

Forma normal de Boyce-Codd (BCNF)

Forma normal de Boyce-Codd (BCNF)

Considérese la siguiente relación IMPARTE:

IMPARTE
ESTUDIANTE CURSO PROFESOR
Relación IMPARTE que está en 3FN pero no en BCNF.
Alonso Bases de datos Núñez
Bermúdez Bases de datos Orozco
Bermúdez Sistemas Operativos Pérez
Bermúdez Física Quesada
Cabrera Bases de datos Núñez
Cabrera Sistemas Operativos Ruiz
Domínguez Bases de datos Sánchez
Escobar Martínez Orozco

Forma normal de Boyce-Codd (BCNF)

Dependencias multivaluadas (DMV)

EMPLEADOS
NOMBRE_E NOMBRE_P NOMBRE_D
Gómez X Juan
Gómez Y Ana
Gómez X Ana
Gómez Y Juan

DMV. Definición formal.

Cuarta forma normal (4FN)

Dependencias de reunión

Quinta forma normal (5FN)

Considérese la siguiente relación SUMINISTROS:

Suministros
NOM_PROVEEDOR NOM_COMPONENTE NOM_PROYECTO
Relación SUMINISTROS que está en 4FN pero no en 5NF.
Sánchez Perno Proyecto X
Sánchez Tuerca Proyecto Y
Álvarez Perno Proyecto Y
García Tuerca Proyecto Z
Álvarez Clavo Proyecto X
Álvarez Perno Proyecto X
Sánchez Perno Proyecto Y

Normalizando

La descomposición da lugar a tres relaciones que están en 5FN.

NOM_PROVEEDOR NOM_COMPONENTE
Sánchez Perno
Sánchez Tuerca
Álvarez Perno
García Tuerca
Álvarez Clavo
NOM_PROVEEDOR NOM_PROYECTO
Sánchez Proyecto X
Sánchez Proyecto Y
Álvarez Proyecto Y
García Proyecto Z
Álvarez Proyecto X
NOM_COMPONENTE NOM_PROYECTO
Perno Proyecto X
Tuerca Proyecto Y
Perno Proyecto Y
Tuerca Proyecto Z
Clavo Proyecto X

Arquitecturas del sistema de base de datos

Arquitectura de un SGBD centralizado

Arquitectura cliente-servidor

Arquitectura cliente-servidor - Diagrama

Arquitectura cliente-servidor para SGBD

Catálogo de un SGBD relacional

Procesamiento y optimización de consultas

Pasos para procesar una consulta - Diagrama

Pasos para procesar una consulta

Transacciones

Control de concurrencia

Problema de la actualización perdida

T1 T2
read_item(X);
X := X - N;
read_item(X);
X := X + M;
write_item(X);
read_item(Y);
write_item(X);
Y := Y + N;
write_item(Y);

El elemento X tienen un valor incorrecto porque la actualización realizada por T1 se ha sobrescrito y es como si no hubiera tenido efecto.

Problema de la actualización temporal (lectura sucia)

T1 T2
read_item(X);
X = X - N;
write_item(X);
read_item(X);
X := X + M;
write_item(X);
read_item(Y);

La transacción T1 falla y debe restaurar X a su antiguo valor; mientras tanto T2 ha leído el valor temporal incorrecto de X.

Problema del resumen incorrecto

T1 T3
suma:=0;
read_item(A);
suma:=suma+A;
.
.
.
read_item(X)
X:=X-N;
write_item(X);
read_item(X);
suma:=suma+X;
read_item(Y);
suma:=suma+Y;
read_item(Y);
Y:=Y+N;
write_item(Y);

T3 lee X después de restarle N y lee Y antes de sumársele N, así que el resultado es un resumen incorrecto (discrepancia de N).


Lectura no repetible

Por qué es necesaria la recuperación

Estados de transacciones

Diario del Sistema (Log)

Diario del Sistema (Log)

Punto de confirmación de una transacción

Punto de confirmación: forzar la escritura

Propiedades deseables en las transacciones

Planes y recuperabilidad

Planes (historias) de transacciones

Consideremos la siguiente figura, usada en el ejemplo de la actualización perdida. el plan, que llamaremos Pa se puede escribir como sigue, añadidas las operaciones de confirmación:

T1 T2
read_item(X);
X := X - N;
read_item(X);
X := X + M;
write_item(X);
read_item(Y);
write_item(X);
Y := Y + N;
write_item(Y);

El plan para esta figura, que llamaremos Pa se puede escribir como sigue, después de añadidas las operaciones de confirmación:

Planes (historias) de transacciones

Considérese ahora la figura del ejemplo de lectura sucia.

T1 T2
read_item(X);
X = X - N;
write_item(X);
read_item(X);
X := X + M;
write_item(X);
read_item(Y);

De manera similar, el plan de esta figura, que llamaremos Pb se puede escribir como sigue, suponiendo que la transacción T1 abortó después de su operación read_item(Y):

Operaciones en conflicto

Plan completo

Caracterización de planes basados en su recuperabilidad

Transacciones en SQL

Nivel de aislamiento (Isolation Level)

Violaciones posibles basadas en los niveles de aislamiento

Violaciones posibles basadas en los niveles de aislamiento definidos en SQL
Nivel de aislamientoTipo de Violación
Lectura suciaLectura no repetibleFantasma
LECTURA NO CONFIRMADA
LECTURA CONFIRMADANo
LECTURA REPETIBLE NoNo
SERIALIZABLE NoNoNo

Bibliografía

Sanders DH; (1983). Informática: presente y futuro. 1a. ed., McGraw-Hill, México.

Batini, Ceri, Navathe.; (1994). Diseño Conceptual de Bases de Datos. Un enfoque de Entidades/Interrelaciones. Addison Wesley/Diaz De Santos.

Date C.J.; (2003). An introduction to Database Systems. 8a. ed., Addison Wesley.

Elmasri R, Navathe S.; (2005). Fundamentos de Sistemas de Bases de Datos. 3a. ed., Pearson Educación, Madrid.

Korth, Silberschatz, Sudarshan.; ( 2006). Fundamentos de Bases de Datos. 5a. ed., Mc Graw Hill.

Ullman Jeffrey D., Widom J. (1999). Introducción a los sistemas de Bases de Datos. 1a. ed., Pearson.