Análise e deseño detallado de aplicacións de informática e de xestión/Deseño de bases de datos relacionais

En Galilibros, o Wikibooks en galego.


Describiuse a forma de expresar de maneira gráfica os datos dunha base de datos utilizando o modelo entidade-relación e a forma de trasladar o diagrama resultante ao modelo relacional de datos. Neste apartado estúdase o seguinte paso no deseño dunha base de datos: converter o esquema relacional nun bo esquema de base de datos que permita almacenar toda a información pertinente cun mínimo de redundancia pero que ao mesmo tempo facilite a súa recuperación.

Se non se deseña ben o esquema relacional, poden aparecer unha serie de problemas de redundancia e inconsistencia bastante graves.

A solución que xorde inmediatamente é a descomposición do esquema da relación anterior. Porén cómpre descompoñer de forma axeitada ou poden producirse problemas.

A teoría da normalización evita as redundancias e as anomalías de actualización, obtendo relacións máis estruturadas que non presenten certos problemas.

A teoría da normalización céntrase no que se coñece coma “formas normais”. Dise que un esquema de relación está nunha determinada forma normal se satisfai un conxunto específico de restricións.

No proceso de normalización sométese o esquema de relación a unha serie de probas para “certificar” se pertence ou non a unha certa forma normal. Orixinalmente as formas normais eran tres. Posteriormente definiuse unha forma máis estrita que a terceira forma normal, chamada “forma normal de Boyce-Codd”. Máis adiante propuxéronse as formas normais cuarta e quinta fundamentadas nas dependencias multivaluadas.

Dependencias funcionais[editar]

A normalización de relacións está baseada na teoría das dependencias, que se centra no estudo das dependencias que presenta cada atributo dunha relación con respecto ao resto de atributos da mesma relación.

Dada unha relación R, dise que o atributo Y de R é funcionalmente dependente do atributo X de R (escríbese R.X → R.Y e lese “R.X determina funcionalmente a R.Y”) unicamente en caso de que para cada valor de X haxa asociado precisamente un único valor á vez de Y.

Tanto X coma Y poden ser compostos, é dicir, grupos de atributos.

R.x → (R.a, R.b, ..., R.n)

Informalmente pódese dicir que Y depende de X se non poden existir dúas tuplas co mesmo valor en X e distinto en Y.

Na definición anterior pódese apreciar o seguinte:

  • O concepto de dependencia funcional ten en conta atributos dunha mesma relación e non atributos de relacións distintas.
  • O concepto de dependencia funcional é independente do estado ou extensión dunha relación e, por tanto, é intrínseco á intención da relación.
  • A definición anterior non fai referencia explícita á complexidade dos atributos dependentes, polo que:
    • Os atributos funcionalmente dependentes dunha relación poder ser simples ou estar formados pola agregación de varios atributos, R.x e ou R.y poden ser da forma:
      R.x = {R.a, R.b, ..., R.n}
      Para R.a, R.b, ..., R.n ∈ R.
    • Os atributos funcionalmente dependentes poden ser ou non atributos que formen parte da clave primaria ou de algunha clave candidata da relación.
Na definición anterior non se fai ningunha referencia algunha ao número de veces (tuplas) nas que o atributo R.x ten un mesmo valor.

É hora de introducir o concepto de dependencia funcional completa:

Dise que o atributo R.y ∈ R é funcionalmente dependente de forma completa doutro atributo R.x ∈ R unicamente se depende funcionalmente de R.x e de ningún subconxunto dos atributos que formen parte do atributo R.x.

Segundo esta definición pódese apreciar que:

  • Para que unha dependencia funcional non sexa completa, o atributo R.x ten que ser un agregado formado pola concatenación de varios atributos pertencentes á relación.
  • Que o atributo R.y sexa simple ou composto non ten relevancia para que a dependencia funcional R.x → R.y sexa ou non completa.

Propiedades das dependencias funcionais[editar]

As dependencias funcionais satisfán unha serie de propiedades que cómpre coñecer para a análise das relacións do esquema relacional nas que se presentan:

Reflexiva
Dados os atributos a e b dunha relación R, para os que se cumpre que R.b ⊆ R.a, entón na relación R está presente unha dependencia funcional da forma R.a → R.b.
Esta regra considera que todo conxunto de atributos dunha relación é funcionalmente dependente de si mesmo e de calquera dos seus posibles subconxuntos.
Aumento
Dados os atributos a e b dunha relación R na que está presente a dependencia funcional R.a → R.b, entón tamén estará presente a dependencia funcional R.(a+c) → R.(b+c), sendo c calquera outro atributo que forme parte da intención da relación R.
Transitiva
Dados os atributos a, b e c dunha relación R na que están presentes as dependencias funcionais R.a → R.b e R.b → R.c, entón tamén estará presente a dependencia funcional R.a → R.c.

A estas tres regras descritas denomínaselles “Axiomas de Armstrong”, e deles poden deducirse outro conxunto de propiedades que satisfán as dependencias funcionais:

Unión
Dados os atributos a, b e c dunha relación R na que están presentes as dependencias funcionais R.a → R.b e R.a → R.c, entón tamén estará presente a dependencia funcional R.a → R.(b + c).
Pseudo-transitiva
Dados os atributos a, b, c e d dunha relación R na que están presentes as dependencias funcionais R.a → R.b e R.(b + c) → R.d, entón tamén estará presente a dependencia funcional R.(a + c) → R.d.
Descomposición
Dados os atributos a, b e c dunha relación R na que está presente a dependencia funcional R.a → R.b, e cúmprese que R.c ⊆ R.b, entón tamén estará presente a dependencia funcional R.a → R.c.

Regras de normalización[editar]

A aplicación dunha regra de normalización é unha operación que transforma unha táboa ─xeralmente dividíndoa en varias táboas─ de xeito que se eviten:

  • as redundancias dos datos ─repetición de datos nun sistema─,
  • as anomalías de actualización ─inconsistencias dos datos como resultado dos datos redundantes e actualizacións parciais─,
  • as anomalías de borrado ─perdas non intencionadas de datos debido a que se borraron outros datos─, e
  • as anomalías de inserción ─imposibilidade de engadir datos á base de datos debido á ausencia doutros datos─.

O proceso de normalización conduce ao modelo físico dos datos e consta de varias fases denominadas formas normais, detalladas neste capítulo.

A sucesiva aplicación das regras de normalización vai dar lugar á xeración dun número maior de relacións que formen parte do esquema relacional e, dende un punto de vista puramente lóxico, unha redundancia dos atributos considerados no esquema.

A aplicación sucesiva das regras de normalización restrinxe, por tanto, o número de relacións que as satisfán. Por regra xeral, dise que un esquema relacional é consistente se as relacións satisfán polo menos a forma normal de Boyce-Codd.

Definición da clave[editar]

Antes de comezar o proceso de normalización dunha relación ou táboa, cómpre definir unha clave. Dita clave deberá conter un valor único para cada rexistro (non poderán aparecer dous valores iguais en toda a táboa) e poderá estar formada por un ou varios campos.

Unha vez definida a clave pode comezar a estudarse a 1FN.

Primeira forma normal[editar]

Unha relación está en primeira forma normal (1FN) unicamente se os rexistros dos seus campos toman valores atómicos, é dicir, se en cada rexistro hai un só valor. Non se aceptan atributos multivaluados nin compostos.

A aplicación desta forma normal consiste en descompoñer aquelas tuplas ou rexistros en que os atributos teñan máis dun valor en tantas tuplas coma valores estean presentes.

A primeira forma normal é unha restrición innata ao propio modelo relacional.

Unha vez normalizadas as relacións en primeira forma normal, podemos pasar á segunda.

Segunda forma normal[editar]

Unha relación satisfai a segunda forma normal (2FN) unicamente se satisfai a primeira e cada atributo non clave da relación dependen funcionalmente de forma completa da clave primaria desa relación.

Se unha relación non está na segunda forma normal pódese aplicar o seguinte teorema de xeito que, ao descompoñer a relación orixinal en dous, polo menos unha das dúas relacións resultantes estea na segunda forma normal:

Dada unha relación R(A, B, C, D) con clave primaria (A, B) e de xeito que R.A → R.D, a relación R pode descompoñerse coma:
R1(A,D)
R2(A,B,C)

Terceira forma normal[editar]

Unha relación R satisfai a terceira forma normal (3FN) unicamente se satisfai a segunda e cada atributo non clave da relación non depende funcionalmente de forma transitiva da clave primaria da relación.

É dicir, non estaría na terceira forma normal unha relación con tres atributos, A, B e C, se B e C dependen funcionalmente de A ─clave primaria─ e C depende tamén funcionalmente de B. Neste caso C estaría dependendo de forma transitiva da clave primaria (A) a través dun atributo intermedio, B.

Se unha relación non se atopa na terceira forma normal pódese aplicar o seguinte teorema, de xeito que ao descompoñermos a relación orixinal en polo menos dúas, unha delas estea na terceira forma normal:

Dada unha relación R(A,B,C) con clave primaria (A) e de xeito que R.B → R.C, entón a relación R pode descompoñerse coma:
R1(A,B)
R2(B,C)

Forma normal de Boyce-Codd[editar]

As relacións que satisfán a restrición imposta pola forma normal de Boyce-Codd (FNBC) satisfán as formas normais segunda e terceira. A forma normal de Boyce-Codd baséase no concepto de determinante funcional, e está soportada nas características das claves candidatas das relacións.

Denomínase “determinante funcional” a un atributo ou un conxunto deles dunha relación R do que depende funcionalmente de forma completa algún outro atributo da mesma relación.

Unha relación R satisfai a forma normal de Boyce-Codd unicamente se cumpre coa primeira e cada determinante funcional é unha clave candidata da relación R.

En realidade son moi poucos os casos de relacións que se atopan na terceira forma normal e non están na forma normal de Boyce-Codd. Este tipo de táboas son aquelas nas que se das as seguintes circunstancias:

  • Existen varias claves candidatas.
  • As claves candidatas son compostas.
  • As claves candidatas solápanse (teñen polo menos una atributo común).

Nestes casos pódese aplicar o seguinte teorema, de xeito que ao descompoñer a relación orixinal en polo menos dúas, unha delas estea na forma normal de Boyce-Codd.

Dada unha relación R(A,B,C,D) con claves (A,B) e (B,C) e tal que R.A → R.C, entón a relación R pode descompoñerse de calquera das seguintes maneiras:
R1(A,C) e R2(B,C,D)
R1(A,C) e R2(A,B,D)