Normalización - Universidad de Oviedo

Anuncio
Tema 5: Diseño de Bases de Datos
Fernando Cano Espinosa
Juan David González Cobas
Universidad de Oviedo. Departamento de Informática
fanouniovi.es , obasuniovi.es
Curso 2009-2010
Produced with LATEX seminar style & PSTricks
1
C ONTENIDO
1. Introducción: un pequeño ejemplo
2. Anomalías
3. Descomposiciones
4. Normalización
C ONTENIDO
2
I NTRODUCCIÓN
Vamos a proponer un ejemplo que consiste en una base de
datos que contendrá información sobre alumnos,
asignaturas, notas y profesores. Las restricciones de las que
partimos son las siguientes:
• Un alumno sólo tiene asignado un profesor por
asignatura
• Un alumno obtiene una única nota por asignatura
• Un profesor sólo puede dar clase de una asignatura
I NTRODUCCIÓN
3
Podríamos plantearnos mantener todos los datos en una
única tabla. Utilizaremos el siguiente ejemplo:
Alumno
Asignatura
Profesor
Nota
Luis
Física
Newton
5
Luis
Filosofía
Kant
7
Carlos
Física
Einstein
6
Marta
Física
Newton
5
Pepe
Filosofía
Kant
4
Llamaremos a este esquema R(T, L), siendo T el conjunto de
atributos y L el conjunto de restricciones expresadas como
dependencias funcionales.
I NTRODUCCIÓN
4
R(T, L) : T = {Alumno, Asignatura, Profesor, Nota}
L=
{Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura}
Los pares (Alumno,Asignatura) y (Alumno, Profesor) son
claves candidatas.
I NTRODUCCIÓN
Alumno Profesor → Asignatura
∈ L+
Alumno Profesor → Nota
∈ L+
5
A NOMALÍAS
• Repetición de Información. El problema fundamental de
la repetición de información no es el desperdicio de
espacio sino otros problemas derivados del
mantenimiento de información repetida, que
enumeramos a continuación.
• Anomalías en la inserción y en la actualización. Al
insertar una fila nueva (en SQL, INSERT) o actualizar una
ya existente (en SQL, UPDATE), tendremos que
comprobar que la información que introducimos es
consistente. Por ejemplo, comprobar la restricción
Profesor→Asignatura.
A NOMALÍAS
6
• Anomalías en el borrado El problema que se nos
presenta aquí no es un problema de inconsistencia, sino
de pérdida de información.
• Representación de Información. Este problema está
íntimamente ligado al anterior y se basa en que nuestro
esquema no nos permite guardar algunos hechos.
A NOMALÍAS
7
• Imposición de las restricciones. Imponer la restricción de
que un alumno sólo tiene un profesor por asignatura
resulta tan sencillo como el declarar (Alumno,
Asignatura) como clave primaria. Sin embargo,
garantizar el cumplimiento de las DFs cuya parte
izquierda no es clave candidata no es así de sencillo.
Por ejemplo, comprobar la dependencia
Profesor→Asignatura requeriría establecer en SQL un
check como este:
alter table R add onstraint PRO_ASIG
hek (not exists (
selet profesor
from
R
group by profesor
having ount(distint asignatura) > 1));
A NOMALÍAS
8
– Otra solución podría ser evitar que se inserten o
actualicen tuplas que contradigan la restricción
mediante triggers.
– En cualquier caso, nos vemos obligados a agregar más
código, lo que es posiblemente innecesario y ralentiza la
ejecución de nuestras modificaciones a la base de datos.
A NOMALÍAS
9
• Ante este tipo de anomalías, una solución consiste en
descomponer nuestro esquema original en varios
subesquemas de forma que dichas anomalías se eviten.
• Este proceso se conoce como normalización.
• No siempre es posible encontrar una descomposición
que elimine todas las posibles anomalías. En algunos
casos, la normalización resuelve ciertos problemas, pero
introduce otros.
A NOMALÍAS
10
Descomposiciones
• Sea R un esquema de relación. Un
conjunto {R1 , R2 , . . . , Rn } de esquemas de relación es
una descomposición de R si
n
[
Ri = R
(1)
i=1
• En la práctica, cuando descomponemos un esquema
en un conjunto de subesquemas, incluimos en éstos
atributos comunes. El objetivo de esto es poder
recuperar posteriormente la información que se ha
guardado en distintas tablas a través de operaciones de
join.
A NOMALÍAS
11
• Vamos a ver cómo una descomposición puede resolver
algunos de los problemas mencionados en la sección
anterior.
• La propuesta es dividir nuestro esquema R(T, L) en dos
subesquemas R1 (T1 , L1 ) y R2 (T2 , L2 ).
A NOMALÍAS
12
R1
A NOMALÍAS
Alumno
Asignatura
Nota
Luis
Física
5
Luis
Filosofía
7
Carlos
Física
6
Marta
Física
5
Pepe
Filosofía
R2
4
Profesor
Asignatura
Newton
Física
Kant
Filosofía
Einstein
Física
13
• Es evidente que esta descomposición nos resuelve
algunos problemas: se repite menos información; a un
profesor sólo se le puede asignar una asignatura
(profesor es la clave primaria de R2 ); y podemos guardar
información de la asignatura que imparte cada profesor
aunque no tengamos alumnos matriculados.
• Pero nos aparece un problema nuevo: ya no sabemos
qué profesor tiene cada alumno en una determinada
asignatura.
A NOMALÍAS
14
• Este problema se conoce con el nombre
de descomposición con pérdida de información,
generalmente denominado como lossy-join. Cuando
esta situación no se da, y toda la información que existía
previamente puede recuperarse después de la
descomposición, decimos que se cumple la
propiedad lossless-join o LJ.
• Al hacer la reunión ( join) de los subesquemas no
obtenemos el esquema original. En nuestro ejemplo,
para esta reunión la consulta apropiada sería:
selet
from
r1.alumno, r1.asignatura,
r2.profesor, r1.nota
r1 inner join r2
on r1.asignatura = r2.asignatura
Y el resultado sería:
A NOMALÍAS
15
A NOMALÍAS
R1 .Alumno
R1 .Asignatura
R2 .Profesor
R1 .Nota
Luis
Física
Newton
5
Luis
Física
Einstein
5
Luis
Filosofía
Kant
7
Carlos
Física
Newton
6
Carlos
Física
Einstein
6
Marta
Física
Newton
5
Marta
Física
Einstein
5
Pepe
Filosofía
Kant
4
16
• Aparecen tres filas más (en sombreado) que en la tabla
R original. El problema radica en el hecho de que hay
más de un profesor de Física, con lo que al reunir (realizar
el producto natural) R1 y R2 , a cada alumno de Física se
le empareja con todos los profesores de Física, dando
lugar a filas espurias que contienen información
incorrecta.
A NOMALÍAS
17
Descomposición con la propiedad LJ
• Rea R un esquema de una relación y consideremos una
descomposición {R1 , R2 , . . . , Rn } (en el sentido de la
definición 1).
• Sea r una instancia de la relación (los valores actuales
del conjunto de filas que contiene la tabla) con
esquema R; definimos las instancias ri de Ri como
ri = πTi (r). De esta forma, {R1 , R2 , . . . , Rn } es la base de
datos que resulta de descomponer R en sus
proyecciones sobre los conjuntos de atributos
{T1 , T2 , . . . , Tn }.
A NOMALÍAS
18
• Pues bien, puede demostrarse que siempre se da la
siguiente inclusión:
n
⊲⊳ ri ⊇ r
i=1
(2)
es decir, las tuplas de la relación original siempre se
recuperan realizando una reunión natural de las
proyecciones ri . Desgraciadamente, también pueden
aparecer otras nuevas.
• Nuestro objetivo es realizar una descomposición en la
que ambos conjuntos sean iguales, es decir, que cumpla
la propiedad LJ.
A NOMALÍAS
19
• Decimos que una descomposición {R1 , R2 , . . . , Rn } de un
esquema R es sin pérdidas (lossless) cuando se verifica la
identidad
n
(3)
⊲⊳ ri = r
i=1
• Para conseguir esto en nuestro ejemplo, sería necesario
que al cruzar una fila de la tabla R1 sólo obtuviéramos
una fila de la tabla R2 que cumpliera la condición
R1 .Asignatura = R2 .Asignatura
o dicho de otra forma, que cada asignatura de la tabla
R2 sólo apareciera una vez.
A NOMALÍAS
20
• Esto hecho se conoce como:
Teorema 1. (Heath)
Dado un esquema R(T, L), la descomposición
R1 (R), R2 (R) es una descomposición sin pérdida
(propiedad LJ) si y sólo si alguna de las siguientes
dependencias funcionales se pueden deducir de L
(pertenecen a L+ ):
R1 ∩ R2
→
R1 − R2
R1 ∩ R2
→
R2 − R1
O lo que es lo mismo:
A NOMALÍAS
R1 ∩ R2
→
R1
R1 ∩ R2
→
R2
21
• Estas dependencias funcionales nos vienen a decir que
los atributos comunes a las dos tablas funcionan como
clave (más exactamente, superclave) en alguna de
ellas.
• Aprovechando este formalismo, vamos a dejar
enunciado el siguiente teorema sobre descomposiciones
con la propiedad LJ:
Teorema 2. Sea el esquema R(T, L) y sea
ρ = {R1 , R2 , . . . , Rk } una descomposición de R con la
propiedad LJ respecto de L. Si τ = {S1 , S2 , . . . , Sk } es una
descomposición de Ri con la propiedad LJ respecto de
Li (proyección de L+ sobre Ti ), entonces
γ = {R1 , R2 , . . . , Ri − 1, S1, S2, . . . , Sk, Ri + 1, . . . , Er} es una
descomposición de R respecto L con la propiedad LJ.
A NOMALÍAS
22
• Siguiendo con nuestro ejemplo, vemos que Asignatura es
el atributo común a ambas tablas y no es clave en
ninguna de ellas. Por eso, la descomposición propuesta
resultó ser con pérdidas.
• Otra descomposición alternativa que sí cumpliría la
propiedad LJ sería la siguiente:
A NOMALÍAS
23
R1
A NOMALÍAS
Alumno
Profesor
Nota
Luis
Newton
5
Luis
Kant
7
Carlos
Einstein
6
Marta
Newton
5
Pepe
Kant
R2
4
Profesor
Asignatura
Newton
Física
Kant
Filosofía
Einstein
Física
24
• La descomposición es sin pérdida, ya que Profesor, el
atributo común, es clave en R2 .
• En principio, nuestro problema parece resuelto, pero si
miramos con atención aún pueden aparecer algunas
complicaciones.
• Si alguien, por error, introduce una nueva fila en la tabla
R1 con los valores (“Luis”, “Einstein”, 4) (puede hacerlo
ya que no se viola la unicidad de la clave primaria), nos
encontraremos con el dilema de si Luis tiene aprobada
la asignatura de Física o no, además de no saber si su
profesor es Newton o Einstein:
A NOMALÍAS
25
R1
A NOMALÍAS
Alumno
Profesor
Nota
Luis
Newton
5
Luis
Kant
7
Carlos
Einstein
6
Marta
Newton
5
Pepe
Kant
4
Luis
Einstein
R2
4
Profesor
Asignatura
Newton
Física
Kant
Filosofía
Einstein
Física
26
• Lo que sucede en este caso es que no estamos
cumpliendo las restricciones de que un alumno tiene un
único profesor y una única nota en cada asignatura
(Alumno Asignatura → P rof esorN ota)
• No ocurre lo mismo con la dependencia
Profesor→Asignatura, que se exige al declarar Profesor
como clave primaria en R2 .
• Este nuevo problema se conoce como descomposición
con pérdida de dependencias funcionales.
A NOMALÍAS
27
Descomposición sin pérdida de dependencias
• Sea el esquema R(T, L), donde L son las dependencias
estipuladas para la relación R. Sea {R1 , R2 , . . . , Rk } la
descomposición de R con esquemas Ri (Ti , Li ),
construidos de modo que Li es la proyección de L+
sobre Ti , es decir
Li = (X → Y ) ∈ L+ | (X ∪ Y ) ⊆ Ti
(4)
• Por tanto cada Li será el conjunto de restricciones que
involucra atributos únicamente de Ri , es decir, aquellas
dependencias funcionales que se pueden comprobar
de forma independiente en Ri .
A NOMALÍAS
28
• Ojo: Las dependencias que afectan a cada relación Ri
pueden no resultar necesariamente de la proyección de
las dependencias originales sobre los atributos Ti de Ri .
• Por ejemplo, en una relación R(T, L) con T = {A, B, C} y
L = {A → B, B → C} la proyección sobre R1 (A, C) debe
satisfacer la dependencia A → C, aunque ésta no se
obtiene proyectando L sobre los atributos de R1
π(A,C) (L) = φ
pero
A → C ∈ L1 = π(A,C) (L+ )
de forma que es preciso deducir todas las dependencias
que pueden afectar solamente a los atributos de R1
para conocer L1 .
A NOMALÍAS
29
• Consideremos el conjunto L′ = ∪Li , es decir, la reunión
de todas las dependencias impuestas a cada
subesquema Ri . En general L′ ⊆ L, pero puede darse el
caso de que una dependencia del conjunto L pueda
deducirse de L′ aun no apareciendo explícitamente
en L′ ; es decir, se encuentre en (L′ )+ .
• Para que la descomposición siga imponiendo (a nivel de
tabla) las dependencias originales, será entonces
preciso que (L′ )+ = L+ . Si esto ocurre se dice que la
descomposición preserva las dependencias.
• Es decir, la descomposición preserva dependencias si al
imponer las dependencias relativas a cada tabla de la
descomposición, todas las originales resultan impuestas
también, al poder deducirse de ellas.
A NOMALÍAS
30
Observemos qué es lo que sucede en nuestro ejemplo.
Esquema de partida:
Atributos:
Dependencias:
R(T, L)
T = {Alumno, Asignatura, Profesor, Nota}
L = {Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura,
Alumno Profesor → Nota}
Descomposición:
Atributos:
Dependencias:
R1 (T1 , L1 )
T1 = {Alumno, Profesor, Nota}
L1 = {Alumno Profesor → Nota}
Atributos:
Dependencias:
R2 (T2 , L2 )
T2 = {Profesor, Asignatura}
L2 = {Profesor→Asignatura}
En suma:
A NOMALÍAS
L′ = {Alumno Profesor→Nota,
Profesor→Asignatura}
31
• Como vemos la dependencia
Alumno Asignatura→Profesor no aparece explícitamente
en L′ ; igual ocurre con Alumno Asignatura→Nota. Pero,
además, tampoco se pueden deducir de dicho
conjunto.
• Existe un mecanismo para comprobar si esto ocurre:
cuando dudemos de si una restricción de la
forma X → Y se exige o no, bastará con calcular el
cierre X + de X respecto al conjunto L′ , y si Y aparece
en dicho cierre, la dependencia se estará imponiendo.
• Aún más, hay un algoritmo que nos facilita este proceso
sin la necesidad de calcular cada Li , y es el que se
presenta a continuación.
A NOMALÍAS
32
• El algoritmo se basa en la R-operación sobre el conjunto
de atributos Z respecto de L como la sustitución de Z
por Z ∪ ((Z ∩ Ti )+ ∩ Ti ).
Z⇐X
while Z cambie and not Y ∈ Z do
for i = 1 to K do {siendo K el número de subesquemas}
Z = Z ∪ ((Z ∩ Ti )+ ∩ Ti )
end for
end while
if Y 6∈ Z then
Se pierde la dependencia X → Y
else
Se conserva la dependencia X → Y
end if
A NOMALÍAS
33
• No siempre es posible encontrar una descomposición
que no presente ninguno de los anteriores problemas.
• En general, el cumplir la propiedad LJ debe ser una
exigencia básica que debe satisfacer cualquier
descomposición, pero en el caso de descomposiciones
con pérdidas habrá que analizar las ventajas e
inconvenientes de las posibles descomposiciones y de
las implicaciones de su implementación en un sistema
real de gestión de bases de datos.
A NOMALÍAS
34
E STUDIO DE N ORMALIZACIÓN
• Ahora vamos a centrarnos en el estudio de la calidad de
un esquema R(T, L), lo que se conoce como estudio de
normalización. Lo que se pretende es dar una
clasificación, de mayor a menor, de la posibilidad de
encontrarnos con problemas a la hora de implementar
un esquema (tabla), teniendo en cuenta las restricciones
que se deben cumplir impuestas como dependencias
funcionales.
• La calidad estará en función de la forma normal que
alcance el esquema. Definiremos 4 formas normales en
este orden: Primera Forma Normal (1FN), 2FN, 3FN y
Forma Normal de Boyce-Codd (FNBC).
E STUDIO DE N ORMALIZACIÓN
35
Primera Forma Normal (1FN)
• Un esquema R(T, L) está en 1FN cuando todas sus
columnas (atributos de T ) son simples. Dicho de otra
forma, cada columna de una tabla debe estar definida
sobre un tipo simple de datos (entero, real, cadena, etc.)
y no un tipo estructurado (registro, lista, matriz, etc.).
• Realmente, lo que se busca con esta forma normal es
que cada atributo se trate como un valor atómico.
E STUDIO DE N ORMALIZACIÓN
36
Segunda Forma Normal (2FN)
• Un esquema R(T, L) en 1FN está en 2FN cuando todos
sus atributos no principales (aquellos que no forman
parte de ninguna clave candidata) tienen dependencia
funcional total (completa) respecto de cada una de las
claves candidatas.
• En algunos textos se habla únicamente de la clave
primaria y no del resto de las claves candidatas. Para ver
que esto no es así vamos a utilizar nuestro ejemplo con
una pequeña modificación: vamos a incluir en T el
atributo que nos diga el departamento al que
pertenece el profesor.
E STUDIO DE N ORMALIZACIÓN
37
Tomemos el siguiente esquema:
Esquema:
R(T, L)
T = {Alumno, Asignatura, Profesor, Nota, Departamento }
L = {Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura,
Profesor → Departamento}
• Tomemos como clave primaria (Alumno Asignatura), de
manera que Departamento tiene una dependencia
funcional completa con respecto a ella.
• No ocurre lo mismo con la otra clave candidata (Alumno
Profesor) ya que Departamento tiene una dependencia
parcial de ella, porque sólo depende de Profesor.
E STUDIO DE N ORMALIZACIÓN
38
• Es cierto que en este esquema se repite
redundantemente la información del Departamento
siempre que se repita un determinado profesor, y por
tanto no cumple la 2FN.
• Consecuentemente, un esquema en 1FN cuyas claves
candidatas están formadas por un solo atributo siempre
está en 2FN.
E STUDIO DE N ORMALIZACIÓN
39
Tercera Forma Normal (3FN)
• Un esquema R(T, L) en 2FN está en 3FN cuando ningún
atributo no principal depende transitivamente de
ninguna clave.
• Entre X y Z existe una dependencia transitiva (X ։ Z) si
se cumple que
X ∩Z
=
φ
∃Y : X ∩ Y
=
φ, Y ∩ Z = φ
X → Y, Y 9 X
y
Y →Z
• Se dice que Z es una información sobre X, pero de
forma indirecta, ya que realmente Z es una información
sobre Y , e Y sobre X.
E STUDIO DE N ORMALIZACIÓN
40
• Aunque nuestro esquema no cumple la 2FN, este tipo de
transitividad también se presenta:
Alumno Asignatura → Profesor
Profesor 9 Alumno Asignatura
Profesor → Departamento
Luego: Alumno Asignatura ։ Departamento
• Esto sucede porque Departamento es una información
propia del Profesor y no de la asignatura de un alumno.
Por eso cada vez que se repite el profesor se repetirá la
asignatura que imparte.
E STUDIO DE N ORMALIZACIÓN
41
• Otra forma equivalente, aunque algo más sencilla, de
comprobar si un esquema está en 3FN es la siguiente: un
esquema estará en 3FN si para toda dependencia
funcional no trivial X → A ( es decir que A * X ) se cumple
alguna de las siguientes condiciones:
1. X es una superclave de R
2. A está contenida en una clave candidata de R
• Aunque se habla de superclaves, si trabajamos con un
conjunto de dependencias sin atributos extraños (por
ejemplo un recubrimiento no redundante) podemos
hablar directamente de claves candidatas.
• En nuestro esquema R vemos que la dependencia
Profesor → Departamento no cumple ninguna de las dos
condiciones.
E STUDIO DE N ORMALIZACIÓN
42
Forma Normal de Boyce-Codd (FNBC)
• Un esquema R(T, L) en 1FN está en BCFN cuando para
toda dependencia funcional no trivial X → Y (es decir,
Y * X , Y 6= φ), se tiene que X es clave o superclave.
• Vemos que ahora somos más restrictivos y exigimos que
se cumpla únicamente la condición 1 para estar en 3FN.
Por lo tanto es evidente que todo esquema que esté en
FNBC también estará en 3FN.
E STUDIO DE N ORMALIZACIÓN
43
• Para ver la diferencia entre FNBC y 3FN vamos a retomar
nuestro esquema original:
R(T, L) : T = {Alumno, Asignatura, Profesor, Nota}
L=
{Alumno Asignatura → Profesor,
Alumno Asignatura → Nota,
Profesor → Asignatura}
Claves Candidatas
=
{(Alumno Asignatura), (Alumno Profesor)}
• Ahora R sí que está en 3FN, pero por
Profesor→Asignatura R no alcanza la FNBC.
E STUDIO DE N ORMALIZACIÓN
44
• Hay un aspecto de la FNBC que la hace muy interesante
a la hora de implementar la base de datos. Si todas las
tablas están en FNBC, podemos hacer cumplir las
dependencias funcionales asociadas a cada tabla
mediante la restricción PRIMARY KEY (para la clave
primaria) y UNIQUE (para el resto de claves candidatas).
Sin embargo en 3FN las dependencias del tipo
Profesor→Asignatura suelen tener un coste
computacional elevado, como ya se mencionó
anteriormente.
E STUDIO DE N ORMALIZACIÓN
45
• Resumiendo, si un esquema (tabla) no alcanza una
forma normal satisfactoria, que reduzca la repetición de
información, entonces podemos realizar una
descomposición de la misma.
• Esta descomposición debe cumplir la propiedad LJ; que
si es posible conserve dependencias; y que las tablas
obtenidas alcancen una forma normal más adecuada.
Esto no siempre es posible, y a veces lo que ganamos
por un lado lo perdemos por otro.
E STUDIO DE N ORMALIZACIÓN
46
Algoritmo de descomposición en FNBC con la Propiedad LJ
• Existe un algoritmo que nos asegura una descomposición
con la propiedad LJ y que todas las tablas obtenidas
alcanzan la FNBC.
• Partimos de R(T, L) donde L es un recubrimiento no
redundante. Si existe una dependencia X →A tal que X
no sea clave (por tanto no está en FNBC), proyectamos
R en R1 = (T1 , L1 ) y R2 = (T2 , L2 ), con
E STUDIO DE N ORMALIZACIÓN
T1
= X ∪ {A}
T2
= T − {A}
y
47
• Podemos ver una de las condiciones para que la
descomposición cumpla la propiedad LJ
T1 ∩ T2 → T1 − T2
siempre se cumple, ya que (T1 ∩ T2 ) es X y (T1 − T2 ) es A,
y por tanto, se trata de la propia dependencia X → A. Es
decir, los atributos comunes (X) funcionan como clave
por lo menos en uno de los subesquemas (T2 ).
E STUDIO DE N ORMALIZACIÓN
48
• L1 y L2 son las proyecciones de L+ (cierre del conjunto
L) sobre T1 y T2 respectivamente. Normalmente no
tenemos calculado L+ , por tanto, debemos encontrar
todas las posibles dependencias que impliquen
únicamente a atributos de cada esquema y después
obtener su recubrimiento no redundante.
• Si alguno de los esquemas obtenidos no alcanza la FNBC
volveremos a descomponerlo hasta que todos los
esquemas resultantes cumplan la FNBC.
E STUDIO DE N ORMALIZACIÓN
49
• En la práctica cuando en los esquemas aparecen
dependencias de la forma
X → A1 , X → A2 . . . X → An
donde X no es clave candidata, se genera:
T1 = {X, A1 , A2 . . . An }
T2 = {T − {A1 , A2 . . . An }}
• Al ir cumpliendo la propiedad LJ en cada paso, la
descomposición resultante también la cumple.
E STUDIO DE N ORMALIZACIÓN
50
• Ejemplo
R(T, L) :
T =
{Alumno, Asignatura, Profesor, Nota, Dpto}
L=
{Alumno Asignatura → Profesor Nota
Profesor → Asignatura Dpto}
Claves Candidatas
=
{(Alumno Asignatura), (Alumno Profesor)}
• Profesor → Asignatura rompe la FNBC, y la utilizamos para
descomponer, como también tenemos que con Profesor → Dpto:
R1 (T1 , L1 ) :
T1 =
{Alumno, Profesor, Nota}
L1 =
{Alumno Profesor → Nota}
Clave Candidata
R2 (T2 , L2 ) :
Clave Candidata
E STUDIO DE N ORMALIZACIÓN
=
{(Alumno Profesor)}
T2 =
{Profesor, Asignatura, Dpto}
L2 =
{Profesor → Asignatura Dpto}
=
{(Profesor)}
51
• El resultado que hemos obtenido con todas las tablas en
FNBC ya lo vimos anteriormente para mostrar que dicha
descomposición no conservaba dependencias. Una vez
más el resultado no parece óptimo, la elección última
dependerá de otros factores de implementación que no
se contemplan en esta teoría de diseño de bases de
datos.
E STUDIO DE N ORMALIZACIÓN
52
Descargar