4-B3T4 Modelado de Datos y Diseño BD
4-B3T4 Modelado de Datos y Diseño BD
Preparación Oposiciones
GESTIÓN DE SISTEMAS E INFORMÁTICA DEL
ESTADO
B3T4 MODELADO DATOS Y DISEÑO BD GSI
ÍNDICE
Í N D I C E ........................................................................................................................................................ 2
1. INTRODUCCIÓN......................................................................................................................................... 3
2. MODELO ENTIDAD/RELACIÓN EXTENDIDO ............................................................................................... 4
1. Entidad ................................................................................................................................................. 5
2. Atributo ................................................................................................................................................ 6
3. Relación ................................................................................................................................................ 8
4. Dominio .............................................................................................................................................. 13
5. Extensiones del modelo Entidad-Relación .......................................................................................... 13
6. Ejemplo modelo ER extendido ............................................................................................................ 16
3. CONSTRUCCIÓN Y VALIDACIÓN DEL MODELO ER.................................................................................... 18
4. MODELO CONCEPTUAL DE DATOS EN MÉTRICA V3 ................................................................................ 19
1. Modelo conceptual en EVS 2 .............................................................................................................. 19
2. Modelo conceptual en EVS 4 .............................................................................................................. 19
3. Modelo conceptual en ASI 1 ............................................................................................................... 20
4. Modelo conceptual en ASI 6 ............................................................................................................... 20
5. DISEÑO DE BASES DE DATOS ................................................................................................................... 22
6. LA ARQUITECTURA ANSI/SPARC .............................................................................................................. 24
7. EL MODELO LÓGICO RELACIONAL ........................................................................................................... 28
1. Conceptos fundamentales del modelo relacional .............................................................................. 28
2. Reglas de integridad........................................................................................................................... 29
3. Lenguajes relaciones .......................................................................................................................... 31
4. Las 12 reglas de Codd ......................................................................................................................... 35
8. DISEÑO LÓGICO....................................................................................................................................... 37
1. Ajustes del modelo conceptual ........................................................................................................... 37
2. Obtención del modelo lógico a partir del conceptual ......................................................................... 39
3. Reglas de transformación (enfoque OO) ............................................................................................ 46
9. NORMALIZACIÓN .................................................................................................................................... 49
1. Primera Forma normal (1FN) ............................................................................................................. 50
2. Segunda Forma normal (2FN) ............................................................................................................ 51
3. Tercera Forma normal (3FN) .............................................................................................................. 52
4. Forma normal de Boyce-Codd (FNBC) ................................................................................................ 52
5. Cuarta Forma normal (4FN) ............................................................................................................... 53
6. Quinta Forma normal (5FN) ............................................................................................................... 54
7. La normalización en Métrica v3 ......................................................................................................... 55
10. DISEÑO FÍSICO .................................................................................................................................... 56
1. Traducir el esquema lógico para el SGBD específico .......................................................................... 56
2. Diseñar la representación física ......................................................................................................... 57
3. Diseñar los mecanismos de seguridad ............................................................................................... 62
4. Monitorizar y afinar el sistema .......................................................................................................... 62
5. El diseño físico de datos según Métrica v3 ......................................................................................... 63
11. PROBLEMAS DE CONCURRENCIA DE ACCESO ..................................................................................... 66
12. MECANISMOS DE RESOLUCIÓN DE CONFLICTOS................................................................................ 70
1. Mecanismos pesimistas...................................................................................................................... 70
2. Mecanismos optimistas...................................................................................................................... 74
3. Esquemas multiversión....................................................................................................................... 74
4. Tratamiento de interbloqueos ............................................................................................................ 75
1. INTRODUCCIÓN
Este se centra en el análisis de los datos y de los procesos de negocio de un sistema de
información, evidentemente desde un enfoque estructurado.
De otra parte, los diagramas de flujo de datos nos permiten representar los procesos de
negocio que representan el SI, mediante el análisis de las necesidades de usuario.
Así pues, el Modelo Entidad-Relación Extendido se trata de una técnica cuyo objetivo es la
representación y definición de todos los datos que se introducen, almacenan, transforman y
producen dentro de un sistema de información, sin tener en cuenta las necesidades de la
tecnología existente, ni otras restricciones.
Dado que el modelo de datos es un medio para comunicar el significado de los datos, las
relaciones entre ellos y las reglas de negocio de un sistema de información, una organización
puede obtener numerosos beneficios de la aplicación de esta técnica, pues la definición de los
datos y la manera en que éstos operan son compartidos por todos los usuarios.
Aunque la estructura de datos puede ser cambiante y dinámica, normalmente es mucho más
estable que la estructura de procesos. Como resultado, una estructura de datos estable e
integrada proporciona datos consistentes que puedan ser fácilmente accesibles según las
necesidades de los usuarios, de manera que, aunque se produzcan cambios organizativos, los
datos permanecerán estables.
Este diagrama se centra en los datos, independientemente del procesamiento que los
transforma y sin entrar en consideraciones de eficiencia. Por ello, es independiente del
entorno físico y debe ser una fiel representación del sistema de información objeto del
Antes de detallar este modelo, existen otras técnicas para crear modelos conceptuales de base
de datos, entre las que destacamos:
- Diagramas ORM.
- Diagramas IDEF1X.
- Diagramas UML.
- Diagramas CASE*Method.
1. Entidad
Es aquel objeto, real o abstracto, acerca del cual se desea almacenar información en la base
de datos. La estructura genérica de un conjunto de entidades con las mismas características
se denomina tipo de entidad.
Notación
La representación gráfica de un tipo de entidad regular es un rectángulo etiquetado con el
nombre del tipo de entidad. Un tipo de entidad débil se representa con dos rectángulos
concéntricos con su nombre en el interior.
Ejemplo: son tipos de entidades regulares libros, facturas, cuentas, clientes, ciudadanos,
ciudades, municipios.
Ejemplo: son tipos de entidades débiles ejemplar, línea de factura, movimientos. Así, la
existencia de un ejemplar depende un libro, la de una línea de factura de una factura y la de
un movimiento de una cuenta.
2. Atributo
Es una propiedad o característica de un tipo de entidad.
Se trata de la unidad básica de información que sirve para identificar o describir la entidad.
Un atributo se define sobre un dominio.
Por tanto, un atributo es una propiedad común a todas las ocurrencias de una entidad.
Supongamos que existen varios conjuntos de atributos que identifiquen unívocamente cada
ocurrencia del tipo de entidad. Solo uno será el identificador principal o clave primaria. El resto
de los conjuntos de atributos se denominarán claves candidatas o alternativas.
Se pueden definir restricciones sobre los atributos, según las cuales un atributo puede ser:
- Simple: son atributos que no están divididos en partes, es decir, representan un valor
indivisible.
- Compuesto: atributo que puede ser subdividido en atributos más elementales.
Ejemplo: atributo Dirección à vía, nombre, ciudad, provincia y código postal.
- Univaluado: atributo que sólo puede tomar un valor para todas y cada una de las
ocurrencias del tipo de entidad al que pertenece.
- Multivaluado: atributo que puede tomar más de un valor para algunas de las ocurrencias
del tipo de entidad al que pertenece.
Ejemplo: atributo teléfono puede tomar más de un valor a la vez.
- Obligatorio: atributo que tiene que tomar al menos un valor para todas y cada una de las
ocurrencias del tipo de entidad al que pertenece.
- Derivado: atributo cuyo valor se obtiene a partir de los valores de otros atributos de la
misma o de diferente tipo de entidad.
Ejemplo: atributo edad deriva del atributo fecha de nacimiento.
Notación
Un atributo se representa mediante una elipse, con su nombre dentro, conectada por una
línea al tipo de entidad o relación.
En lugar de una elipse puede utilizarse un círculo con el nombre dentro, o un círculo más
pequeño con el nombre del atributo a un lado. También pueden representarse en una lista
asociada a la entidad. El identificador aparece con el nombre marcado o subrayado, o bien
con su círculo en negro.
Ejemplo: atributos del tipo de entidad Cliente. Destaca el atributo Dirección que es
multivaluado.
3. Relación
Es una asociación o correspondencia existente entre una o varias entidades.
La relación “Compuesta por” es débil (asocia un tipo regular con un tipo de entidad débil) y la
dependencia es en identificación ya que un movimiento concreto no se puede identificar si no
se conoce la cuenta sobre la que se hace. Por tanto, tenemos:
numero_cuenta es la clave primaria de CUENTA.
numero_cuenta, numero_mvto es la clave primaria de MOVIMIENTO.
Además, se dice que una relación es exclusiva cuando la existencia de una relación entre dos
tipos de entidades implica la no existencia de las otras relaciones.
Ejemplo: el tipo de entidad FUNCIONARIO tiene una relación con el tipo de entidad CCAA y
otra con el tipo de entidad AYUNTAMIENTOS. Pues ambas relaciones son exclusivas ya que un
funcionario solo podrá trabajar en una administración a la vez.
- GRADO: número de tipos de entidad sobre las que se establece la relación. La relación del
ejemplo anterior es binaria, es decir, de grado dos. En función del grado las relaciones se
clasifican en:
o Unarias: una entidad se relaciona consigo misma (relaciones reflexivas). GRADO 1
o Binarias: entidades relacionadas dos a dos. GRADO 2
o Ternarias: relación entre tres entidades. GRADO 3
o N-arias: relación entre n entidades. GRADO 4
o Relaciones 1:N (uno a muchos): cada ocurrencia de una entidad puede estar
relacionada con cero, una o varias ocurrencias de la otra entidad.
o Relaciones M:N (muchos a muchos): cada ocurrencia de una entidad puede estar
relacionada con cero, una o varias ocurrencias de la otra entidad y cada
ocurrencia de la otra entidad puede corresponder a cero, una o varias
ocurrencias de la primera.
Las relaciones pueden tener atributos propios, de forma similar que los atributos de los tipos
de entidad
Notación
Se representa por un rombo unido a las entidades relacionadas por dos líneas rectas a los
lados. El tipo de correspondencia se representa gráficamente con una etiqueta 1:1, 1:N o M:N,
cerca de alguno de los vértices del rombo, o bien situando cada número o letra cerca de la
entidad correspondiente, para mayor claridad.
La representación gráfica de las cardinalidades se realiza mediante una etiqueta del tipo (0,1),
(1,1), (0,n) o (1,n), que se coloca en el extremo de la entidad que corresponda. Si se
representan las cardinalidades, la representación del tipo de correspondencia es redundante.
Ejemplo: en la siguiente relación entre ocurrencias del tipo de entidad EMPLEADO, conviene
distinguir a los empleados que asumirán el rol de “JEFE” y a los empleados que adoptarán el
papel de “SUBORDINADO”.
SUBORDINADO
JEFE
En la representación de las relaciones exclusivas se incluye un arco sobre las líneas que
conectan el tipo de entidad a los dos o más tipos de relación.
Ejemplo: dados los tipos de entidad PERSONA y EDIFICIO y las relaciones USA y POSEE entre
ambos tipos de entidad, tenemos:
Una persona usa uno o más edificios y un edificio puede ser usado (o no) por una o varias
personas. Por otro lado, una persona posee uno o más edificios y un edificio es poseído por
una persona.
TIPO DE N:M
CORRESPONDENCIA
Número máximo de ocurrencias de
cada tipo de entidad que pueden
intervenir en una ocurrencia de la
relación que se está tratando 1:N
4. Dominio
Es un conjunto nominado de valores homogéneos. El dominio tiene existencia propia con
independencia de cualquier entidad, relación o atributo.
Así pues, una cierta característica o propiedad (atributo) de un objeto toma valores que
pertenecen a un determinado dominio.
El dominio para un atributo puede ser, entre otros, un conjunto de enteros, de números reales
o de caracteres.
Ejemplo: es el caso del tipo empleado, del que se pueden obtener los subtipos Profesor y
PAS.
La existencia de supertipos y subtipos, en uno o varios niveles, da lugar a una jerarquía, que
permitirá representar una restricción del mundo real.
Notación
La representación de las jerarquías se realiza mediante un triángulo invertido, con la base
paralela al rectángulo que representa el supertipo y conectando a éste y a los subtipos. Si la
división en subtipos viene determinada en función de los valores de un atributo discriminante,
éste se representará asociado al triángulo que representa la relación.
En el triángulo se representará:
- Con una letra d el hecho de que los subtipos sean disjuntos.
- Con un círculo o una O si los subtipos pueden solaparse.
- Con una U el caso de uniones por categorías.
- La presencia de una jerarquía total se representa con una doble línea entre el supertipo y
el triángulo.
A partir de ahí, se pueden mezclar cualquiera de las opciones {total | parcial} con cualquier
otra de las siguientes {disjunta | solapada}.
6. Verificaciones.
Una vez construido el modelo Entidad-Relación, hay que analizar si se presentan
redundancias. Para poder asegurar su existencia se deben estudiar con mucho
detenimiento las cardinalidades mínimas de las entidades, así como la semántica de las
relaciones.
Los atributos redundantes, los que se derivan de otros elementos mediante algún cálculo,
deben ser eliminados del modelo Entidad-Relación o marcarse como redundantes.
Igualmente, las relaciones redundantes deben eliminarse del modelo, comprobando que
al eliminarlas sigue siendo posible el paso, tanto en un sentido como en el inverso, entre
las dos entidades que unían.
El objetivo de esta tarea es identificar y definir las entidades que quedan dentro del ámbito
del sistema de información, los atributos de cada entidad (diferenciando aquellos que pueden
convertirse en identificadores de la entidad), los dominios de los atributos y las relaciones
existentes entre las entidades, indicando las cardinalidades mínimas y máximas.
También se identifican aquellas entidades de datos que no forman parte del modelo, pero que
están relacionadas con alguna entidad del mismo, indicando a su vez el tipo de relación y las
cardinalidades mínimas y máximas.
En esta tarea se obtiene el modelo lógico de datos a partir del modelo conceptual para lo cual
se realizarán las acciones siguientes:
- Resolver las relaciones complejas que pudieran existir entre las distintas entidades.
- Eliminar las relaciones redundantes que puedan surgir como consecuencia de la resolución
de las relaciones complejas.
- Eliminar cualquier ambigüedad sobre el significado de los atributos.
- Identificar las relaciones de dependencia entre entidades .
- Completar la información de las entidades y los atributos, una vez resueltas las relaciones
complejas.
- Revisar y completar los identificadores de cada entidad.
También se debe especificar para cada entidad el número máximo y medio de ocurrencias,
estimaciones de crecimiento por periodo, tipo y frecuencia de acceso, así como aquellas
características relativas a la seguridad, confidencialidad, disponibilidad, etc. consideradas
relevantes.
Esto implica partir de un problema claramente determinado, definir cuáles son las entidades
que participan en el mismo y sus atributos (fase de abstracción), construir un modelo y, por
último, transformarlo para su implementación mediante algún lenguaje o herramienta
concretos.
Una vez validado es posible transformarlo a un modelo lógico específico (jerárquico, red,
relacional u orientado a objetos) dentro de la etapa conocida como Diseño.
Finalmente, se hace necesario implantar este modelo lógico en alguna de las soluciones
concretas de SGBD (modelo físico) dentro de la etapa conocida como Construcción del
sistema.
En esta etapa, se transforma el esquema conceptual en un esquema lógico que utilizará las
estructuras de datos del modelo lógico en el que se basa el SGBD (jerárquico, red, relacional,
orientado a objetos). Conforme se va desarrollando el esquema lógico, éste se va probando y
validando con los requisitos de usuario.
La normalización es una técnica que se utiliza para comprobar la validez de los esquemas
lógicos basados en el modelo relacional, ya que asegura que las relaciones (tablas) obtenidas
no tienen datos redundantes, obteniéndose el modelo lógico de datos normalizado.
Tanto el diseño conceptual, como el diseño lógico, son procesos iterativos, tienen un punto
de inicio y se van refinando continuamente. Ambos se deben ver como un proceso de
aprendizaje en el que el diseñador va comprendiendo el funcionamiento de la organización y
el significado de los datos que maneja. Por tanto, el diseño conceptual y el diseño lógico son
etapas clave para conseguir un sistema que funcione correctamente.
6. LA ARQUITECTURA ANSI/SPARC
Las bases de datos son parte integral de cualquier sistema de información. Por tanto, una de
las características que deben presentar es la capacidad de adaptación a cambios en el entorno.
Estos cambios, inevitables en cualquier organización, pueden ser físicos (cambios en el
hardware, en el formato de los ficheros, etc.) o lógicos (cambios en los programas, en el
lenguaje de programación, etc.).
Esta independencia entre el modelo lógico de los datos y su estructura física es la que
proporciona la arquitectura en 3 niveles del Instituto Nacional de Estandarización Americano
(ANSI). Según este organismo la independencia de los datos es la capacidad de un sistema de
gestión de base de datos para permitir que las referencias a los datos a través de los
programas estén aisladas de los posibles cambios y diferentes usos que el entorno pueda
propiciar, como pueden ser: la forma de almacenamiento, el modo de compartición con otros
programas o el modo de organización para mejorar el rendimiento del sistema de base de
datos.
Para conseguir este ideal de independencia, ANSI propone que las bases de datos se
construyan siguiendo un modelo o arquitectura de 3 niveles:
Estos tres niveles están organizados de forma jerárquica, siendo el nivel físico el más cercano
a la máquina y el nivel externo aquél con el que interactúa el usuario. Esta arquitectura por
capas sirve para aislar al usuario de las complejidades del modelo de datos y de
almacenamiento físico de la base, ya que sólo se le permitirá ver la parte lógica de la base
necesaria para su trabajo. Además, también aísla el modelo lógico de datos (aquí llamado
conceptual) de la implementación específica que se realice del mismo, por lo que, en teoría,
éste sería portable de unos gestores de bases de datos a otros. Todo ello dio lugar a la
denominada Arquitectura ANSI/X3/SPARC.
La existencia de este nivel aísla por completo a los usuarios y/o aplicaciones no sólo del
aspecto físico de la base de datos, sino también de cualquier parte de la misma que no esté
directamente relacionada con la tarea que deben desempeñar, aumentando así la
independencia y la protección frente a cambios en otras áreas de la organización.
Adicionalmente, esta capa también aumenta la seguridad de los datos, ya que, como
A partir del nivel externo se crea el esquema externo para cada base de datos en concreto.
Los esquemas externos pueden ser múltiples para una misma base de datos y además se
puede producir anidamiento entre ellos. El esquema externo queda representado por los
datos que de forma efectiva pueda acceder cada usuario y/o aplicación, más los permisos de
acceso efectivos sobre los mismos.
Por razones de eficiencia del procesamiento de las consultas, una vista puede estar
materializada, es decir, la consulta se evalúa y el resultado se almacena físicamente. Cuando
las relaciones de la base de datos se actualizan, la vista materializada se debe actualizar
correspondientemente.
Nivel CONCEPTUAL
Este modelo pretende reflejar la estructura y relaciones existentes entre los datos del mundo
real que se van a guardar en la base de datos, aislando entre sí los niveles externo (vista del
usuario) e interno (vista de la máquina).
Para construir el esquema es necesario definir el universo del discurso o, lo que es lo mismo,
acotar aquella parte del mundo real que se quiere modelar, incluyendo todos los elementos
o características relevantes y excluyendo aquellas que pese a existir en el problema original
no son relevantes. Para ello, se utiliza típicamente la técnica de Modelo Entidad-Relación
Extendido.
A partir del modelo conceptual se obtiene el esquema conceptual que se identifica mediante
las estructuras de datos, relaciones y restricciones.
Dentro de este nivel se incluye también la manera de obtener una adecuación del mismo al
entorno de implantación elegido, es decir, el modelo lógico.
Cada uno de estos modelos tiene sus características únicas que los hacen más adecuados para
modelar unos problemas u otros, así mismo, el modelo elegido va a condicionar en gran
medida los lenguajes de datos utilizados, ya que la propia estructura del modelo llega a
imponer determinadas formas de acceder a los datos.
Del nivel físico se deriva el esquema interno, que contiene las definiciones de los registros
guardados, los métodos de representación, los campos de datos y los índices. Hay un solo
esquema interno por base de datos.
Como resumen de esta arquitectura, su propósito principal es que el Esquema Conceptual sea
una descripción estable de la organización e independiente de las “vistas” y de la forma de
almacenamiento de los datos. Debido a esta independencia de niveles, las Bases de Datos
pueden ser flexibles y adaptables a los cambios.
La definición formal de una relación: “Dados los dominios D1, D2, … , Dn (no necesariamente
distintos), R es una relación entre estos n conjuntos si es un conjunto de n tuplas (d1, d2,…, dn)
tal que d1 pertenece a D1... dn pertenece a Dn”.
Cada atributo, o propiedad con interés informativo de una relación está asociado a un dominio
del que toma sus posibles valores.
El número de atributos de una relación define su grado, mientras que el número de tuplas de
la relación define su cardinalidad.
La extensión u ocurrencia de una relación es una tabla donde las filas corresponden a las
tuplas y las columnas a los atributos, es decir, es el conjunto de tuplas de una relación.
GRADO
TUPLA
CARDINALIDAD
2. Reglas de integridad
Permiten definir propiedades de los datos que no pueden ser capturadas basándose en
conjuntos y relaciones. Las razones para que un modelo requiera restricciones son:
− Semántica: permite reflejar más exactamente la información a modelar.
− Integridad: comunica al SGBD qué estados de la BD están permitidos.
Al definir cada atributo sobre un dominio se impone una restricción sobre el conjunto de
valores permitidos para cada atributo. A este tipo de restricciones se les denomina
restricciones de dominios.
Hay además dos reglas de integridad muy importantes que son restricciones que se deben
cumplir en todas las bases de datos relacionales y en todos sus estados o instancias (las reglas
se deben cumplir todo el tiempo). Estas reglas son la regla de integridad de entidades y la
regla de integridad referencial.
Antes de definirlas, es preciso conocer el concepto de nulo. Cuando en una tupla un atributo
es desconocido, se dice que es nulo. Un nulo no representa el valor cero ni la cadena vacía,
éstos son valores que tienen significado. El nulo implica ausencia de información, bien porque
al insertar la tupla se desconocía el valor del atributo, o bien porque para dicha tupla el
atributo no tiene sentido.
Por definición, una clave primaria es un identificador irreducible que se utiliza para identificar
de modo único las tuplas. Que sea irreducible significa que ningún subconjunto de la clave
primaria sirve para identificar las tuplas de modo único. Si se permite que parte de la clave
primaria sea nula, se está diciendo que no todos sus atributos son necesarios para distinguir
las tuplas, con lo que se contradice la irreducibilidad.
Esta regla sólo se aplica a las relaciones y a las claves primarias, no a las claves alternativas.
3. Lenguajes relaciones
Son varios los lenguajes utilizados por los SGBD relacionales para manejar las relaciones.
Algunos de ellos son procedurales, lo que quiere decir que el usuario dice al sistema
exactamente cómo debe manipular los datos. Otros son no procedurales, que significa que el
usuario dice qué datos necesita, en lugar de decir cómo deben obtenerse.
El álgebra relacional (o el cálculo relacional) se utiliza para medir la potencia de los lenguajes
relacionales.
Si un lenguaje permite obtener cualquier relación que se pueda derivar mediante el álgebra
relacional, se dice que es relacionalmente completo. La mayoría de los lenguajes relacionales
son relacionalmente completos, pero tienen más potencia que el álgebra o el cálculo porque
se les han añadido operadores especiales. En este apartado se verán las características más
importantes correspondientes al álgebra relacional.
Álgebra relacional
Lenguaje formal con una serie de operadores que trabajan sobre una o varias relaciones para
obtener otra relación resultado, sin que cambien las relaciones originales.
Tanto los operandos como los resultados son relaciones, por lo que la salida de una operación
puede ser la entrada de otra operación. Esto permite anidar expresiones del álgebra, del
mismo modo que se pueden anidar las expresiones aritméticas.
De los ocho operadores, solo hay 5 fundamentales, que forman un conjunto relacionalmente
completo, es decir, permite obtener cualquier subconjunto de los datos contenidos en una
BD:
− Selección: opera sobre una sola relación R y da como resultado otra relación cuyas tuplas
son las tuplas de R que satisfacen la condición especificada (C). Esta condición es una
comparación en la que aparece al menos un atributo de R, o una combinación booleana
de varias de estas comparaciones.
σc(R)
− Proyección: opera sobre una sola relación R y da como resultado otra relación que
contiene un subconjunto vertical de R, extrayendo los valores de los atributos
especificados y eliminando duplicados.
π 1..n (R)
− Producto cartesiano: relación resultante de combinar cada fila de la relación R con todas
las de la relación S. Ya que es posible que haya atributos con el mismo nombre en las dos
relaciones, el nombre de la relación se antepondrá al del atributo, en este caso, para que
los nombres de los atributos sigan siendo únicos en la relación resultado. En la relación
resultante:
o El grado es la suma del número de columnas de R y S.
o La cardinalidad es el producto del número de filas de R por el número de filas de S.
RxS
− Unión: Dadas dos relaciones R y S, se define la unión entre ambas como la relación
resultante de tomar las filas que están en una u otra relación y además las que están en
ambas (sólo una vez).
Para que se pueda producir la unión es necesario que las relaciones R y S presenten igual
grado y compatibilidad de dominios para cada par de atributos tomados de uno en uno
entre ambas relaciones, es decir, r1 ha de ser de un dominio igual o compatible a s1 y, en
general, rN ha de ser de un dominio igual o compatible a sN.
RUS
− Diferencia: dadas dos relaciones R y S, se define la diferencia entre ambas como la relación
resultante de tomar las filas que están en R y no están en S. Se trata de una operación no
conmutativa, a diferencia de las anteriores.
R-S
Operadores no fundamentales:
− Join: dadas dos relaciones R y S, se define la concatenación o join como la relación
resultante del producto cartesiano entre ambas tablas una vez seleccionadas aquellas filas
que tomen igual valor en aquella/s filas expresadas en la operación. Para que la operación
se pueda producir es necesario que ambas relaciones presenten, al menos, un campo en
común sobre el que establecer la condición de igualdad
R|x|S
R∩S
− División: dadas dos relaciones R y S en las que existe un subconjunto de atributos (X) que
están formando parte de S y R al mismo tiempo y otro conjunto de atributos (Y) que
únicamente forman parte de R, se define la división o cociente como la relación resultante
de combinar cada fila de Y con todas las filas que forman parte de los atributos X. En
definitiva, para que t aparezca en el resultado, los valores de t deben aparecer en R en
combinación con cada tupla de S.
R÷S
En el año 1985, Codd estableció una regla general global, llamada “Regla Cero” y doce
principios, de los cuales al menos seis deben satisfacerse para que una base de datos pueda
considerarse relacional. Estos son los siguientes:
- Regla 0. Gestión de una Base de Datos Relacional. Un sistema de gestión de bases de
datos relacionales (SGBDR) debe ser capaz de manejar las bases de datos exclusivamente
con sus capacidades relacionales.
- Regla 1. Representación de la información. Toda la información en una base de datos
relacional se representa explícitamente a nivel lógico y de una manera única, por medio
de valores en tablas.
- Regla 2. Acceso garantizado. Todos y cada uno de los datos elementales en una base de
datos relacional deben ser accesibles lógicamente mediante una combinación de: nombre
de tabla, valor de clave primaria y nombre de columna.
- Regla 3. Representación sistemática de la información que falta. Los valores nulos deben
ser soportados por un SGBD completamente relacional para representar, de modo
sistemático, la información desconocida o inaplicable.
- Regla 4. Catálogo dinámico. La descripción de la base de datos se representa a nivel lógico
en la misma forma que los datos, de forma que los usuarios autorizados puedan aplicar el
mismo lenguaje relacional para consultarlo.
- Regla 5. Sublenguaje global de datos. Debe existir, al menos, un lenguaje cuyas sentencias
sean expresables mediante una sintaxis bien definida, como cadena de caracteres, y capaz
de soportar definición de datos, definición de vistas, manipulación de datos, restricciones
de integridad, autorizaciones y manejo de transacciones.
- Regla 6. Actualización de vistas. Todas las vistas teóricamente actualizables deberán ser
también actualizables por el sistema.
- Regla 7. Inserciones, actualizaciones y eliminaciones de alto nivel. La capacidad para
manejar como un solo operando una relación base o una relación derivada se aplica, no
En definitiva, de las reglas de Codd podernos concluir que un sistema de base de datos
relacional se caracteriza:
- Por presentar externamente sus datos como tablas, aunque internamente se sigan
manejando de forma convencional mediante índices, páginas, etc.
- Por la disponibilidad de un lenguaje para operar con las tablas, que al menos tenga las
funciones de recuperación, modificación, selección de subconjuntos de tablas sin
predefinición de caminos de acceso, definición de datos, etc., y que proporcione medios
para controla la integridad, seguridad y consistencia de los datos.
- Por disponer de interfaces que permitan el acceso concurrente desde terminales
interactivos y programas de aplicación, así como herramientas estándar para controlar la
operación y facilitar los procesos de respaldo y recuperación.
8. DISEÑO LÓGICO
A partir del esquema conceptual se elabora el modelo lógico. Este modelo debe coincidir con
el modelo datos soportado por el SGBD que se vaya a utilizar. Es nuestro caso el modelo de
datos es el modelo relacional.
Las técnicas de modelado conceptual son diferentes de las técnicas de modelado lógico, por
lo que habrá que convertir cada elemento presente en el modelo conceptual en elementos
expresables en la técnica de modelado lógico que hayamos seleccionado. Para ello se realizan
una serie de transformaciones y el proceso de normalización.
El resultado es una información más precisa y al mismo tiempo más breve al haberse
eliminado el Código de Control al ser posible calcularlo a partir de los demás campos.
Se observa que el atributo Movimientos puede tomar más de un valor, ya que una Cuenta
bancaria normalmente tiene más de un movimiento. Este tipo de atributos no son válidos en
el modelo relacional, por lo que es necesario eliminarlos.
La solución al problema consiste en crear una nueva entidad que represente al atributo
multivalorado y una relación entre esta entidad y la original. En nuestro ejemplo, esto se haría
de la siguiente manera:
Por lo tanto, un movimiento pertenece a una cuenta y una cuenta puede tener múltiples
movimientos.
Sin embargo, en el siguiente ejemplo no sería normal que se eliminara alguna de las
relaciones, aun cuando estén vinculando a las mismas entidades, ya que la carga semántica
de cada una de ellas es diferente:
Para ello, se emplea la sentencia CREATE DOMAIN. En otro caso, será necesario utilizar los
tipos primitivos más afines con el dominio representable y delimitar sus elementos mediante
restricciones de usuario asociadas a la tabla a la que pertenezca el atributo con tal dominio.
TRANSFORMACIÓN DE ENTIDADES
Cada entidad del modelo conceptual se transforma en una relación o tabla con estructura
relacional. La clave primaria de la entidad pasa a ser la clave primaria de la relación. Los
atributos que forman parte de la clave no podrán tomar el valor nulo.
TRANSFORMACIÓN DE ATRIBUTOS
Cada atributo se transforma en una columna de la tabla en la que se transformó la entidad a
la que pertenece. El identificador único se convierte en clave primaria.
− Claves Primarias o Identificadores: las claves primarias o identificadores de la entidad
pasan a ser claves primarias en la relación resultantes (PRIMARY KEY).
− Claves candidatas (o alternativas): se transforman como atributos convencionales, pero
en su implementación deberá añadirse la restricción UNIQUE.
− Atributos convencionales: se transforman en campos de la relación con el dominio que
tuvieran asignado.
− Atributos compuestos y multivalorados: se transforman tal y como se indicaba más
arriba.
TRANSFORMACIÓN DE RELACIONES
Relaciones 1:1
Como norma general, es un caso particular de las 1:N y por tanto se propaga la clave en las
dos direcciones. Se debe analizar la situación, intentando recoger la mayor semántica posible,
y evitar valores nulos.
Ejemplo:
2) Si una de las cardinalidades mínimas es cero y la otra no, será (1,1), conviene propagar la
clave de esta última (la obligatoria) a la primera.
3) Si las dos entidades participan de forma completa, es decir, todas cardinalidades mínimas
son 1:
a. Si las entidades tienen el mismo identificador se transforman en una única tabla
formada por la concatenación de los atributos de los dos tipos de entidad.
b. En el caso de que tengan diferente identificador, cada entidad se transforma en una
tabla y se puede propagar la clave de cualquiera de ellas a la tabla resultante de la otra,
teniendo en cuenta, en este caso, los accesos más frecuentes y prioritarios a los datos
de las tablas.
Relaciones 1:N
Según el caso que nos ocupe:
1) Relaciones entre entidades fuertes. Se utiliza el método de propagación de clave. En este
caso, el identificador de la entidad con cardinalidad uno cede su clave a la de cardinalidad
muchos. En esta última, pasa a ser una clave ajena.
Relaciones de agregación
Las relaciones de agregación se transforman del mismo modo que las 1:N.
Relaciones Reflexivas
Cuando se trata de relaciones reflexivas con correspondencia 1:N se transforma utilizando el
método de propagación de clave, aunque, en este caso, al tratarse de la misma tabla, es
necesario renombrar el nombre del identificador que se transfiere, ya que si no estaría
repetido respecto del ya existente en la entidad de origen.
La relación entre tablas se representa gráficamente mediante una línea que las une. En ella
pueden aparecer en sus extremos diversos símbolos para indicar la cardinalidad de la relación,
como se muestra a continuación:
TRANSFORMACIÓN DE JERARQUÍAS
En el modelo lógico relacional no se dispone de instrumentos que permitan representar
supertipos y subtipos. Se definen distintos métodos de transformación, dependiendo de los
objetivos perseguidos:
− Información semántica representada en el modelo.
− Eficiencia de acceso a los datos.
Opción 1. Consiste en crear una tabla para el supertipo que tenga de clave primaria el
identificador y una tabla para cada uno de los subtipos que tengan el identificador del
supertipo como clave ajena.
Esta solución es apropiada cuando los subtipos tienen muchos atributos distintos y se quieren
conservar los atributos comunes en una tabla. También se deben definir las restricciones y
aserciones adecuadas. Es la solución que mejor conserva la semántica.
Opción 2. Se crea una tabla para cada subtipo, los atributos comunes aparecen en todos los
subtipos y la clave primaria para cada tabla es el identificador del supertipo.
Esta opción mejora la eficiencia en los accesos a todos los atributos de un subtipo, sean los
comunes al supertipo o los específicos.
Opción 3. Agrupar en una tabla todos los atributos de la entidad supertipo y de los subtipos.
La clave primaria de esta tabla es el identificador de la entidad. Se añade un atributo que
indique a qué subtipo pertenece cada ocurrencia (el atributo discriminante de la jerarquía).
Esta solución puede aplicarse cuando los subtipos se diferencien en pocos atributos y las
relaciones entre los subtipos y otras entidades sean las mismas. Para el caso de que la
jerarquía sea total, el atributo discriminante no podrá tomar valor nulo (ya que toda
ocurrencia pertenece a alguna de las entidades subtipo).
Cada uno de los elementos del modelo de clases se tiene que transformar en un elemento del
modelo físico. En algunos casos la transformación es directa porque el concepto se soporta
igual en ambos modelos, pero otras veces no existe esta correspondencia, por lo que es
necesario buscar una transformación que conserve lo mejor posible la semántica, teniendo en
cuenta los aspectos de eficiencia que sean necesarios en cada caso.
TRANSFORMACIÓN DE CLASES
Una clase se transforma en una tabla. Lo habitual es que en los modelos con herencia pueden
surgir excepciones cuando se apliquen las reglas de transformación propias de la herencia.
Además, es posible que dos clases se transformen en una sola tabla cuando el
comportamiento de una de ellas sea irrelevante en la base de datos.
Si existen restricciones asociadas a los atributos, éstas pueden recogerse con algunas cláusulas
del lenguaje lógico, que se convertirán en disparadores cuando éstos sean soportados por el
sistema gestor de base de datos.
TRANSFORMACIÓN DE RELACIONES
Relaciones 1:1
Es un caso particular de las 1:N y se puede tanto crear una tabla o propagar la clave, si bien,
en este último caso, la clave se propaga en las dos direcciones.
Para decidir qué solución adoptar, se debe analizar la situación, intentando recoger la mayor
semántica posible, y evitar valores nulos.
Relaciones M:N
Se transforman en una tabla, cuya clave primaria es la concatenación de los identificadores de
las clases asociadas, siendo cada uno de ellos clave ajena de la propia tabla. Si la relación tiene
atributos, éstos se transforman en columnas de la tabla.
Relaciones 1:N
Existen varias posibilidades:
1) Propagar el identificador de la clase de cardinalidad máxima 1 a la que es N, teniendo en
cuenta que:
- Relación de asociación: la clave propagada es clave ajena en la tabla a la que se ha
propagado.
- Relación de dependencia: la clave primaria de la tabla correspondiente a la clase débil
está formada por la concatenación de los identificadores de ambas clases.
Al igual que en el caso de relaciones M:N, las claves propagadas son claves ajenas de la nueva
tabla creada.
Relaciones de agregación
Las relaciones de agregación se transforman del mismo modo que las 1:N.
una de esas claves es nula en cada ocurrencia. En caso de no propagarse las claves, estas
comprobaciones se deben hacer en las tablas resultantes de transformar las relaciones.
TRANSFORMACIÓN DE LA HERENCIA
Existen varias posibilidades que deben ser evaluadas por el diseñador a fin de elegir la que
mejor se ajuste a los requisitos. Las opciones para tratar la transformación de la herencia son:
Opción 1. Consiste en crear una tabla para la superclase que tenga de clave primaria el
identificador y una tabla para cada una de las subclases que tengan el identificador de la
superclase como clave ajena.
Esta solución es apropiada cuando las subclases tienen muchos atributos distintos, y se
quieren conservar los atributos comunes en una tabla. También se deben implantar las
restricciones y/o aserciones adecuadas. Es la solución que mejor conserva la semántica.
Opción 2. Se crea una tabla para cada subclase, los atributos comunes aparecen en todas las
subclases y la clave primaria para cada tabla es el identificador de la superclase.
Esta opción mejora la eficiencia en los accesos a todos los atributos de una subclase (los
heredados y los específicos).
Opción 3. Agrupar en una tabla todos los atributos de la clase y sus subclases. La clave primaria
de esta tabla es el identificador de la clase. Se añade un atributo que indique a qué subclase
pertenece cada ocurrencia (el atributo discriminante de la jerarquía).
Esta solución puede aplicarse cuando las subclases se diferencien en pocos atributos y las
relaciones que asocian a las subclases con otras clases, sean las mismas. Para el caso de que
la jerarquía sea total, el atributo discriminante no podrá tomar valor nulo (ya que toda
ocurrencia pertenece a alguna subclase).
9. NORMALIZACIÓN
La teoría de la normalización, como técnica formal para organizar los datos, ayuda a encontrar
fallos y a corregirlos, evitando así introducir anomalías en las operaciones de manipulación
de datos (Técnica de Métrica v3).
Se dice que:
“Una relación está en una determinada forma normal si satisface un cierto conjunto de
restricciones sobre los atributos.”
Cuantas más restricciones existan, menor será el número de relaciones que las satisfagan, así,
por ejemplo, una relación en tercera forma normal estará también en segunda y en primera
forma normal. Y, en consecuencia, cuanto más alta sea la forman normal aplicable a una
relación menos vulnerable será a inconsistencias y anomalías.
Antes de definir las distintas formas normales se explican, muy brevemente, algunos
conceptos necesarios para su comprensión.
Dependencia funcional
Un atributo Y se dice que depende funcionalmente de otro X si, y sólo si, a cada valor de X le
corresponde un único valor de Y, lo que se expresa de la siguiente forma: X → Y (también se
dice que X determina o implica a Y). X se denomina implicante o determinante e Y es el
implicado.
Dependencia transitiva
Un atributo depende transitivamente de otro si, y sólo si, depende de él a través de otro
atributo. Así, Z depende transitivamente de X, si:
X→Y
Y --/→ X
Y→Z
Una vez definidas las anteriores dependencias, se pueden enunciar las formas normales:
− Primera, Segunda y Tercera Formas Normales: Codd en 1970.
− Forma Normal de Boyce y Codd (FNBC): Boyce-Codd en 1974.
− Cuarta Forma Normal (4FN): Fagin en 1977.
− Quinta Forma Normal (5FN): Fagin en 1979.
1FN
2FN
3FN
FNBC
4FN
5FN
Una vez identificados los atributos que no dependen funcionalmente de la clave principal, se
formará con ellos una nueva relación y se eliminarán de la antigua. La clave principal de la
nueva relación estará formada por la concatenación de uno o varios de sus atributos más la
clave principal de la antigua relación.
Ejemplo:
Se soluciona repitiendo toda la tupla para cada uno de los valores del grupo repetitivo.
Una vez identificados los atributos que no dependen funcionalmente de toda la clave, sino
sólo de parte de la misma, se formará con ellos una nueva relación y se eliminarán de la
antigua. La clave principal de la nueva relación estará formada por la parte de la antigua de la
que dependen funcionalmente.
Ejemplo:
Solución:
R1(ALMACÉN, PIEZA, CANTIDAD)
R2(ALMACÉN, DIR_ALMACÉN)
Una vez identificados los atributos que dependen de otro atributo distinto de la clave, se
formará con ellos una nueva relación y se eliminarán de la antigua. La clave principal de la
nueva relación será el atributo del cual dependen. Este atributo en la relación antigua pasará
a ser una clave ajena.
Ejemplo:
Solución:
R1(MATRICULA, MODELO)
R2(MODELO, POTENCIA)
Está a medio camino entre la 3FN -ligeramente más fuerte- pero todavía no es 4FN.
Ejemplo:
R(dni, nombre, codalumno, codasig, nota)
Solución:
R1(dni, codalumno, nombre)
R2(dni, codasig, nota)
Ejemplo:
R(alumno, asignatura, profesor, nota)
Dependencias:
{alumno, asignatura} à profesor
{alumno, asignatura} à nota
{profesor} à asignatura
Claves candidatas:
{alumno, asignatura}
{alumno, profesor}
{profesor} à asignatura y, por tanto, R no está en FNBC ya que Profesor no es clave candidata.
Solución:
R1(alumno, asignatura, nota)
R2(profesor, asignatura)
Solución:
Si en cada dependencia de reunión denotada por (X1, X2, ..., Xn), cada Xi es una clave
candidata.
Cuando una relación se descompone en más de dos relaciones (porque no se pueda encontrar
una descomposición sin pérdidas en dos proyecciones), se ha de cumplir este requisito para
para que la descomposición sea sin pérdidas.
Ejemplo:
Solidarios(ONG, Proyecto, Lugar)
Si aplicamos una Reunión Natural a dos de esas tres relaciones, se producen tuplas falsas, pero
si aplicamos una Reunión Natural a las tres NO se producen tuplas falsas.
7. La normalización en Métrica v3
En ASI 6 “Elaboración del modelo de datos” se lleva a cabo la normalización del modelo lógico
de datos:
En función del SGBD, los requisitos y el entorno, se busca la eficiencia, tratando de mejorar
tiempos de respuesta y optimizar los recursos del sistema.
Por tanto, el objetivo es obtener un esquema interno de la BD que cumpla lo mejor posible
los objetivos de funcionamiento de la BD que los usuarios esperan: minimizar el tiempo de
respuesta de la BD y su espacio de almacenamiento e incrementar la seguridad.
El diseño físico se divide de cuatro fases, cada una de ellas compuesta por una serie de pasos:
− Traducir el esquema lógico para el SGBD específico.
− Diseñar la representación física.
− Diseñar los mecanismos de seguridad.
− Monitorizar y afinar el sistema.
ATENCIÓN: La obtención de modelo lógico de datos a partir del modelo conceptual a través
de transformaciones (vistas en el apartado anterior), Métrica v3 lo presenta como diseño
físico en lugar de diseño lógico, usando la técnica Reglas de Obtención del Modelo Físico a
partir del Lógico.
El objetivo de esta técnica es obtener un modelo físico de datos a partir del modelo lógico
de datos normalizado. Para ello es necesario aplicar un conjunto de reglas que conserven la
semántica del modelo lógico.
Cada uno de los elementos del modelo lógico se tiene que transformar en un elemento del
modelo físico. En algunos casos la transformación es directa porque el concepto se soporta
igual en ambos modelos, pero otras veces no existe esta correspondencia, por lo que es
necesario buscar una transformación que conserve lo mejor posible la semántica, teniendo en
cuenta los aspectos de eficiencia que sean necesarios en cada caso.
El esquema lógico consta de un conjunto de relaciones o tablas y, para cada una de ellas, se
tiene:
- El nombre de la relación.
- La lista de atributos entre paréntesis.
- La clave primaria y las claves ajenas, si las tiene.
- Las reglas de integridad de las claves ajenas.
Como consecuencia de todo ello se podrán crear los “scripts” de la base de datos escritos con
la sintaxis y funcionalidades del LDD del SGBDR. Las dos órdenes fundamentales a utilizar en
este caso son: CREATE TABLE y CREATE DOMAIN.
Esta sintaxis, además, permite incluir referencias al modo de almacenamiento como pueden
ser: ficheros físicos o lógicos (tablespaces) asignables a cada tabla, segmentos o bloque
asignados inicialmente y en expectativa de crecimiento, particionamientos de la estructura,
etc.
Además, será necesario completar la funcionalidad de las estructuras creadas mediante las
denominadas restricciones de usuario, que permitirán delimitar las actualizaciones que se
realizan sobre las relaciones de la base de datos mediante restricciones, aserciones o
disparadores. En cuanto a las primeras, se definen mediante la cláusula de CREATE TABLE,
CONSTRAINT CHECK (<condición>), las segundas mediante la orden CREATE ASSERTION y los
últimos con CREATE TRIGGER.
Normalmente, todos estos factores no se pueden satisfacer a la vez. Por lo tanto, el diseñador
deberá ir ajustando estos factores para conseguir un equilibrio razonable. El diseño físico
inicial no será el definitivo, sino que habrá que ir monitorizándolo para observar sus
prestaciones e ir ajustándolo como sea oportuno.
Cálculo de accesos
El cálculo de accesos es una práctica de Métrica v3 que permite realizar una estimación del
número de accesos aproximado que debe realizarse para obtener la información de cada
consulta, tomando como referencia las vistas del modelo de datos obtenidas como
consecuencia del análisis de los caminos de acceso a los datos.
Esta práctica se utiliza en los procesos Análisis del Sistema de Información (ASI) y Diseño del
Sistema de Información (DSI) aplicando los mismos criterios, la única diferencia es que
mientras en el primero el acceso es lógico y permite determinar la viabilidad de las consultas,
en el segundo es físico y permite establecer las pautas para la optimización del modelo físico
de datos.
El cálculo de accesos consiste en realizar una estimación del número de ocurrencias o filas de
cada entidad o tabla/fichero del modelo de datos que deben ser leídas, teniendo en cuenta
los identificadores/claves candidatas o índices asociados a cada entidad o tabla/fichero a leer.
Una vez realizada la estimación inicial del número de accesos, se ajustan los valores obtenidos,
dividiendo por la prioridad establecida para cada acceso (por ejemplo 1: alta, 2: media, 3: baja)
y multiplicando el resultado obtenido por la frecuencia del acceso, es decir el número de veces
que se ejecuta la consulta al día.
Caminos de acceso
El objetivo de esta práctica de Métrica v3 es analizar la secuencia de acceso a los datos que
realizan los módulos a través del modelo de datos. También puede utilizarse para entornos de
ficheros.
Permite verificar en el proceso Análisis del Sistema de Información (ASI) que el modelo lógico
de datos normalizado satisface las principales consultas de información recogidas en el
catálogo de requisitos, y en el proceso Diseño del Sistema de Información (DSI) que el modelo
físico de datos soporta adecuadamente los principales accesos de actualización, cuando
proceda, y de consulta.
Los caminos de acceso representan la secuencia y tipo de acceso a los datos persistentes del
sistema, que deben realizar los procesos primitivos a partir del modelo lógico de datos
normalizado, o los módulos/clases a partir del modelo físico de datos.
En función del modelo de datos sobre el que se realiza el acceso, se identifican las entidades
o tablas/ficheros que deben ser accedidas por cada proceso primitivo o módulo/clase, y se
crean vistas del modelo de datos en el que aparecen únicamente dichas entidades
(subconjunto del modelo de datos). Es conveniente examinar todas las entidades relacionadas
con las identificadas inicialmente, debido a que puede que aparezcan más entidades que no
se habían contemplado en un primer momento.
Para cada entidad identificada se indica el tipo de acceso realizado, es decir, si se trata de una
lectura, inserción, modificación o eliminación.
Una vez identificadas las entidades o tablas/ficheros y el tipo de acceso, el siguiente paso es
determinar el orden que se sigue para la obtención de los datos a través del modelo de datos,
con el fin de identificar accesos redundantes o excesivamente complejos que puedan
comprometer el rendimiento final del sistema.
Se recomienda aplicar esta práctica para aquellos módulos que presenten, entre otras, alguna
de las siguientes características:
- Tratamiento crítico.
- Accesos complejos a datos.
- Alta concurrencia.
Por ejemplo, un fichero desordenado es una buena estructura cuando se va a cargar gran
cantidad de datos en una relación al inicializarla, cuando la relación tiene pocas tuplas,
también cuando en cada acceso se deben obtener todas las tuplas de la relación, o cuando la
relación tiene una estructura de acceso adicional, como puede ser un índice.
Por otra parte, los ficheros dispersos (hashing) son apropiados cuando se accede a las tuplas
a través de los valores exactos de alguno de sus campos (condición de igualdad en el WHERE).
Si la condición de búsqueda es distinta de la igualdad (búsqueda por rango, por patrón, etc.),
la dispersión no es una buena opción. Hay otras organizaciones, como la ISAM o los árboles
B+.
que la desnormalización sólo debe realizarse cuando se estime que el sistema no puede
alcanzar las prestaciones deseadas. Por lo tanto, hay que tener en cuenta los siguientes
factores:
- La desnormalización hace que la implementación sea más compleja.
- La desnormalización hace que se sacrifique la flexibilidad.
- La desnormalización puede hacer que los accesos a datos sean más rápidos, pero ralentiza
las actualizaciones.
Optimización
La optimización consiste en una desnormalización controlada del modelo físico de datos que
se aplica para reducir o simplificar el número de accesos a la base de datos.
El objetivo de esta técnica es reestructurar el modelo físico de datos con el fin de asegurar
que satisface los requisitos de rendimiento establecidos y conseguir una adecuada eficiencia
del sistema, según se define en Métrica v3.
- Diseñar las reglas de acceso: para cada usuario o grupo de usuarios se determinan tanto
los permisos sobre determinados objetos de la base de datos, como los permisos o
privilegios del sistema, es decir, las operaciones de DDL que están disponibles para ese
usuario o grupo. Normalmente, los privilegios se agrupan en conjuntos denominados
«Roles». Para otorgar un permiso o rol se utiliza la orden GRANT y para denegarlo REVOKE.
Se definen mediante el Lenguaje de Control de Datos (DCL).
Este proceso no es estático y puntual, sino que la monitorización está presente a lo largo de
toda la vida del sistema, requiriéndose nuevas modificaciones (refinar) para adaptarse a los
nuevos requisitos.
Equipo de Arquitectura
Optimización del
Modelo físico de datos Equipo de Proyecto
DSI 6.3 Modelo Físico de Optimización
optimizado DBAs
Datos
Equipo de Seguridad
Esquemas físicos de
Especificación de la Equipo de Seguridad
datos
DSI 6.4 Distribución de Matricial Equipo de Soporte
Asignación de esquemas
Datos Técnico
físicos de datos a nodos
El objetivo de esta tarea es realizar el diseño del modelo físico de datos a partir del modelo
lógico de datos normalizado o del modelo de clases, en el caso de diseño orientado a objetos.
Como paso previo al diseño de la estructura física de datos, se analizan las peculiaridades
técnicas del gestor de bases de datos o sistema de ficheros a utilizar, y las estimaciones sobre
la utilización y volumen de las ocurrencias de cada entidad/clase del modelo lógico de datos
normalizado o modelo de clases. Además, si se ha establecido la necesidad de llevar a cabo
una migración de datos, se deben tener en cuenta también los volúmenes de las estructuras
de datos implicadas en la conversión. Esta información sirve para decidir la mejor
implementación del modelo lógico de datos/modelo de clases, así como para hacer una
estimación del espacio de almacenamiento.
También se definen aquellos elementos que, en función del gestor o sistemas de ficheros a
utilizar, se considere necesario implementar, como bloqueo, compresión de datos, clusters…
El objetivo de esta tarea es determinar los caminos de acceso a los datos persistentes del
sistema, utilizados por los principales módulos/clases de acuerdo al modelo físico de datos,
con el fin de optimizar el rendimiento de los gestores de datos o sistemas de ficheros y el
consumo de recursos, así como disminuir los tiempos de respuesta.
Para el inicio de esta tarea, se toma como referencia el Diseño Detallado de los Subsistemas
de Soporte (DSI 2.1) y el Diseño de la Arquitectura Modular (DSI 5) o Diseño de Clases (DSI 4)
de los subsistemas específicos, productos que se están generando en paralelo a esta actividad.
Para cada módulo/clase se identifican las tablas o ficheros y el tipo de acceso realizado, así
como el orden que debe seguirse para la obtención de los datos. Asimismo, se efectúa una
estimación del número de accesos que deben realizarse teniendo en cuenta, a su vez, la
frecuencia y la prioridad del acceso.
En esta tarea se optimiza el diseño físico de datos, con el objetivo de mejorar el tiempo de
respuesta en el acceso a datos persistentes, hacer una adecuada utilización de los recursos
del sistema y, en consecuencia, garantizar que el diseño satisface las necesidades de
tratamiento establecidas para el sistema de información en cuanto a que se ajusta a los
requisitos de rendimiento exigidos.
Una transacción es una secuencia de operaciones de acceso a la BD que constituye una unidad
lógica de ejecución.
Podemos observar en el ejemplo que las operaciones de la transacción deben ejecutarse todas
o ninguna, que si falla la operación 4 o 5 la BD quedará en un estado inconsistente, que los
cambios en los datos no deben ser visibles hasta que la transacción sea confirmada y que una
vez finalice con éxito la ejecución de las operaciones se deben confirmar los cambios en la BD.
Del ejemplo visto, se desprenden las propiedades que deben cumplir las transacciones:
- ATOMICIDAD: una transacción es una unidad atómica de ejecución. O se ejecutan todas
sus operaciones o ninguna.
- CONSISTENCIA: la transacción debe dar lugar a un estado de la BD consistente,
cumpliéndose todas las restricciones de integridad, es decir, nunca dejará datos
inconsistentes.
- AISLAMIENTO: las modificaciones introducidas por una transacción no confirmada no son
visibles al resto de transacciones.
- DURABILIDAD: la confirmación implica la grabación de los cambios introducidos en la BD,
de modo que serán permanentes.
A estas propiedades se las suele conocer como propiedades ACID por sus siglas en inglés:
Atomicity, Consistency, Isolation y Durability.
Por tanto, esta unidad lógica de trabajo es un conjunto de sentencias que se ejecutan como si
fuesen una única sentencia. Además, existe una relación entre las sentencias que forman
parte de una transacción, de tal forma que la no ejecución de una sentencia supone que
carezca de sentido la ejecución de las demás.
Las transacciones se inician de forma implícita al ejecutar sentencias como CREATE, ALTER,
INSERT, UPDATE o de forma explícita con la sentencia SET TRANSACTION.
La finalización de una transacción debe ser explícita con una de las siguientes sentencias:
- COMMIT: confirma los cambios realizados en la base de datos durante la ejecución de la
transacción.
En bases de datos distribuidas se utiliza el algoritmo protocolo commit en 2 fases (two
phase commit) para la gestión de transacciones. Está basado en la existencia de un
coordinador. Al resto de nodos de la red se les llama participantes. El protocolo se divide
en dos fases: fase de preparación de commit donde el coordinador intenta preparar a
todos los participantes y fase commit donde el coordinador completa las transacciones a
todos los participantes.
- ROLLBACK: deshace todos los cambios que se hayan producido en la base de datos y se
vuelve al estado anterior al inicio de la ejecución de la transacción.
- SAVEPOINT: define un punto de recuperación en una transacción para poder revertirla
hasta dicho punto mediante ROLLBACK.
Los estados por los que pasa una transacción están representados en el siguiente diagrama:
Por otro lado, y en relación con las transacciones, es misión del SGBD la gestión de la
concurrencia y los bloqueos. Para ello, supongamos las operaciones de acceso:
- leer(X): consulta de un dato.
- escribir(X): actualización (inserción, modificación o borrado) de un dato.
Visto en el ejemplo el acceso concurrente a los datos, el SGBD controla los accesos
concurrentes para evitar la pérdida de actualizaciones, la obtención de información
incoherente y la lectura de datos no confirmados que podrían ser anulados.
Los problemas de interferencias entre transacciones que nos podemos encontrar son:
− Lectura NO REPETIBLE: dos transacciones paralelas intentan modificar el mismo objeto de
la base de datos, leyendo ambas el valor antes de que la otra transacción lo actualice. Es
decir, ocurre cuando una transacción T1 lee dos veces un valor y no coinciden porque una
segunda transacción T2 ha modificado dicho valor entre ambas lecturas.
T1 lee fila A.
T2 modifica fila A.
T1 lee de nuevo la fila A y obtiene resultados diferentes.
− Lectura SUCIA: cuando se permite que una transacción lea una fila que fue modificada por
otra transacción que todavía no hizo commit y, por lo tanto, no ha almacenado el nuevo
valor. Es decir, ocurre cuando una transacción T2 lee un dato modificado por otra
transacción T1 antes de que haya realizado el commit (viola la propiedad de aislamiento).
Si T1 falla o realiza otra modificación del dato, el valor leído por T2 nunca ha llegado a ser
válido.
T1 inserta fila A.
T2 lee fila A.
T1 ejecuta rollback (se pierde la fila A).
Según el nivel de error que se considere aceptable en nuestro sistema, se establecerá el NIVEL
DE AISLAMIENTO necesario para evitar alguno o todos los problemas descritos en el apartado
anterior. Los niveles de aislamiento de las transacciones contemplados en ANSI SQL-92 son
(de menor a mayor nivel de aislamiento):
- Lectura NO COMPROMETIDA (read uncommitted): los cambios realizados por las
transacciones se encuentran disponibles inmediatamente. También denominada lectura
no confirmada.
- Lectura COMPROMETIDA (read committed): los cambios realizados por las transacciones
sólo se encuentran a disposición del resto cuando se comprometen (se realiza un commit).
Previene solo las lecturas sucias. También denominada lectura confirmada.
- Lectura REPETIBLE (repeatable read): las filas leídas o actualizadas por una transacción
quedan bloqueadas hasta que dicha transacción termina. Previene la lectura sucia y la
lectura no repetible.
- SERIALIZABLE: las transacciones ejecutadas de manera simultánea producen los mismos
efectos que si se ejecutaran en serie. Previene todas las interferencias entre transacciones.
EVITA la interferencia
Nivel de aislamiento Lectura SUCIA Lectura NO REPETIBLE Lectura FANTASMA
Lectura NO COMPROMETIDA NO NO NO
Lectura COMPROMETIDA SI NO NO
Lectura REPETIBLE SI SI NO
SERIALIZABLE SI SI SI
El tamaño del elemento de datos o granularidad adecuado para el bloqueo (por ejemplo, fila
o tabla) afecta al grado de concurrencia de forma que, a menor tamaño del elemento que es
bloqueado aumenta el grado de concurrencia, aumenta la carga de trabajo para la gestión de
bloqueos y el espacio ocupado por la información de bloqueos.
1. Mecanismos pesimistas
Protocolos:
- Protocolo basado en BLOQUEOS: los datos son bloqueados (operación lock) previamente
a su modificación para evitar que nadie más los modifique. Una vez realizados los cambios,
se confirman los cambios mediante un commit o se deshacen mediante un rollback,
Los modos mediante los cuales se puede bloquear un elemento de datos son:
- Compartido: si una transacción T obtiene un bloqueo en modo compartido (C) sobre
el elemento Q, entonces T puede leer Q pero no lo puede escribir à bloquear_C(Q).
- Exclusivo: si una transacción obtiene un bloqueo en modo exclusivo (X) sobre el
elemento Q, entonces T puede tanto leer como escribir Q à bloquear_X(C).
Es necesario que toda transacción solicite un bloqueo del modo apropiado sobre el
elemento de datos Q dependiendo de los tipos de operaciones que se vayan a realizar
sobre Q.
A toda transacción Ti del sistema se le asocia una única marca temporal fijada por el
sistema. Si a la transacción Ti se le ha asignado la marca temporal MT(Ti) y una nueva
transacción Tj entra en el sistema, entonces MT(Ti) < MT(Tj). Las marcas temporales de las
transacciones determinan el orden de secuencia. De este modo, si MT(Ti) < MT(Tj)
entonces el sistema debe asegurar que toda planificación que produzca es equivalente a
una planificación secuencial en la cual la transacción Ti aparece antes que la transacción
Tj. Por lo que se usa el orden de las marcas de tiempo para garantizar la serializabilidad.
Este protocolo asegura que todas las operaciones leer y escribir conflictivas se ejecutan en
el orden de las marcas temporales, operando de la siguiente forma:
o Si una transacción T quiere leer X:
a) Si MT(T) < MT_escritura(X) entonces T necesita leer un valor de X que ya se ha
sobrescrito por lo que se rechaza la operación leer y T se retrocede.
b) Si MT(T) ≥ MT_escritura(X) entonces se ejecuta la operación leer y MT_lectura(X)
= max(MT_lectura(X), MT(T)).
T1 T2
leer(B)
leer(B)
B = B - 50
escribir(B)
leer(A)
leer(A)
visualizar(A+B)
A = A + 50
escribir(A)
visualizar(A+B)
2. Mecanismos optimistas
Protocolos:
- Protocolo basado en VALIDACIÓN: cada transacción T se ejecuta en dos o tres fases
diferentes durante su tiempo de vida dependiendo de si es una transacción de sólo lectura
o una de actualización. Las actualizaciones se realizan inicialmente sobre copias locales
(como las versiones). Este protocolo no impone restricciones, no requiere bloqueo y se
comprueban posibles interferencias al final. Se compone de 3 fases:
o Fase de lectura: ejecución de la transacción T. Los cambios se guardan en variables
locales temporales, no actualizándose la base de datos.
o Fase de validación: se comprueba si ha habido algún conflicto por la ejecución de T, es
decir, si se pueden copiar las variables locales a la base de datos preservando la
secuencialidad.
o Fase de escritura: si la fase de validación ha tenido éxito se actualización los datos a la
base de datos. En otro caso, T se retrocede.
3. Esquemas multiversión
En los esquemas de control de concurrencia multiversión, cada operación escribir(X) crea una
nueva versión de X. Cuando se realiza una operación leer(X) el gestor de control de
concurrencia elige una de las versiones de X que se va a leer. El esquema de control de
concurrencia debe asegurar que la elección de la versión que se va a leer se haga de tal manera
que asegure la secuencialidad. Asimismo, es crucial por motivos de rendimiento, que una
transacción sea capaz de determinar rápida y fácilmente la versión del elemento de datos que
se va a leer.
A cada elemento de datos X se le asocia una secuencia de versiones <X1, X2, … , Xn>. Cada
versión Xi contiene tres campos:
o contenido es el valor de la versión Xi.
o MT_escritura(Xi) es la marca temporal de la transacción que haya creado la versión Xi.
o MT_lectura(Xi) es la mayor marca temporal de todas las transacciones que hayan leído
con éxito la versión Xi.
Una transacción T crea una nueva versión Xi del elemento de datos X cuando realiza la
operación escribir(X).
o contenido de la versión = valor que ha escrito T.
o MT_escritura(Xi) = MT(T).
- Bloqueo de dos fases multiversión: combina las ventajas del control de concurrencia
multiversión con las ventajas del bloqueo de dos fases. Este protocolo distingue entre
transacciones de sólo lectura y transacciones de actualización.
A las transacciones de sólo lectura se les asigna una marca temporal leyendo el valor actual
de contador_mt antes de que comiencen su ejecución. Para realizar las lecturas siguen el
protocolo de ordenación por marcas temporales multiversión. Así, cuando una transacción
de sólo lectura T ejecuta leer(X), el valor que se devuelve es el contenido de la versión con
la mayor marca temporal menor que MT(T).
4. Tratamiento de interbloqueos
Ante una situación de interbloqueo, donde toda transacción de un conjunto dado está
esperando a otra transacción del mismo conjunto, se deben tratar dichos interbloqueos de
dos formas:
- PREVENCIÓN de interbloqueos: asegura que el sistema no llegará nunca a un estado de
interbloqueo. Existen dos enfoques a la prevención de interbloqueos. Un enfoque asegura
que no puede haber esperas cíclicas ordenando las peticiones de bloqueo o exigiendo que
todos los bloqueos se adquieran juntos. El otro enfoque es más cercano a la recuperación
de interbloqueos y realiza retrocesos de las transacciones en lugar de esperar un bloqueo,
siempre que el bloqueo pueda llevar potencialmente a un interbloqueo.
Para la detección de interbloqueos se utiliza un grafo de espera, donde los nodos representan
las transacciones y los arcos las esperas.