Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelo relacional
3.1 Introduccin
En el captulo anterior se mencionaron 3 tipos de modelado: conceptual, lgico y fsico.
El modelo e-r se considera un modelo conceptual ya que permite a un nivel alto el ver con claridad la informacin utilizada en algun problema o negocio.
En este captulo nos concentraremos en desarrollar un buen modelo "lgico" que se conoce como "esquema de la base de datos" (database schema) a partir del cual se podr realizar el modelado
fsico en el DBMS, es importante mencionar que es un paso necesario, no se puede partir de un modelo conceptual para realizar un fsico.
Creando un conjunto de tablas iniciales y aplicar operaciones de normalizacin hasta conseguir el esquema ms ptimo. Las tcnicas de nomalizacin se explican ms adelante en este
captulo.
Convertir el diagrama e-r a tablas y posteriormente aplicar tambin operaciones de normalizacin hasta conseguir el esquema ptimo.
La primer tcnica fue de las primeras en existir y, como es de suponerse, la segunda al ser ms reciente es mucho ms conveniente en varios aspectos:
El partir de un diagrama visual es muy til para apreciar los detalles, de ah que se llame modelo conceptual.
El crear las tablas iniciales es mucho ms simple a travs de las reglas de conversin.
Se podra pensar que es lo mismo porque finalmente hay que "normalizar" las tablas de todas formas, pero la ventaja de partir del modelo e-r es que la "normalizacin" es mnima por lo
general.
Lo anterior tiene otra ventaja, an cuando se normalice de manera deficiente, se garantiza un esquema aceptable, en la primer tcnica no es as.
3.3 Conceptos bsicos
3.3.1 Tablas
El modelo relacional proporciona un manera simple de representar los datos: una tabla bidimensional llamada relacin.
Relacin Pelculas
La relacin Pelculas tiene la intencin de manejar la informacin de las instancias en la entidad Pelculas, cada rengln corresponde a una entidad pelcula y cada columna corresponde a uno de
los atributos de la entidad. Sin embargo las relaciones pueden representar ms que entidades, como se explicar ms adelante.
3.3.2 Atributos
Los atributos son las columnas de un relacin y describen caractersticas particulares de ella.
3.3.3 Esquemas
En un modelo relacin, un diseo consiste de uno o ms esquemas, a este conjunto se le conoce como "esquema relacional de base de datos" (relational database schema) o simplemente "esquema
de base de datos" (database schema)
3.3.4 Tuplas
Cada uno de los renglones en una relacin conteniendo valores para cada uno de los atributos.
3.3.5 Dominios
Se debe considerar que cada atributo (columna) debe ser atmico, es decir, que no sea divisible, no se puede pensar en un atributo como un "registro" o "estructura" de datos.
Las relaciones son un conjunto de tuplas, no una lista de tuplas. El orden en que aparecen las tuplas es irrelevante.
3.4 Conversin del modelo e-r a un esquema de base de datos (Conversin a tablas)
3.4.1 Introduccin
El modelo es una representacin visual que grficamente nos da una perspectiva de como se encuentran los datos involucrados en un proyecto u organizacin.
Pero el modelo no nos presenta propiamente una instancia de los datos, un ejemplo que muestre con claridad algunas datos de muestra y como se relacionan en realidad. Por eso es conveniente
crear un "esquema", el cual consiste de tablas las cuales en sus renglones (tuplas) contienen instancias de los datos.
Las tablas siguientes muestran las reglas que se deben seguir para poder crear dicho esquema.
Debil
LLP_A atribs_A
B1
LLP_B1 atribs_B1
B2
B3
A_B1
donde:
Ejemplo:
Para el ejemplo de la figura tendramos el esquema:
escuela
id url nombre
departamento
curso
profesor
id nombre extension
estudiante
id nombre carrera
profesor_curso
modelo e-r
de generalizacin a tablas
dos posibilidades:
1.
o para cada conjunto de entidades B de menor nivel, crear una tabla tal que:
2.
o si A es un conjunto de entidades de mayor nivel para cada conjunto de entidades B de menor nivel, crear una tabla tal que:
columnas (B) = atributos (B) U atributos (A)
La generalizacin se convertira al siguiente esquema:
1)
LLP_A atribs_A
B1
atribs_B1 LLP_A
B2
atribs_B2 LLP_A
B3
atribs_B3 LLP_A
donde:
2)
B1
B2
B3
donde:
Es importante mencionar que a pesar de que existen 2 mtodos para convertir una generalizacin a tablas, no hay una regla exacta de cual usar en determinado caso. A continuacin se mencionan
algunos consejos tiles para la determinacin de cual mtodo emplear:
1. Si la entidad de nivel superior est relacionada con otra(s) entidades puede sugerirse emplear el mtodo (1) ya que de esa manera la tabla (A) ser la nica involucrada en la relacin, de otra
forma se tendran tres tablas (B1,B2 y B3) formando parte de la relacin
2. Es importante tomar en cuenta la pertenencia de instancias, si se considera que hablamos de una generalizacin disjunta, donde no se puede pertenecer a varias entidades de nivel inferior,
quizs sea recomendable el mtodo (1), en otro caso se podra pensar en el mtodo (2).
3. Tambin es importante analizar ambos casos con respecto a las "consultas" que se deseen realizar ya que esto tambin determina en muchos casos el mtodo a emplear.
Las llaves resultantes en las relaciones de un esquema se pueden inferir de la siguiente manera:
1) Cada tabla que provenga de una entidad contiene por si misma una llave
2) Para las tablas resultado de una relacin se toman las llaves primarias de ambas entidades y stas conforman la nueva llave primaria, excepto en un caso como el que sigue:
Podemos observar que existe una relacin m-m entre "actor" y "serie", demostrando que un actor puede actuar en muchas series y que muchas series tendrn a
los mismos actores.
actor_serie
si se considera "id_actor, id_serie" como la llave primaria caemos en un problema porque esa combinacin no identifica de manera nica a la tupla, como es el
caso de "Joaqun Pardav, Gnesis" ya que en la primer tupla tenemos que determina a "Abel hermano bueno" y en la tercera a "Can hermano malo".
La relacin es correcta ya que un actor puede representar a varios personajes en la misma obra, pero entonces la llave "id_actor, id_serie" no es la correcta y
en este caso lo ms recomendable sera emplear los tres atributos de la relacin "id_actor, id_serie, id_personaje"
3.5 Normalizacin
Una vez creadas las tablas hay que verificarlas y revisar si an se puede reducir u optimizar de alguna manera.
Los problemas tales como la redundancia que ocurren cuando se abarrotan demasiados datos en un sola relacin son llamados anomalas. Los principales tipos son:
1. Redundancia: la informacin se repite innecesariamente en muchas tuplas. En la relacin siguiente, length y filmType.
2. Anomalas de actualizacin: cuando al cambiar la informacin en una tupla se descuida el actualizarla en otra. Si en la relacin encontramos que el length de StarWars es 125 podramos
cambiarlo nicamente para la primer tupla y olvidar actualizar las dems.
3. Anomalas de eliminacin: si un conjunto de valores llegan a estar vacos y se llega a perder informacin relacionada como un efecto de la eliminacin. Si eliminamos al actor Emilio
Estevez, perdemos tambin la tupla de la pelcula MightyDucks.
3.5.1.1 Definicin
En el diseo de esquemas de bases de datos el concepto de dependencia funcional (functional dependency) es vital para eliminar "redundancia", otros factores sera el manejo de dependencias
multivaluadas y las restricciones de integridad referencial.
Una dependencia funcional en una relacin R es una enunciado de la forma "si dos tuplas de R concuerdan en los atributos A1,A2,...An (tienen los mismos valores para cada atributo), entonces
deben concordar tambin con otro atributo B" . Esta FD se escribira como A1,A2,....An --> B y se dice que "A1, A2,....An determina funcionalmente a B".
entonces podemos simplemente escribir este conjunto de FDs como: A1, A2, ...An ---> B1,B2,...Bm
podemos entonces afirmar que: title, year --> length, filmType, studioName
1. Esos atributos determinan funcionalmente a "todos" los dems atributos de una relacin.
2. No hay un subconjunto de { A1, A2,....An } que determine funcionalmente a "todos" los dems atributos (incluyendo al resto del conjunto { A1, A2,....An })
La definicin anterior de llave es similar a la que se mencion anteriormente de superllave, sin embargo las superllaves no son llaves "mnimas", recordemos que una llave primaria se escoge de
entre el conjunto de superllaves mnimas. Es importante hacer notar que una llave mnima no se refiere al nmero de atributos includos, se puede tener una llave mnima ABC y otra DE donde
ambas son mnimas an cuando una de ellas sea todava de menor tamao que la otra.
*Nota:
De manera general una dependencia funcional de la forma --> se considera "dependencia funcional trivial" si
para determinar lo anterior se puede encontrar +, todos los atributos que dependen funcionalmente de
teniendo R(A,B,C,D,E)
entrada: ,F
salida: +
result= =
while changes to result do
=result
for each ( --> F ) do
begin
result --> (reflexividad)
if result then
--> , --> (transitividad)
result=result
end
end
Si {A,B}+ = {A,B,C,D,E,F} entonces podramos afirmar que AB es superllave, pero para ello sera necesaria alguna dependencia adicional ej. AB --> CF
Verificar si es una superllave, calculando + y revisando si + contiene a todos los atributos de la relacin R.
Verificar una dependencia funcional --> (es decir, si pertenece a F+) checando si +.
Calcular F+ (la cerradura de todo el conjunto de dependencias F en una relacin R): Para cada R se calcula + y para cada elemento S + se obtiene una dependencia funcional
--> S.
Una tabla se encuentra en 1a NF, si todos sus atributos son atmicos (indivisibles)
El ejemplo clsico:
En 1a. NF
Si tenemos la tabla:
calificaciones_cursos
NO se encuentra en 2a NF ya que
curso
estud_curso
La intuicin
Al descomponer una relacin R en varias relaciones R1 y R2 se debe verificar que no haya prdidas, es decir, que al volver a combinar las relaciones (producto entre R1 y R2) se obtengan
exactamente las mismas tuplas.
{ R1 R2 --> R1 } F+
o bien si
{ R1 R2 --> R2 } F+
F={ { id,clave,depto} --> descripcin, {clave,depto} --> descripcin, { id,clave,depto} --> calificacin }
Al descomponer una relacin R en varias relaciones R1,R2,..Rn es importante revisar que se preserven las dependencias funcionales iniciales. De esta manera se garantiza que una actualizacin no
provoque una relacin invlida, verificando las FDs o bien a travs de combinaciones de relaciones(productos o joins) aunque esto ltimo no es muy eficiente.
Para ello se analizan todas la dependencias funcionales Fi para cada Ri que debern ser un subconjunto de F+
F={ { id,clave,depto} --> descripcin, {clave,depto} --> descripcin, { id,clave,depto} --> calificacin }
F' = F1 F2
depto,clave_curso--> descripcin
3.5.6.1 Caractersticas
result= {R}
done=false
calcular F+
while (! done) do
if(existe un esquema Ri en result que no est en BCNF) then
si --> es una dependencia funcional no trivial en Ri
tal que --> Ri no est en F+ y =0
result= ( result - Ri ) ( Ri - ) ( , )
else
done=true
end
Ejemplo:
R(A,B,C,D)
B-->D
(A,B) (B,C,D)
3.5.7.1 Caractersticas
Se puede observar que las 2 primeras restricciones son las mismas que para BCNF pero existe una tercera que da flexibilidad a las relaciones.
Podemos afirmar entonces que: "Si una relacin est en BCNF, est tambin 3NF; pero si una relacin est en 3NF no necesariamente est en BCNF".
Se puede observar {customer-name branch-name} determina al resto de los atributos as que es la superllave de R.
Se puede observar que office-number y banker-name no son parte de alguna llave candidata
se descompondra en:
Se puede observar que al no cumplir con las 2 primeras no est en BCNF pero gracias al relajamiento si est en 3NF
Otro ejemplo:
deptos
empleados
Se puede observar nuevamente para la segunda relacin que id_jefe no es parte de alguna llave candidata
Aplicando la descomposicin:
deptos
empleados
id_empleado nombre_depto
Se observa como la relacin no solo est en 3NF sino tambin en BCNF por cumplir con la segunda regla.
La forma cannica de F es aquel conjunto mnimo de dependencias funcionales equivalentes a F, sin dependencias redundantes o partes redundantes de dependencias.
Para obtener la Fc se deben extraer todos los miembros "extraos", suponga un conjunto F de dependencias funcionales y la dependencia --> est en F.
El atributo A es extrao en si A y
F lgicamente implica (F - { --> }) {( - A ) --> }
Ejemplo:
F = { A --> C , AB --> C }
B es extrao en AB --> C porque { A --> C, AB --> C } lgicamente implica A --> C (el resultado de quitar B de AB --> C ).
El atributo A es extrao en si A y
el conjunto de dependencias (F - { --> }) { --> ( - A ) } implica lgicamente a F
Ejemplo:
F = { A --> C , AB --> CD}
*El algoritmo anterior garantiza que en una descomposicin no haya prdida (al incluir por lo menos en una relacin una de las superllaves) y que se preserven las dependencias funcionales (al
incluir cada una de ellas).
Ejemplo:
student
Fc:
sid -->name,street,city
street, city-->zip
zip --> city
Descomponer en 3NF
2. -
3. -
4. Eliminar R3
R1
sid -->name,street,city
R2
street, city-->zip
zip --> city
Como se mencion anteriormente: "Si una relacin est en BCNF, est tambin 3NF; pero si una relacin est en 3NF no necesariamente est en BCNF".
est en 3NF pero no en BCNF puesto que "banquero" no es una superllave, normalizando:
Si se alcanza BCNF pero no hay preservacin de dependencias se puede considerar una 3NF (recordando que 3NF siempre debe carecer de prdidas y debe preservar dependencias).
3.6 Conclusiones
De manera que las metas del diseo de bases de datos con dependencias funcionales son:
BCNF*
Preservacin de dependencias
* Llegar a una forma BCNF puede llegar a ser complicado, debido a esto en muchas ocasiones es suficiente con alcanzar la 3NF para lograr un buen diseo.