Bases de Datos Tema 9 Diseño de bases de datos relacionales

Anuncio
Departamento de Lenguajes y Sistemas Informáticos
E.T.S. Ingeniería Informática. Universidad de Sevilla
Avda Reina Mercedes s/n. 41012 Sevilla
Tlf/Fax 954 557 139 E-mail [email protected] Web www.lsi.us.es
E.T.S. Ingeniería
Informática
Bases de Datos
Tema 9
Diseño de bases de datos relacionales
Sevilla, abril 2005
V 2005.01.1
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Indice
1
INTRODUCCIÓN ......................................................................................... 3
1.1
1.2
2
DISEÑO DE BD RELACIONALES .................................................................................... 3
ANOMALÍAS DE MANIPULACIÓN ................................................................................... 3
DEPENDENCIAS FUNCIONALES............................................................ 4
2.1
CONCEPTO DE DEPENDENCIA FUNCIONAL .................................................................. 4
2.1.1 Descriptores equivalentes:........................................................................................................... 5
2.1.2 Dependencia funcional plena o completa................................................................................. 5
2.1.3 Dependencia funcional elemental .............................................................................................. 5
2.1.4 Dependencia funcional trivial (Reflexividad de Ärmstrong).................................................. 5
2.1.5 Dependencia funcional transitiva............................................................................................... 5
2.2
GRAFO DE DEPENDENCIAS FUNCIONALES (GDF)........................................................ 6
2.3
AXIOMAS DE ÄRMSTRONG ............................................................................................ 6
2.3.1 Reflexividad ................................................................................................................................... 6
2.3.2 Aumentatividad............................................................................................................................. 6
2.3.3 Transitividad.................................................................................................................................. 7
2.3.4 Proyectividad o descomposición................................................................................................ 7
2.3.5 Unión o aditividad........................................................................................................................ 7
2.3.6 Pseudotransitividad ...................................................................................................................... 7
2.4
CIERRE DE UN DESCRIPTOR ......................................................................................... 7
2.5
CIERRE DE UN CONJUNTO DE DEPENDENCIAS ............................................................ 7
2.6
COBERTURA MÍNIMA .................................................................................................... 8
3
FORMAS NORMALES DE CODD .............................................................. 9
3.1
DESCOMPOSICIONES SIN PÉRDIDAS .............................................................................10
3.1.1 Preservación de atributos. ......................................................................................................... 10
3.1.2 Preservación de dependencias. ................................................................................................. 10
3.1.3 Preservación del contenido de las tuplas o descomposición sin pérdida de join.............. 11
3.2
PRIMERA FORMA NORMAL (1FN) ................................................................................13
3.3
SEGUNDA FORMA NORMAL (2FN) ...............................................................................13
3.3.1 Justificación intuitiva.................................................................................................................. 13
3.3.2 Regla de descomposición de relaciones que no están en 2FN. ........................................... 15
3.4
TERCERA FORMA NORMAL (3FN) ...............................................................................15
3.4.1 Justificación intuitiva.................................................................................................................. 15
3.4.2 Descomposición de relaciones que no están en 3FN. .......................................................... 16
3.5
FORMA NORMAL DE BOYCE-CODD (FNBC) ...............................................................16
3.5.1 Justificación intuitiva.................................................................................................................. 16
3.5.2 Descomposición FNBC: Grafos cíclicos y acíclicos ............................................................. 17
3.6
COMPARACIÓN 3FN Y FNBC......................................................................................18
4
DISEÑO DE BASES DE DATOS RELACIONALES ............................... 20
4.1
4.2
ENFOQUE DE DESCOMPOSICIÓN: NORMALIZACIÓN .................................................. 20
ENFOQUE DE SÍNTESIS: SÍNTESIS BÁSICA DE BERNSTEIN .......................................... 20
Pág. 2 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
1 Introducción
1.1
Diseño de BD relacionales
Al diseñar intuitivamente1 una base de datos relacional se obtiene un esquema; diferentes
observadores generarán, sin duda, esquemas alternativos; el problema que se presenta es evaluar la
calidad o bondad de dicho esquema.
La calidad de un esquema estará determinada por el comportamiento o reacción a determinadas
operaciones de manipulación, de modo que un buen esquema presentará buen comportamiento
mientras que otros ofrecerán ciertos inconvenientes o anomalías de manipulación (actualización,
inserción y borrado) al escribir transacciones contra dicho esquema.
1.2 Anomalías de manipulación
El objetivo de las técnicas de diseño de bases de datos relacionales es “obtener esquemas exentos
de anomalías de manipulación”.
Ejemplo: Sean los esquemas relacionales ρ1 y ρ2 :
PK ( S #) 
Suminitradores( S # : Dcodigo, Noms : Dnombre, Ciudad : Dciudad )
 Piezas ( P # : Dcodigo, Peso : Dpeso, Color : Dcolor )
PK ( P #) 


ρ1 

Suministros
(
S
#
:
Dc
odigo
,
P
#
:
Dcodigo
,
Cant
:
Dcant
)
PK
(
S
#,
P
#)




FK
1(
S
#)
/
Suminitradores,
FK
2(
P
#)
/
Piezas


Suministradores
Suministros
S#
S1
S2
S3
S#
S1
S1
S2
S3
Noms
‘Jones’
‘Clark’
‘Adams’
P#
P1
P2
P1
P1
Ciudad
‘Paris’
‘Londres’
‘Sevilla’
Piezas
P#
P1
P2
Peso
200
400
Color
Gris
Azul
Cant
50
10
5
15
PK ( S #)
Suminitradores( S # : Dcodigo, Noms : Dnombre, Ciudad : Dciudad )



ρ2 Suministra_Piezas ( S # : Dcodigo, P # : Dcodigo, Cant : Dcant , Peso : Dpeso, Color : Dcolor ) PK ( S #, P #) 

FK 1( S #) / Suminitradores 


Suministradores
1
S#
S1
S2
S3
Noms
‘Jones’
‘Clark’
‘Adams’
Ciudad
‘Paris’
‘Londres’
‘Sevilla’
Suministra_Piezas
S#
S1
S1
S2
S3
P#
P1
P2
P1
P1
Cant
50
10
5
15
Peso
200
400
200
200
Color
Gris
Azul
Gris
Gris
Sin un método formal.
Pág. 3 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
En primer lugar, en el esquema ρ2 algunos datos son redundantes: los datos de piezas (Color y
Peso) aparecen tantas veces como dicha pieza es suministrada.
Esta redundancia conlleva unos riesgos de incoherencia. Al cambiar el Peso de una pieza de ‘200’
a ‘220’ hay que actualizar en todas las tuplas en las que aparece. Se producen por tanto anomalías
de actualización (debe actualizarse sólo en una tupla y evitar que haya más de una tupla con
diferente peso de la misma pieza).
No se pueden guardar datos de piezas (P#, Peso y Color) hasta que no sean suministradas (S# es
parte de la clave primaria y por tanto no puede tener valor null); presenta anomalías de inserción.
Por último, surgen las anomalías de eliminación o borrado. Cuando se elimina una tupla de
Suministra_Pieza y la pieza sólo aparece en dicha tupla (ej. P#=P2) se pierde la información de la
pieza.
El esquema ρ2 presenta estos problemas inconvenientes debido a que no sigue un principio
intuitivo básico: “conceptos o hechos independientes deben recogerse en (relaciones) distintas o específicas”.
El esquema relacional ρ1 no presenta las anomalías anteriores. Puede afirmarse que este esquema
es mejor que el anterior.
La teoría de dependencias se ha desarrollado para medir formalmente la calidad de un diseño y
proponer medidas que resuelvan las anomalías de manipulación (formas normales). Incluye el
concepto de dependencia funcional y sus propiedades, que es la principal herramienta para medir la
idoneidad de un esquema relacional.
2 Dependencias funcionales
2.1 Concepto de dependencia funcional
Las dependencias funcionales son reglas independientes del tiempo que verifican los atributos de un
contexto determinado.
Sea R ({ Ai : Di})
t,s ∈ R
tuplas de R
X, Y
subconjuntos de atributos
X ⊆ R ({ Ai : Di})
Y ⊆ R ({ Ai : Di})
Se define una dependencia funcional (DF)
X → Y (X determina funcionalmente a Y o Y depende funcionalmente de X)
como una restricción sobre las tuplas de R que garantiza que dado un valor único de X, el valor
de los atributos que componen Y ha de ser también único.
X → Y |=
( t.X = s.X
⇒ t.Y = s.Y )
Ej.:
Dada la DF: S#→Ciudad induce que no pueden existir dos tuplas con el mismo código
de proveedor y distinta Ciudad.
Pág. 4 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Un esquema de relación se ve enriquecido por la semántica asociada a las dependencias funcionales
inherentes al contexto de los atributos:
R(A, DF) contiene las dependencias funcionales DF como restricciones semánticas.
2.1.1
Descriptores equivalentes:
Se dice que X e Y son equivalentes cuando:
X → Y
∧
Se representa: X ↔ Y
Y → X
Ej.:
Dada la DF:
S# ↔ Dni
2.1.2
Dependencia funcional plena o completa
Sea R ({ Ai : Di}) y X ⊆ R; A ⊆ R
X → A es completa sii:
( A ⊆/ X ) ∧ ( ∃X ´⊂ X / X´ → A )
Una dependencia funcional es plena o completa cuando A depende de X pero no de ningún
subconjunto propio de X. X es un descriptor determinante.
Atributos extraños son los atributos del descriptor de una DF que sobran en la dependencia.
Ej.:
2.1.3
S#→Ciudad
Es una DF plena o completa.
(S#,Noms)→Ciudad
No es una DF plena o completa ya que código de proveedor
determina Ciudad. Noms es un atributo extraño
Dependencia funcional elemental
Si una dependencia funcional plena tiene como descriptor determinado un atributo simple, la
dependencia es elemental.
Ej.:
S# → Ciudad es una DF elemental ya que Ciudad es un atributo simple.
2.1.4
Dependencia funcional trivial (Reflexividad de Ärmstrong)
Una DF X→Y es trivial si Y es un subconjunto de X:
Ej.:
2.1.5
S# → S#
DF trivial.
(S#,Ciudad)→Ciudad
DF trivial.
Y⊆X
Dependencia funcional transitiva
Sea R ( X : Dx, Y : Dy, Z : Dz )
X→Y
∧
Y→Z
∧ Y→X
Se dice que Z tiene una DF transitiva de X a través de Y :
X→Z
Ej.:
S#→Ciudad→ País
Existe la DF transitiva S#→ País
Pág. 5 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
2.2 Grafo de dependencias funcionales (GDF)
Es un grafo que representa el contexto semántico observado en un determinado universo, donde
los nodos son atributos y los arcos representan dependencias entre nodos o agrupaciones (burbujas)
de nodos. Normalmente se representan dependencias que van de un nodo o burbuja a un solo
atributo.
Sean los atributos:{ s#, Noms, Estado, Ciudad, p#, Nomp, Color, Peso, Cant}
y las dependencias funcionales:
F= {
S# → Noms,
S# → Estado,
S# → Ciudad,
P# → Nomp,
P# → Color,
P# → Peso,
P# → Ciudad,
(S#,P#) → Cant
GDF:
s#
Cant
p#
}
Noms
Estado
Ciudad
Nomp
Color
Peso
2.3 Axiomas de Ärmstrong
De un esquema de relación R (A,F) es posible deducir (o inferir) nuevas dependencias funcionales.
Las nuevas dependencias f que se cumplen para cualquier extensión de r de R son consecuencia
lógica de F. Se representan como: F |= f . De modo que F ∪ f representan un contexto
alternativo del mismo universo (existen grafos de dependencias alternativos del mismo contexto
con más o menos dependencias funcionales).
Estas reglas de derivación se conocen como Axiomas de Ärmstrong y forman un conjunto
completo y correcto de axiomas.
Los axiomas básicos son reflexividad, aumentatividad y transitividad. De ellos se pueden inferir los
derivados de descomposición, unión y pseudotransitividad.
Axiomas Básicos
2.3.1
Reflexividad
Si Y ⊆ X |= X → Y
(X → Y es una DF trivial)
(S#, Ciudad) → Ciudad
2.3.2
Aumentatividad
Si
{X →
Y ∧ Z ⊆ W} |= XW → YZ
{P# → Color y Ciudad ⊆ (S#,Ciudad)}
╞
(P#, S#, Ciudad ) → (Color, Ciudad)
Pág. 6 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
2.3.3
Transitividad
Si
{X →
Y ∧ Y → Z} |= X → Z
╞
{S# → Ciudad y Ciudad→ País}
S# → País
Axiomas Derivados
2.3.4
Proyectividad o descomposición
Si
{X →
Y ∧ Z ⊆ Y} |= X → Z
{P# → (Color, Peso) y
2.3.5
╞
P# → Peso
╞
P# → (Color, Peso)
╞
(S#, Fecha) → Sueldo
Unión o aditividad
Si
{X →
Y ∧
{P# → Color y
2.3.6
Peso ⊆ (Color, Peso) }
X → Z } |=
X → YZ
P# → Peso }
Pseudotransitividad
Si
{X →
Y ∧
{S# → Noms y
YW → Z} |=
XW → Z
(Noms, Fecha) → Sueldo }
2.4 Cierre de un descriptor
Es el conjunto de atributos determinados por dicho descriptor teniendo en cuenta las dependencias
funcionales y los axiomas de Ärmstrong.
Se representa el cierre de X respecto al conjunto de dependencias F: X+F
Ej.:
Dadas las dependencias
F = {S#→Noms,P# →(Nomp,Color),(S#,P#)→Cant }
{S#}+F={S#,Noms}
{P#}+ F ={P# , Nomp, Color, }
{ S#,P#}+ F ={S#, P# , Noms , Nomp, Color, Cant }
2.5 Cierre de un conjunto de dependencias
Dado R(A,F)
Para calcular el cierre de un conjunto de dependencias funcionales se aplican los Axiomas de
Ärmstrong.
El cierre de F se denomina F+ ;es la unión de dependencias funcionales exisentes en F y el conjunto
de todas las dependencias que pueden inferirse de DF mediante la aplicación de los axiomas de
Ärmstrong:
F+ = F∪{ X → Y | AxiomasÄrmstrong |= X → Y }
Pág. 7 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
F será siempre un subconjunto del cierre (F ⊆ F+ ). Por lo tanto R(A, F) y R(A, F+ ) representan
contextos equivalentes de la misma relación.
Para afirmar que una dependencia funcional X→Y pertenece al cierre de un conjunto de
dependencias F+ es necesario calcular el cierre del descriptor en ese conjunto de dependencias:
X+ F .
( X → X ) y si ( Y ⊆ X ) |= ( X → Y ) aplicando el axioma de reflexividad.
+
F
+
F
La utilidad del concepto de cierre es asegurar la equivalencia de grafos que representan contextos
alternativos de un mismo universo de discurso:
Los conjuntos de dependencias F1 y F2 son equivalentes si tienen el mismo cierre:
F1+ = F2+
Cada dependencia de F1 está en F2+ y cada dependencia de F2 está en F1+
+
∀ ( X → Y ) ∈ F2 |= Y ⊂ X F1
∀ ( Z → W ) ∈ F1
|= W ⊂ Z+F2
Todas las dependencias funcionales de F1 se pueden inferir de F2 y las de F2 se pueden inferir de
F1.
Ej. F1{cod_libro → título,
F2{cod_libro → título,
título → cod_libro,
título → cod_libro,
cod_libro → editorial,
título → editorial,
cod_libro → idioma }
título → idioma }
cod_libro
título
cod_libro
editorial
idioma
idioma
título
editorial
{cod_libro} +F2 = cod_libro, título, editorial, idioma
{titulo} +F1 = cod_libro, título, editorial, idioma
Los grafos de F1 y F2 son equivalentes.
2.6 Cobertura mínima
Un conjunto de dependencias funcionales es una cobertura mínima (también denominado
recubrimiento minimal o recubrimiento mínimo) F* de F si no tiene dependencias redundantes y es
equivalente al conjunto de partida F:
a) F *+ = F +
b) ∃f ⊂ F *; f ≠ ∅ /
(F *− f )
+
= (F )
+
Pág. 8 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
3 Formas normales de Codd
En el proceso de normalización en cada forma normal se establecen restricciones encaminadas a
salvar ciertas anomalías asociadas a las relaciones que no están en esa forma normal.
El proceso se aplica progresivamente y está basado en la teoría de dependencias.
Relaciones no normalizadas
1FN
2FN
3FN
FNBC
4FN
5FN
Codd propuso tres formas normales, a las que denominó primera (1FN), segunda (2FN)y tercera
forma normal (3FN). Posteriormente, Boyce y Codd propusieron un definición más estricta de la
3FN que se conoce como forma normal de Boyce-Codd (FNBC). Estas formas normales están
basadas en las dependencias funcionales que existen entre los atributos de una relación. Otros
autores han propuesto formas normales más avanzadas: cuarta forma normal (4FN) basada en el
concepto de dependencia multivaluada y quinta forma normal (5FN) basada en las dependencias de
combinación o de join, así como las dependencias generalizadas.
Las dependencias funcionales son las restricciones semánticas que condicionan los esquemas de una
base de datos relacional, razón por lo que son las más estudiadas.
Pág. 9 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
3.1 Descomposiciones sin pérdidas
El proceso de normalización va a consistir en transformar un esquema de relación R(A, F), por
medio de sucesivas proyecciones, en un conjunto de nuevas relaciones equivalentes.
Ha de prestarse atención a la equivalencia de estas relaciones, exigiéndose las siguientes propiedades
para conseguir una descomposición sin pérdidas.
3.1.1
Preservación de atributos.
Los atributos o propiedades de dos esquemas preservan atributos si no se pierde ninguna
propiedad:
Dados los esquemas ρ 1{ Ri(Ti, Li )} ρ 2 { Ri '(T ' i, L ' i )} , ρ 2 preserva atributos respecto a ρ 1
sii
∪T = ∪T
i
i
3.1.2
i
'
.
i
Preservación de dependencias.
El conjunto de DF de partida debe ser equivalente al conjunto de DF de los esquemas resultantes.
Dados los esquemas ρ 1{ Ri(Ti, Li )} ρ 2 { Ri '(T ' i, L ' i )} ,
ρ 2 preserva dependencias respecto a ρ 1 sii
∪L
'+
i
i
= ∪ L+i .
i
Es decir: los cierres de los conjuntos de dependencias de los dos contextos son equivalentes.
Pág. 10 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
3.1.3
Preservación del contenido de las tuplas o descomposición sin pérdida de join.
En general, no puede asegurarse que el join natural de una descomposición (al aplicar la proyección
algebráica) de relaciones genere el mismo estado o extensión que la relación de partida; existen
casos donde pueden aparecer tuplas que no figuraban en la extensión inicial; a estas tuplas se les
denomina tuplas espúreas.
Ej. de descomposición con pérdida de dependencias funcionales y con pérdida de join (aparecen
tuplas espúreas).
PIEZAS
P_1
P#
1
2
3
4
Nomp
Rueda
Eje
Vagón
Máquina
P#
1
2
3
4
Tipo
C
C
T
T
Tipo
C
C
T
T
P_2
Color
Gris
Negro
Rojo
Rojo
Tipo
C
C
T
s(t) = 2
s(t) = 2
s(t) = 1
s(t) = 1
P_1 6 P_2
→
→
Nomp
Rueda
Eje
Vagón
Máquina
P#
Nomp
Tipo
Color
1
1
2
2
3
4
Rueda
Rueda
Eje
Eje
Vagón
Máquina
C
C
C
C
T
T
Gris
Negro
Gris
Negro
Rojo
Rojo
Color
Gris
Negro
Rojo
Aparición de tuplas espúreas (→ ) al hacer el join
P#
Nomp
Color
DF perdidas
Tipo
DF conservadas
En este caso ( P_16 P_2 ) ⊇ Piezas y el excedente del join natural son las tuplas espúreas.
Pág. 11 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Dados los esquemas ρ 1{ Ri(Ti, Li)} ; ρ 2 { Ri '(T ' i, L ' i)} , se pueden representar las relaciones
resultado de hacer el join natural de cada esquema:
n
R = R16 R 26
...6 Rn − 16 Rn = 6 Ri
i =1
m
R ' = R ' 16 R ' 26
...6 R ' m − 16 Rm = 6 Ri
i =1
La descomposición ρ 2 preserva el join respecto a ρ 1 sii
n
6
Ri =
i =1
m
6 R'
i
i =1
La condición suficiente para preservar join es:
n
m
i =1
i =1
a) Preservación de propiedades: ∪ Ti =∪ T ' i
b) La descomposición contiene una clave del esquema original.
K es una clave de R =6 Ri y de R ' =6 R ' i
c) La descomposición es una descomposición en relaciones independientes. Una
descomposción en relaciones independientes tiene como intersección la clave ajena de una
respecto a la otra.
Factor de selectividad del join (s). Se define para cada tupla de una relación como el número de
tuplas de la otra relación que hacen join con ella. En el ejemplo anterior, el factor de selectividad de
la tupla rueda en P_1 es s(“rueda”)=2 porque hay dos tuplas en P_2 que hacen join, mientras que
el factor de selectividad s(“vagón”)=1 por la misma razón.
Apoyándose en el concepto de factor de selectividad, de cardinalidad de una relación como el
número de tuplas de la misma, y de la posibilidad de aparición de tuplas espúreas, puede afirmarse
en general para dos relaciones R1 = ∏ R; R 2 = ∏ R
R1
R2
que R ⊆ R16 R 2 y Card ( R) ≤ Card ( R16 R 2)
Si se tienen en cuenta las hipótesis de condición suficiente:
Card ( R ) ≡ Nºvalores distintos de la clave K de R.
Card ( R16 R 2) =
∑ s(t ) ,
pudiendo afirmarse, en general, 0 ≤ s (t ) ≤ Card ( R 2) puesto que el
∀t∈R1
límite de tuplas para hacer join son el número de tuplas de R2, pero teniendo en cuenta que R1 y R2
son proyecciones independientes, la intersección de sus esquemas es la clave ajena de R1 respecto a
R2, luego para todas las tuplas de R1, el join se hará por la clave prima de R2; es decir, para cada
valor de la clave ajena en R1 sólo habrá una tupla en R2. Esto permite afirmar que el factor de
selectividad s(t) es constante y s(t)=1 para todas las tuplas de R1.
Luego:
∑
∀t∈R1
s (t ) =
∑ 1= N ºTuplas( R1) = N ºValores ≠ clave( R ) = N º Valores ≠ K
1
∀t∈R1
Al tener R1 y R la clave en común (K ), luego Card ( R) = Card ( R16 R 2) c.q.d.
Pág. 12 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
3.2 Primera forma normal (1FN)
La primera forma normal (1FN) es una restricción inherente al modelo relacional.
Establece que los dominios de los atributos deben de ser valores atómicos (no puede haber más de
un valor de un atributo en una tupla).
3.3 Segunda forma normal (2FN)
3.3.1
Justificación intuitiva
La segunda forma normal evitará redundancias por mezcla de propiedades de dos
entidades en la misma relación cuando existen dependencias incompletas.
Está basada en las interrelaciones existentes entre los atributos primos (los que forman parte de
alguna clave candidata) y no primos (los que no se encuentran en ninguna clave).
Una relación está en 2FN si:
•
Está en 1FN.
•
Todo atributo no primo es completamente dependiente de las claves candidatas.
Siempre es posible transformar un esquema de relación que no esté en 2FN en esquemas de
relación en 2FN, sin que se produzca pérdida de información o de dependencias.
Ej. R1(S#, Ciudad, Estado, P#, Cant)
S#
P#
Ciudad
Cant
Estado
Pág. 13 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
La clave candidata de R1 es (S#,P#), ya que:
(S#,P#)+= (S#,P#,Ciudad,Cant,Estado) por:
(S#,P#)→(S#,P#) por reflexividad de Ärmstrong
(S#,P#)→Ciudad ya que es cierta S#→Ciudad y Aumentatividad de Ärmstrong
(S#,P#)→Estado porque S#→Estado por transititividad y también puede emplearse aumentatividad
de Ärmstrong
Utilizando el axioma de unión:
(S#,P#)+→ (S#,P#,Ciudad,Cant,Estado), luego sólo puede haber una tupla definida la pareja
(S#,P#).
De hecho, puede redefinirse una clave candidata K para R con las condiciones:
Unicidad: K→R
Minimalidad: ∃/ K ' ⊂ K ; K ' ≠ ∅ / K ' → R
La relación R1 no está en 2FN ya que el atributo no primo Ciudad depende de una parte de la clave
candidata (el atributo S#).
La descomposición en 2FN sería:
R2(S#, Ciudad, Estado) y R3(S#, P#, Cant)
R1
R2
S#
S1
S1
S1
S1
S2
S2
S3
S#
S1
S2
S3
Ciudad
Londres
Londres
Londres
Londres
París
París
París
Ciudad
Londres
París
París
Estado
20
20
20
20
10
10
10
Estado
20
10
10
P#
P1
P2
P3
P4
P1
P2
P2
Cant
300
200
400
200
300
400
200
R3
S#
S1
S1
S1
S1
S2
S2
S3
P#
P1
P2
P3
P4
P1
P2
P2
Cant
300
200
400
200
300
400
200
Pág. 14 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
3.3.2
Regla de descomposición de relaciones que no están en 2FN.
R(K1, K2, X, Y) se descompone en
K1
X
K2
Y
R1(K1, X) y
K1
X
R2(K1, K2, Y)
K1
K2
Y
La descomposición {R1,R2} de R es una descomposición sin pérdidas, luego se garantiza
preservación de propiedades, dependencias y join, evitando además las anomalías por redundancias
asociadas a la 2FN.
3.4 Tercera forma normal (3FN)
3.4.1
Justificación intuitiva
La tercera forma normal evitará redundancias por mezcla de propiedades de dos entidades
en la misma relación cuando existen dependencias transitivas.
La 3FN está basada en el concepto de dependencia transitiva.
Una relación está en 3FN sii:
Sea
R ({ Ai : Di}, L ) ∀ ( X → A ) ∈ L;A ⊂ R; X ⊂ R; A ⊂/ X
Se cumple
ó
I) X es una superclave de R
II) A es primo
Siempre es posible una descomposición en 3FN que preserve dependencias funcionales.
Ej. R2(S#, Ciudad, Estado)
S#
Ciudad
Estado
La clave del esquema es S#. R2 no está en 3FN ya que Estado depende de Ciudad que no es clave
candidata.
Sin embargo:
R21(S#, Ciudad) y R22(Ciudad, Estado)
R2
S#
S1
S2
S3
Ciudad
Londres
París
París
Estado
20
10
10
R22
R21
S#
S1
S2
S3
Ciudad
Londres
París
París
Ciudad
Estado
Londres 20
París
10
Pág. 15 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Este enunciado permite garantizar la ausencia de dependencias transitivas además de asegurar que la
relación está en 2FN. En efecto:
Si R ({ Ai : Di}, L ) ∀ ( X → A ) ∈ L;A ⊂ R; y X superclave de R
No puede existir R con un grafo característico:
K1
X
K2
Y
ya que la clave de la relación R(K1,K2,X,Y) sería (K1,K2), existiendo la dependencia K1→Y y K1
no es superclave de la relación, lo que es contradictorio con que todos los determinantes sean
superclaves. En enunciados antiguos de la tercera forma normal se exigía como hipótesis que la
relación estuviese en 2FN; con este enunciado se asegura el estado en 2FN (si los atributos son
atómicos) y 3FN(eliminando dependencias transitivas).
3.4.2
Descomposición de relaciones que no están en 3FN.
R(X, Y, Z) se descompone en
R1(X, Y)
X
X
Y
Z
y
Y
R2(Y, Z)
Y
Z
La descomposición {R1,R2} de R es una descomposición sin pérdidas, luego se garantiza
preservación de propiedades, dependencias y join, evitando además las anomalías por redundancias
asociadas a la 3FN.
3.5 Forma normal de Boyce-Codd (FNBC)
3.5.1
Justificación intuitiva
La forma normal de Boyce-Codd aborda el tratamiento de redundancias en casos de claves
alternativas, acotando el umbral de la descomposición de relaciones sin pérdidas de
dependencias.
Una relación está en FNBC si las claves candidatas son los únicos descriptores sobre los que se
facilita información por cualquier otro atributo.
Sea R ({ Ai : Di}, L ) ∀ ( X → A ) ∈ L;A ⊂ R; X ⊂ R; A ⊂/ X
Se cumple
I) X es una superclave de R
EJ. R4(S#, Noms, P#, Cntd)
S#
P#
Cantidad
Noms
Las claves son (S#,P#) y (Noms#,P#)
Pág. 16 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
La relación R4 no está en FNBC ya que el atributo S# depende de Noms que no es clave candidata
y Noms depende S# que tampoco es clave candidata.
La descomposición en FNBC sería:
R41(S#, Noms) y R42(S#, P#, Cant)
R4
R41
3.5.2
S#
Noms
P#
Cant
S1
Martin
P1
300
S1
Martin
P2
200
S1
Martin
P3
400
S2
Rubén
P1
300
S2
Rubén
P2
400
S#
Noms
S1
S2
R42
S#
P#
Cant
Martin
S1
P1
300
Rubén
S1
P2
200
S1
P3
400
S2
P1
300
S2
P2
400
Descomposición FNBC: Grafos cíclicos y acíclicos
Para grafos acíclicos. Existe una descomposición en FNBC que preserve join y dependencias.
Atributos = {X, Y , Z, A}
ϕ = {X↔ Y, XZ →A, YZ →A }
R(X, Y, Z, A) se descompone en
X
Z
R1(X, Y)
y
R2(X, Z, A)
A
Y
Pág. 17 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Para grafos cíclicos. No es posible encontrar una descomposición en FNBC que preserve
dependencias.
Atributos = {X, Y , Z} ϕ = {XY →Z, Z →Y }
Las claves del esquema son XY y XZ, ya que (XY)+=(XZ)+=XYZ
R(X, Y, Z)
X
Z
Se perdería la dependencia XY →Z al buscar FNBC
Y
3.6 Comparación 3FN y FNBC
FNBC es un enunciado reforzado de la 3FN.
La condición de que A sea primo es una relajación de la 3FN respecto de la FNBC
•
Siempre es posible encontrar una descomposición en 3FN que preserve propiedades.
•
Siempre es posible encontrar, al menos una descomposición en FNBC que preserve join
pero no siempre que preserve dependencias.
Ej.
VINOS
Tipo
Región
País
Julieras
California USA
Julieras
Beaujolais Francia
GDF
Tipo
Morgon Beaujolais Francia
Chablis
Borgoña
Chablis
California USA
Jerez
Rioja
España
Jerez
Michigan
USA
VINO_1
Tipo
Región
País
Francia
País
VINO_2
Región
País
Julieras
USA
Julieras
Francia
California USA
Morgon
Francia
Beaujolais Francia
Chablis
Francia
Borgoña
Francia
Chablis
USA
Rioja
España
Jerez
España
Michigan
USA
Jerez
USA
En este caso, no es posible encontrar una descomposición en FNBC que preserve dependencias
funcionales. En cualquiera de las tres posibles descomposiciones se pierde la dependencia
(Tipo,País)→Región
Pág. 18 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
En la descomposición Vino_1(Tipo, País) y Vino_2(Región, País) hay además pérdida de join.
Tipo
VINO_1 6 VINO_2
Región
País
Julieras
California
USA
Julieras
Michigan
USA
Julieras
Beaujolais
Francia
Julieras
Borgoña
Francia
Morgon
Beaujolais
Francia
→
Morgon
Borgoña
Francia
→
Chablis
Beaujolais
Francia
Chablis
Borgoña
Francia
Chablis
California
USA
Chablis
Michigan
USA
Jerez
Rioja
España
Jerez
California
USA
Jerez
Michigan
USA
→
→
→
→
Siempre es posible encontrar una descomposición, en este caso Vino_3(Tipo, Región) y
Vino_2(Región, País), que conserva join. No conserva dependencias funcionales.
VINO_3
Tipo
Región
VINO_2
Región
País
Julieras
California
California USA
Pulieras
Beaujolais
Beaujolais Francia
Morgon Beaujolais
Borgoña
Francia
Chablis
Borgoña
Rioja
España
Chablis
California
Michigan
USA
Jerez
Rioja
Jerez
Michigan
VINO_3 6 VINO_2
Tipo
Región
País
Julieras
California USA
Julieras
Beaujolais Francia
Morgon Beaujolais Francia
Chablis
Borgoña
Francia
Chablis
California USA
Jerez
Rioja
España
Jerez
Michigan
USA
Pág. 19 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
4 Diseño de bases de datos relacionales
4.1 Enfoque de descomposición: Normalización
El enfoque de descomposición de relaciones parte de asumir la existencia de la instancia universal.
Dados un conjunto de atributos A{A1, A2, An}y el grafo de dependencias representado por F
sobre atributos de A, la relación U(A1 ,A2, An) se denomina la relación universal y su extensión la
instancia universal, de modo que un esquema relacional que represente el mismo contexto:
ρ {R1, R 2,..Rp} tendrá relaciones tales que cualquier tupla de una relación podrá obtenerse mediante
una proyección de la instancia universal.
Se asume la existencia (aunque artificial) de la relación e instancia universal.
El enfoque de descomposición parte de la relación universal y aplica las reglas de descomposición
vistas en cada forma normal. El mayor inconveniente de este método es el cálculo de claves, que en
casos simples puede ser intuitivo pero cuando se parte de relaciones complejas o de la misma
relación universal sí plantea problemas algorítmicos.
Es decir:
Paso 0: Asumiendo la existencia de U(A1 ,A2 , An), calcular las claves {Ku }de U
Paso 1. Descomponer relaciones que no estén en primera forma normal.
Paso 2. Descomponer relaciones que tengan dependencias incompletas (2FN), recalculando claves
de las nuevas relaciones.
Paso 3. Descomponer relaciones con dependencias transitivias (3FN).
4.2 Enfoque de síntesis: síntesis básica de Bernstein
El enfoque de síntesis no presupone la existencia de la relación universal, partiendo del conjunto de
atributos A{A1 ,A2 , An}y del grafo de dependencias representado por F.
Este enfoque se debe a Bernstein y se presenta el algoritmo básico (existe otro para manejar
determinantes equivalentes que generan claves alternativas de relaciones: Síntesis modificada de
Bernstein).
Paso 1. Calcular un recubrimiento mínimo F* de F.
Paso 2. Agrupar dependencias de F* en particiones que tengan el mismo determinante.
Paso 3. Para cada partición se genera un esquema de relación Ri la cual tendrá como clave primaria
el determinante y como atributos el resto de los que aparezcan en las dependencias
funcionales de la partición.
Paso 4. Si existen atributos que no son implicantes ni implicados en DF*, se forma un esquema de
relación con ellos y sin dependencias funcionales.
Se pueden generar las claves ajenas por intersección entre esquemas de las relaciones y las claves
primarias de las demás. Nada dice Bernstein al respecto y hay que tener en cuenta que si no se
maneja el contexto pueden aparecer ciclos indeseables en las claves ajenas puesto que no se está
partiendo de un enfoque de entidades sino de atributos.
Página 20 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Ejemplo:
Dados los atributos: A{Dni, Nombre, Apellidos, Dirección, Población, Cod_postal, Provincia, País,
Afición, Tipo_afición, Grado}
y las dependencias funcionales:
ϕ = { (Dirección, Población) → Cod_postal
Cod_postal → Población
Población → (Provincia, País)
Provincia → País
Dni → Nombre, Apellidos, Dirección
Dni → Población, Cod_postal, Provincia, País
(Nombre, Apellidos) → Dni, Cod_postal
(Dni, Afición) → Tipo_afición, Grado
Afición → Tipo_afición
}
Tipo_afición
Grado
Afición
Dni
Nombre
Apellidos
Dirección
Población
Cod_Postal
Provincia
País
Página 21 de 22
Bases de Datos
Diseño de BD Relacionales
Sevilla, Abril/2005, V 2005.01.1
Paso 1. Se busca un recubrimiento mínimo ϕ *.
Se eliminan los arcos redundantes por transitividad:
Población → País
Dni → Provincia, Población,País
(Nombre,Apellidos) → Cod_Postal
y los arcos correspondientes a dependencias que no son completas (atributos extraños):
(Afición,Dni) → Tipo_afición
Tipo_afición
Grado
Afición
Dni
Dirección
Población
Nombre
Apellidos
Cod_Postal
Provincia
País
Paso 2. Generar P{Pi}: Pi {dfi: di→ Xi}
P1 { Provincia → País }
P2{Población→ Provincia }
(Cod_postal → Población) }
P3{ ((Dirección, Población) → Cod_Postal)
P4{ Dni ↔ (Nombre, Apellidos),
Dni→ Cod_Postal,
Dni→ Dirección }
P5{Afición→ Tipo_Afición }
P6{(Dni, Afición)→ Grado }
Paso 3. Generación de relaciones {Ri}
Relación
R1 (Provincia, País)
R2 (Población, Provincia)
R3 (Dirección, Población, Cod_Postal)
R4 (Dni, Nombre, Apellidos, Cod_Postal, Dirección)
R5 (Afición, Tipo_Afición)
R6 (Dni, Afición, Grado)
Pk
Provincia
Población
(Cod_Postal,
Dirección)
Dni
Afición
(Dni,
Afición)
Ak
(Población, Dirección)
(Nombre, Apellidos)
Fk
Provincia/R1
Población/R2
(Cod_Postal,
Dirección)/R3
Afición/R5
Dni/R4
Página 22 de 22
Descargar