viernes, 9 de marzo de 2007
Guia Sistemas Distribuidos
MODELO ENTIDAD-RELACIÓN
El modelado entidad-relación es una técnica para el modelado de datos utilizando diagramas entidad relación. Consiste en los siguientes pasos:
1. Se parte de una descripción textual del problema o sistema de información a automatizar (requisitos).
2. Se hace una lista de los sustantivos y verbos que aparecen.
3. Los sustantivos son posibles entidades o atributos.
4. Los verbos son posibles relaciones.
5. Analizando las frases se determina la cardinalidad de las relaciones y otros detalles.
6. Se elabora el diagrama (o diagramas) entidad-relación.
7. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama.
Los diagramas entidad-relación (E-R) son una herramienta para el modelado de datos de un sistema de información. Estos diagramas expresan entidades relevantes para un sistema de información, sus inter-relaciones y propiedades. Es el modelo conceptual más utilizado para el diseño conceptual de bases de datos. El modelo entidad-relación está formado por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de representaciones gráficas y lingüísticas.
Los diagramas E-R son un lenguaje gráfico para describir conceptos. Son dibujos o gráficos que describen la información que trata un sistema de información y el software que lo automatiza.
Entidades
Una entidad es cualquier "objeto" sobre el que se tiene información; cosa, persona, concepto abstracto o suceso. Se representa gráficamente mediante un rectángulo o "caja" etiquetada en su interior mediante un nombre. Ejemplos de entidades en los sistemas de información son: factura, persona, empleado, coches, casas, empleados, clientes, empresas, oficios, diseños de productos, conciertos, excursiones, etc.
Relación
Una relación describe cierta interdependencia (de cualquier tipo) entre una o más entidades. Es una correspondencia o asociación entre dos o más entidades. Se representa mediante un rombo etiquetado en su interior mediante un verbo. Además, dicho rombo debe unirse mediante líneas con las entidades que relaciona.
Ejemplos:
• Una persona (entidad) trabaja (relación) para un departamento (entidad).
• Una factura (entidad) se emite (relación) a un cliente (entidad).
Las relaciones entre dos entidades se denominan binarias, las relaciones entre tres entidades se denominan ternarias, y las relaciones entre cuatro o más entidades se denominan múltiples. Las relaciones múltiples son poco frecuentes, mientras que las relaciones binarias son habituales en cualquier problema.
Atributos
Los atributos representan las propiedades básicas de las entidades y de las relaciones. Toda la información extensiva es portada por los atributos. Los atributos son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección,...)
Gráficamente, se representan mediante bolitas que cuelgan de las entidades o relaciones a las que pertenecen, etiquetado mediante un nombre en su interior.
Los atributos pueden ser simples o compuestos. Un atributo simple es un atributo que tiene un solo componente, que no se puede dividir en partes más pequeñas, que tengan un significado propio. Un atributo compuesto es un atributo con varios componentes, cada uno con un significado por sí mismo. Un grupo de atributos se representa mediante un atributo compuesto cuando tienen afinidad en cuanto a su significado, o en cuanto a su uso. Un atributo compuesto se representa gráficamente mediante un óvalo.
Los atributos describen información útil sobre las entidades. En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Como por ejemplo, el atributo identificativo que distingue a un empleado de otro es su número de la Seguridad Social.
Ejemplos de atributos de la entidad "persona":
• Documento de Identidad (identificativo)
• Nombre
• Apellidos
• Dirección
• Código postal
Las relaciones pueden ser:
- 1 a 1
- 1 a muchos
- Muchos a 1
- Muchos a muchos
• Relaciones 1-1.- Las entidades que intervienen en la relación se asocian una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la relación MATRIMONIO).
• Relaciones 1-n.- Una ocurrencia de una entidad está asociada con muchas (n) de otra (Ej: la entidad EMPRESA, la entidad TRABAJADOR y entre ellos la relación TRABAJAR-EN).
• Relaciones n-n.-Cada ocurrencia, en cualquiera de las dos entidades de la relación, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la entidad ALUMNO, la entidad EMPRESA y entre ellos la relación MATRÍCULA).
NORMALIZACIÓN DE DATOS
La normalización es el proceso que permite distribuir todos los campos de la base de datos en tablas relacionadas entre sí, de forma que cumplan con el funcionamiento esperado de la base de datos. Para evitar la inconsistencia y duplicidad de datos emplearemos la técnica de normalización para organizar los campos de datos en cada tabla. La normalización es un proceso que clasifica relaciones, objetos, formas de relación y demás elementos en grupos, en base a las características que cada uno posee.
Normalización es un conjunto de reglas que sirven para ayudar a los diseñadores a desarrollar un esquema que minimice los problemas de lógica. Cada regla está basada en la que le antecede. La normalización se adoptó porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de lógica cuando se trataba de manipular los datos. La normalización es una técnica que se utiliza para crear relaciones lógicas apropiadas entre tablas de una base de datos.
Ayuda a prevenir errores lógicos en la manipulación de datos. La normalización facilita también agregar nuevas columnas sin romper el esquema actual ni las relaciones.
El proceso de normalización de una base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo E-R (entidad-relación) al modelo relacional.
Las bases de datos relacionales se normalizan para:
• Evitar la redundancia de los datos.
• Evitar problemas de actualización de los datos en las tablas.
• Proteger la integridad de los datos.
Una base de datos normalizada puede ocupar menos espacio en disco que una no normalizada. Hay menos repetición de datos, lo que tiene como consecuencia un mucho menor uso de espacio en disco.
Grados de normalización
Existen varios niveles de normalización, entre las que se encuentran: Primera Forma Normal (1FN), Segunda Forma Normal (2FN), Tercera Forma Normal (3FN), Cuarta Forma Normal (4FN).
- Primera forma normal (1FN)
Una tabla está en 1FN si el valor que contiene un atributo de un registro, un campo, es único y elemental. En cada uno de los atributos sólo se puede incluir un dato, aunque sea compuesto, pero no se pueden incluir una lista de datos. Por ejemplo, no se pueden incluir en el atributo Dirección el domicilio habitual y el de vacaciones; habría que crear dos registros que se diferenciarán por el atributo Dirección:
Tabla de una base de datos
NIF Ape Nom Dir CPost Pobl Prov
1 García Francisco C/Marín 16 33698 Oviedo Asturias
2 Sanchez Luisa C/Tenerías 34
C/Ramorta 65 85458
54585 Cigales
Bueu Valladolid
Pontevedra
Esta tabla no está en 1FN, ya que el cliente con Id 2 tiene dos direcciones. Para poder tener esta tabla en 1FN se hace el siguiente cambio:
Tabla de una base de datos
NIF Ape Nom Dir CPost Pobl Prov
1 García Francisco C/Marín 16 33698 Oviedo Asturias
2 Sanchez Luisa C/Tenerías 34 85458 Cigales Valladolid
2 Sanchez Luisa C/Ramorta 65 54585 Bueu Pontevedra
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas.
Ejemplo: la Relación:
• cursos: nombre, código, vacantes, horario, bibliografía
Después de aplicar la primera Forma Normal quedaría de la siguiente manera:
• cursos1: nombre, código, vacantes
• horario1: código, día, módulo
• bibliografia1: código, nombre, autor
- Segunda Forma Normal (2FN)
Una tabla está en Segunda Forma Normal o 2FN cuando está en 1FN y todo atributo que no pertenece a la clave primaria tiene una dependencia funcional de la clave completa y no de parte de ella. Luego, si la clave principal está formada por un solo atributo y ya está en 1FN, ya estará en 2FN.
Para transformar una tabla con dependencias funcionales, cuya clave está formada por más de un campo, en una tabla en 2FN se necesitan crear tablas nuevas para eliminar las dependencias funcionales, las tablas nuevas tendrán los atributos que dependen funcionalmente de la clave y los que forman la parte de la clave de la que dependen. Una vez creadas las nuevas tablas, se eliminan de la tabla primera los atributos que tenían dependencias funcionales.
En el ejemplo anterior, tanto el nombre como los apellidos dependen del NIF. Se crea una nueva tabla que contiene los atributos: NIF, nombre y apellidos, eliminándose de la tabla cliente los atributos nombre y apellidos, quedando las siguientes tablas:
Tabla en segunda forma normal
NIF Dir CPost Pobl Prov
1 C/ Marín nº16 33698 Oviedo Asturias
2 C/ Tenerías nº34 85458 Cigales Valladolid
2 C/ Ramorta nº65 54585 Bueu Pontevedra
Tabla en segunda forma normal
NIF Ape Nom
1 García Francisco
2 Sanchez Luisa
Establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la clave de la tabla para identificarlos.
Una vez que ha alcanzado el nivel de la Segunda Forma Normal, se han controlado la mayoría de los problemas de lógica. Puede insertar un registro sin un exceso de datos en la mayoría de las tablas.
- Tercera Forma Normal (3FN)
Se dice que hay dependencia funcional transitiva entre dos atributos cuando un atributo que no pertenece a la clave primaria permite conocer el valor de otro atributo.
Por ejemplo: dada la tabla clientes, entre los atributos provincia y prefijo telefónico hay una dependencia funcional transitiva, ya que el primero permite conocer el valor del segundo.
Una tabla está en Tercera Forma Normal o 3FN si está en 2FN y no existen atributos que no pertenezcan a la clave primaria que puedan ser conocidos mediante otro atributo que no forma parte de la clave primaria, es decir, no hay dependencias funcionales transitivas.
Siguiendo con el ejemplo anterior, cuando hay dependencias funcionales transitivas, se crea una nueva tabla con los atributos que tienen dependencia funcional transitiva, eliminándose el atributo dependiente de la tabla original.
Si nos fijamos en esta tabla:
Tabla en segunda forma normal
NIF Dir CPost Pobl Prov
1 C/ Marín nº16 33698 Oviedo Asturias
2 C/ Tenerías nº34 85458 Cigales Valladolid
2 C/ Ramorta nº65 54585 Bueu Pontevedra
La dirección, la población y la provincia dependen del código postal, que no forma parte de la clave primaria. Descomponiendo sin perdida una vez más, obtenemos estas dos tablas:
Tabla en tercera forma normal
NIF Dir
1 C/ Marín nº16
2 C/ Tenerías nº34
2 C/ Ramorta nº65
Tabla en tercera forma normal
CPost Dir Pobl Prov
33698 C/ Marín nº16 Oviedo Asturias
85458 C/ Tenerías nº34 Cigales Valladolid
54585 C/ Ramorta nº65 Bueu Pontevedra
La regla de la Tercera Forma Normal señala que hay que eliminar y separar cualquier dato que no sea clave. El valor de esta columna debe depender de la clave. Todos los valores deben identificarse únicamente por la clave.
- Cuarta Formal Normal (4FN)
Existe dependencia funcional multivalorada o de múltiples valores si, dados tres atributos de una tabla, si para cada valor del primer atributo existen múltiples valores en el segundo atributo y no hay ninguna relación entre el tercer atributo y el primero, a no ser a través del segundo atributo.
Una tabla está en Cuarta Forma Normal o 4FN si está en FNBC y las únicas dependencias funcionales multivaloradas que existen son las dependencias funcionales de la clave con los atributos que no forman parte de la misma. Estas dependencias multievaluadas de la clave con los atributos que no forman parte de la misma son dependencias triviales, por lo que algunos autores dicen que no existen dependencias multievaluadas en 4FN.
Supongamos que los atributos de la tabla transporte son conductor, tipo de vehículo y tipo de carga, formando los tres campos la clave primaria. A cada conductor se le puede asignar un vehículo u otro y cada vehículo puede transportar varios tipos de carga.
Tabla que no esta en cuarta forma normal
Transporte
Conductor Tipo Vehículo Tipo Carga
Juan Furgoneta Perecederos
Marcos Furgoneta Perecederos
Juan Furgoneta Muebles
Marcos Furgoneta Muebles
Juan Camión Mudanza
Marcos Camión Mudanza
Con estas condiciones, los conductores son independientes de la carga; el tipo de vehículos depende del conductor y el tipo de vehículo depende de la carga. En este caso hay dependencias funcionales multivaloradas, ya que algunos atributos que forman la clave dependen de otro atributo que también la forman.
Para conseguir que esta tabla esté en 4FN se necesita crear dos nuevas tablas en lugar de la tabla actual, manteniendose en cada una de ellas una dependencia múltiple. La primera tabla tendrá los atributos conductor y tipo de vehículo y la segunda, tipo de vehículo y tipo de carga. De este modo la tabla en 4FN debido a que la clave primaria de ambas tablas son todos los campos que la forman. Resultado:
Tabla en cuarta forma normal
Tipo Vehículo Tipo Carga
Furgoneta Perecederos
Furgoneta Perecederos
Furgoneta Muebles
Furgoneta Muebles
Camión Mudanza
Camión Mudanza
Tabla en cuarta forma normal
Conductor Tipo Vehículo
Juan Furgoneta
Marcos Furgoneta
Juan Furgoneta
Marcos Furgoneta
Juan Camión
Marcos Camión
Forma Normal de Boyce-Codd o FNBC:
Una tabla está en Forma Normal de Boyce-Codd o FNBC si solo existen dependencias funcionales elementales que dependan de la clave primaria o de cualquier clave alternativa. Si la clave primaria está formada por un solo atributo y está en 3FN, ya está en FNBC.
Un ejemplo típico para mostrar una tabla que, estando en 3FN, mantiene dependencias funcionales, sin relación con el ejemplo seguido hasta este momento, es una tabla que posee los atributos dirección, código postal y población, suponiendo que a poblaciones diferentes le corresponden códigos postales distintos.
Tabla en tercera forma normal
CPost Dir Pobl
30009 C/ Pantano Camarillas nº16 Murcia
48596 Av. Buenos Aires nº12 Madrid
En este caso hay dependencia entre el código postal y la población, ya que, conocido el código postal se puede conocer la población, y conocida la dirección y la población, se conoce el código postal. Para transformar la tabla en una tabla en FNBC se crea una tabla de códigos postales y poblaciones, eliminando de la tabla original la población, obteniéndose dos tablas, una con los atributos dirección y código postal y otra con el código postal y la población:
Tabla en forma normal de Boyce-Codd
CPost Dir
30009 C/ Pantano Camarillas nº16
48596 Av. Buenos Aires nº12
Tabla en forma normal de Boyce-Codd
CPost Pobl
30009 Murcia
48596 Madrid
Quinta Forma Normal o 5FN:
Se dice que hay dependencia de JOIN, de unión o de producto si una tabla tiene dependencia de *unión con varias de sus *proyecciones y se puede obtener la tabla por medio de la unión de dichas proyecciones.
Proyeccion
*Proyección:
Creación de una tabla cuyos elementos forman un subconjunto de una tabla dada. Se incluyen todas las filas y algunas columnas.
Union
*Unión:
Formar, a partir de dos tablas, una nueva con todos los campos de una de ellas y los registros de ambas, excepto los repetidos. Ambas tablas han de tener el mismo grado y las mismas columnas.
Una tabla esta en Quinta Forma Normal (5FN) o Forma Normal de Proyección-Unión si está en 4FN y las únicas dependencias que existen son las dependencias de unión de una tabla con sus proyecciones relacionándose entre las distintas proyecciones mediante la clave primaria o cualquier clave alternativa. La 5FN se emplea cuando en una misma tabla tenemos mucha información redundante, con pocos atributos o cuando una tabla posee una gran cantidad de atributos y se hace por ello inmanejable.
Para conseguir que una tabla 4FN con gran cantidad de atributos esté en 5FN, se parte la tabla original en tantas tablas como se desee, teniendo cada una de ellas en común con las demás los campos que forman la clave primaria en la tabla original.
Ejemplo para el caso de una tabla que posee una gran cantidad de atributos:
Tabla
Id Datos Familiares Datos Profesionales Datos Personales Datos Clínicos
1 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12
En este caso tenemos una empresa donde se guardan los datos personales, familiares, profesionales y clínicos de cada empleado en una única tabla llamada Empleados. Si esta tabla está ya en 4FN, se puede partir en las tablas empleados-personal, empleados-familia, empleados-profesional, empleados-clínicos; de este modo, la velocidad de acceso y la gestión de datos por cada departamento de la empresa se simplifica, al no tenerse que crear ningún tipo de restricción sobre determinados atributos que no han de ser vistos por el personal que no los necesite.
El resultado sería:
Tabla en quinta forma normal
Id Datos Familiares
1 D1 D2 D3
Tabla en quinta forma normal
Id Datos Profesionales
1 D4 D5 D6
Tabla en quinta forma normal
Id Datos Personales
1 D7 D8 D9
Tabla en quinta forma normal
Id Datos Clínicos
1 D10 D11 D12
Ejemplo para el caso de una tabla que posee mucha información redundante, con pocos atributos:
Tabla que no esta en quinta forma normal
Biblioteca
Título Fecha Socio
T1 FT S1
T2 FU S2
T3 FV S1
T4 FG S4
T1 FH S3
T2 FT S4
T3 FV S3
Si se tiene una tabla de préstamo de libros de una biblioteca, con los atributos título, fecha de préstamo y número de socios que ha tomado prestado el libro, existen multitud de registros que se crean diariamente en esa tabla, pero para cada libro o para cada socio habrá pocos registros, con lo que una consulta para esa tabla como: ¿Cuáles son los libros leídos por un determinado socio?, puede tener una velocidad de respuesta elevada. Si esta tabla se parte en las tablas título-fecha, título-socio y socio-fecha, cualquier consulta similar a la anterior tendrá un tiempo de respuesta tolerable, y cuando sea necesario, se podrán realizar consultas que impliquen los datos de las tres tablas.
El resultado sería pues:
Tabla en quinta forma normal
Título-Fecha
Título Fecha
T1 FT
T2 FU
T3 FV
T4 FG
T1 FH
T2 FT
T3 FV
Tabla en quinta forma normal
Título-Socio
Título Socio
T1 S1
T2 S2
T3 S1
T4 S4
T1 S3
T2 S4
T3 S3
Tabla en quinta forma normal
Fecha-Socio
Fecha Socio
FT S1
FU S2
FV S1
FG S4
FH S3
FT S4
FV S3
http://www.scourdesign.com/articulos/BD-FN.php
El modelado entidad-relación es una técnica para el modelado de datos utilizando diagramas entidad relación. Consiste en los siguientes pasos:
1. Se parte de una descripción textual del problema o sistema de información a automatizar (requisitos).
2. Se hace una lista de los sustantivos y verbos que aparecen.
3. Los sustantivos son posibles entidades o atributos.
4. Los verbos son posibles relaciones.
5. Analizando las frases se determina la cardinalidad de las relaciones y otros detalles.
6. Se elabora el diagrama (o diagramas) entidad-relación.
7. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama.
Los diagramas entidad-relación (E-R) son una herramienta para el modelado de datos de un sistema de información. Estos diagramas expresan entidades relevantes para un sistema de información, sus inter-relaciones y propiedades. Es el modelo conceptual más utilizado para el diseño conceptual de bases de datos. El modelo entidad-relación está formado por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de representaciones gráficas y lingüísticas.
Los diagramas E-R son un lenguaje gráfico para describir conceptos. Son dibujos o gráficos que describen la información que trata un sistema de información y el software que lo automatiza.
Entidades
Una entidad es cualquier "objeto" sobre el que se tiene información; cosa, persona, concepto abstracto o suceso. Se representa gráficamente mediante un rectángulo o "caja" etiquetada en su interior mediante un nombre. Ejemplos de entidades en los sistemas de información son: factura, persona, empleado, coches, casas, empleados, clientes, empresas, oficios, diseños de productos, conciertos, excursiones, etc.
Relación
Una relación describe cierta interdependencia (de cualquier tipo) entre una o más entidades. Es una correspondencia o asociación entre dos o más entidades. Se representa mediante un rombo etiquetado en su interior mediante un verbo. Además, dicho rombo debe unirse mediante líneas con las entidades que relaciona.
Ejemplos:
• Una persona (entidad) trabaja (relación) para un departamento (entidad).
• Una factura (entidad) se emite (relación) a un cliente (entidad).
Las relaciones entre dos entidades se denominan binarias, las relaciones entre tres entidades se denominan ternarias, y las relaciones entre cuatro o más entidades se denominan múltiples. Las relaciones múltiples son poco frecuentes, mientras que las relaciones binarias son habituales en cualquier problema.
Atributos
Los atributos representan las propiedades básicas de las entidades y de las relaciones. Toda la información extensiva es portada por los atributos. Los atributos son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección,...)
Gráficamente, se representan mediante bolitas que cuelgan de las entidades o relaciones a las que pertenecen, etiquetado mediante un nombre en su interior.
Los atributos pueden ser simples o compuestos. Un atributo simple es un atributo que tiene un solo componente, que no se puede dividir en partes más pequeñas, que tengan un significado propio. Un atributo compuesto es un atributo con varios componentes, cada uno con un significado por sí mismo. Un grupo de atributos se representa mediante un atributo compuesto cuando tienen afinidad en cuanto a su significado, o en cuanto a su uso. Un atributo compuesto se representa gráficamente mediante un óvalo.
Los atributos describen información útil sobre las entidades. En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Como por ejemplo, el atributo identificativo que distingue a un empleado de otro es su número de la Seguridad Social.
Ejemplos de atributos de la entidad "persona":
• Documento de Identidad (identificativo)
• Nombre
• Apellidos
• Dirección
• Código postal
Las relaciones pueden ser:
- 1 a 1
- 1 a muchos
- Muchos a 1
- Muchos a muchos
• Relaciones 1-1.- Las entidades que intervienen en la relación se asocian una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la relación MATRIMONIO).
• Relaciones 1-n.- Una ocurrencia de una entidad está asociada con muchas (n) de otra (Ej: la entidad EMPRESA, la entidad TRABAJADOR y entre ellos la relación TRABAJAR-EN).
• Relaciones n-n.-Cada ocurrencia, en cualquiera de las dos entidades de la relación, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la entidad ALUMNO, la entidad EMPRESA y entre ellos la relación MATRÍCULA).
NORMALIZACIÓN DE DATOS
La normalización es el proceso que permite distribuir todos los campos de la base de datos en tablas relacionadas entre sí, de forma que cumplan con el funcionamiento esperado de la base de datos. Para evitar la inconsistencia y duplicidad de datos emplearemos la técnica de normalización para organizar los campos de datos en cada tabla. La normalización es un proceso que clasifica relaciones, objetos, formas de relación y demás elementos en grupos, en base a las características que cada uno posee.
Normalización es un conjunto de reglas que sirven para ayudar a los diseñadores a desarrollar un esquema que minimice los problemas de lógica. Cada regla está basada en la que le antecede. La normalización se adoptó porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de lógica cuando se trataba de manipular los datos. La normalización es una técnica que se utiliza para crear relaciones lógicas apropiadas entre tablas de una base de datos.
Ayuda a prevenir errores lógicos en la manipulación de datos. La normalización facilita también agregar nuevas columnas sin romper el esquema actual ni las relaciones.
El proceso de normalización de una base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo E-R (entidad-relación) al modelo relacional.
Las bases de datos relacionales se normalizan para:
• Evitar la redundancia de los datos.
• Evitar problemas de actualización de los datos en las tablas.
• Proteger la integridad de los datos.
Una base de datos normalizada puede ocupar menos espacio en disco que una no normalizada. Hay menos repetición de datos, lo que tiene como consecuencia un mucho menor uso de espacio en disco.
Grados de normalización
Existen varios niveles de normalización, entre las que se encuentran: Primera Forma Normal (1FN), Segunda Forma Normal (2FN), Tercera Forma Normal (3FN), Cuarta Forma Normal (4FN).
- Primera forma normal (1FN)
Una tabla está en 1FN si el valor que contiene un atributo de un registro, un campo, es único y elemental. En cada uno de los atributos sólo se puede incluir un dato, aunque sea compuesto, pero no se pueden incluir una lista de datos. Por ejemplo, no se pueden incluir en el atributo Dirección el domicilio habitual y el de vacaciones; habría que crear dos registros que se diferenciarán por el atributo Dirección:
Tabla de una base de datos
NIF Ape Nom Dir CPost Pobl Prov
1 García Francisco C/Marín 16 33698 Oviedo Asturias
2 Sanchez Luisa C/Tenerías 34
C/Ramorta 65 85458
54585 Cigales
Bueu Valladolid
Pontevedra
Esta tabla no está en 1FN, ya que el cliente con Id 2 tiene dos direcciones. Para poder tener esta tabla en 1FN se hace el siguiente cambio:
Tabla de una base de datos
NIF Ape Nom Dir CPost Pobl Prov
1 García Francisco C/Marín 16 33698 Oviedo Asturias
2 Sanchez Luisa C/Tenerías 34 85458 Cigales Valladolid
2 Sanchez Luisa C/Ramorta 65 54585 Bueu Pontevedra
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas.
Ejemplo: la Relación:
• cursos: nombre, código, vacantes, horario, bibliografía
Después de aplicar la primera Forma Normal quedaría de la siguiente manera:
• cursos1: nombre, código, vacantes
• horario1: código, día, módulo
• bibliografia1: código, nombre, autor
- Segunda Forma Normal (2FN)
Una tabla está en Segunda Forma Normal o 2FN cuando está en 1FN y todo atributo que no pertenece a la clave primaria tiene una dependencia funcional de la clave completa y no de parte de ella. Luego, si la clave principal está formada por un solo atributo y ya está en 1FN, ya estará en 2FN.
Para transformar una tabla con dependencias funcionales, cuya clave está formada por más de un campo, en una tabla en 2FN se necesitan crear tablas nuevas para eliminar las dependencias funcionales, las tablas nuevas tendrán los atributos que dependen funcionalmente de la clave y los que forman la parte de la clave de la que dependen. Una vez creadas las nuevas tablas, se eliminan de la tabla primera los atributos que tenían dependencias funcionales.
En el ejemplo anterior, tanto el nombre como los apellidos dependen del NIF. Se crea una nueva tabla que contiene los atributos: NIF, nombre y apellidos, eliminándose de la tabla cliente los atributos nombre y apellidos, quedando las siguientes tablas:
Tabla en segunda forma normal
NIF Dir CPost Pobl Prov
1 C/ Marín nº16 33698 Oviedo Asturias
2 C/ Tenerías nº34 85458 Cigales Valladolid
2 C/ Ramorta nº65 54585 Bueu Pontevedra
Tabla en segunda forma normal
NIF Ape Nom
1 García Francisco
2 Sanchez Luisa
Establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la clave de la tabla para identificarlos.
Una vez que ha alcanzado el nivel de la Segunda Forma Normal, se han controlado la mayoría de los problemas de lógica. Puede insertar un registro sin un exceso de datos en la mayoría de las tablas.
- Tercera Forma Normal (3FN)
Se dice que hay dependencia funcional transitiva entre dos atributos cuando un atributo que no pertenece a la clave primaria permite conocer el valor de otro atributo.
Por ejemplo: dada la tabla clientes, entre los atributos provincia y prefijo telefónico hay una dependencia funcional transitiva, ya que el primero permite conocer el valor del segundo.
Una tabla está en Tercera Forma Normal o 3FN si está en 2FN y no existen atributos que no pertenezcan a la clave primaria que puedan ser conocidos mediante otro atributo que no forma parte de la clave primaria, es decir, no hay dependencias funcionales transitivas.
Siguiendo con el ejemplo anterior, cuando hay dependencias funcionales transitivas, se crea una nueva tabla con los atributos que tienen dependencia funcional transitiva, eliminándose el atributo dependiente de la tabla original.
Si nos fijamos en esta tabla:
Tabla en segunda forma normal
NIF Dir CPost Pobl Prov
1 C/ Marín nº16 33698 Oviedo Asturias
2 C/ Tenerías nº34 85458 Cigales Valladolid
2 C/ Ramorta nº65 54585 Bueu Pontevedra
La dirección, la población y la provincia dependen del código postal, que no forma parte de la clave primaria. Descomponiendo sin perdida una vez más, obtenemos estas dos tablas:
Tabla en tercera forma normal
NIF Dir
1 C/ Marín nº16
2 C/ Tenerías nº34
2 C/ Ramorta nº65
Tabla en tercera forma normal
CPost Dir Pobl Prov
33698 C/ Marín nº16 Oviedo Asturias
85458 C/ Tenerías nº34 Cigales Valladolid
54585 C/ Ramorta nº65 Bueu Pontevedra
La regla de la Tercera Forma Normal señala que hay que eliminar y separar cualquier dato que no sea clave. El valor de esta columna debe depender de la clave. Todos los valores deben identificarse únicamente por la clave.
- Cuarta Formal Normal (4FN)
Existe dependencia funcional multivalorada o de múltiples valores si, dados tres atributos de una tabla, si para cada valor del primer atributo existen múltiples valores en el segundo atributo y no hay ninguna relación entre el tercer atributo y el primero, a no ser a través del segundo atributo.
Una tabla está en Cuarta Forma Normal o 4FN si está en FNBC y las únicas dependencias funcionales multivaloradas que existen son las dependencias funcionales de la clave con los atributos que no forman parte de la misma. Estas dependencias multievaluadas de la clave con los atributos que no forman parte de la misma son dependencias triviales, por lo que algunos autores dicen que no existen dependencias multievaluadas en 4FN.
Supongamos que los atributos de la tabla transporte son conductor, tipo de vehículo y tipo de carga, formando los tres campos la clave primaria. A cada conductor se le puede asignar un vehículo u otro y cada vehículo puede transportar varios tipos de carga.
Tabla que no esta en cuarta forma normal
Transporte
Conductor Tipo Vehículo Tipo Carga
Juan Furgoneta Perecederos
Marcos Furgoneta Perecederos
Juan Furgoneta Muebles
Marcos Furgoneta Muebles
Juan Camión Mudanza
Marcos Camión Mudanza
Con estas condiciones, los conductores son independientes de la carga; el tipo de vehículos depende del conductor y el tipo de vehículo depende de la carga. En este caso hay dependencias funcionales multivaloradas, ya que algunos atributos que forman la clave dependen de otro atributo que también la forman.
Para conseguir que esta tabla esté en 4FN se necesita crear dos nuevas tablas en lugar de la tabla actual, manteniendose en cada una de ellas una dependencia múltiple. La primera tabla tendrá los atributos conductor y tipo de vehículo y la segunda, tipo de vehículo y tipo de carga. De este modo la tabla en 4FN debido a que la clave primaria de ambas tablas son todos los campos que la forman. Resultado:
Tabla en cuarta forma normal
Tipo Vehículo Tipo Carga
Furgoneta Perecederos
Furgoneta Perecederos
Furgoneta Muebles
Furgoneta Muebles
Camión Mudanza
Camión Mudanza
Tabla en cuarta forma normal
Conductor Tipo Vehículo
Juan Furgoneta
Marcos Furgoneta
Juan Furgoneta
Marcos Furgoneta
Juan Camión
Marcos Camión
Forma Normal de Boyce-Codd o FNBC:
Una tabla está en Forma Normal de Boyce-Codd o FNBC si solo existen dependencias funcionales elementales que dependan de la clave primaria o de cualquier clave alternativa. Si la clave primaria está formada por un solo atributo y está en 3FN, ya está en FNBC.
Un ejemplo típico para mostrar una tabla que, estando en 3FN, mantiene dependencias funcionales, sin relación con el ejemplo seguido hasta este momento, es una tabla que posee los atributos dirección, código postal y población, suponiendo que a poblaciones diferentes le corresponden códigos postales distintos.
Tabla en tercera forma normal
CPost Dir Pobl
30009 C/ Pantano Camarillas nº16 Murcia
48596 Av. Buenos Aires nº12 Madrid
En este caso hay dependencia entre el código postal y la población, ya que, conocido el código postal se puede conocer la población, y conocida la dirección y la población, se conoce el código postal. Para transformar la tabla en una tabla en FNBC se crea una tabla de códigos postales y poblaciones, eliminando de la tabla original la población, obteniéndose dos tablas, una con los atributos dirección y código postal y otra con el código postal y la población:
Tabla en forma normal de Boyce-Codd
CPost Dir
30009 C/ Pantano Camarillas nº16
48596 Av. Buenos Aires nº12
Tabla en forma normal de Boyce-Codd
CPost Pobl
30009 Murcia
48596 Madrid
Quinta Forma Normal o 5FN:
Se dice que hay dependencia de JOIN, de unión o de producto si una tabla tiene dependencia de *unión con varias de sus *proyecciones y se puede obtener la tabla por medio de la unión de dichas proyecciones.
Proyeccion
*Proyección:
Creación de una tabla cuyos elementos forman un subconjunto de una tabla dada. Se incluyen todas las filas y algunas columnas.
Union
*Unión:
Formar, a partir de dos tablas, una nueva con todos los campos de una de ellas y los registros de ambas, excepto los repetidos. Ambas tablas han de tener el mismo grado y las mismas columnas.
Una tabla esta en Quinta Forma Normal (5FN) o Forma Normal de Proyección-Unión si está en 4FN y las únicas dependencias que existen son las dependencias de unión de una tabla con sus proyecciones relacionándose entre las distintas proyecciones mediante la clave primaria o cualquier clave alternativa. La 5FN se emplea cuando en una misma tabla tenemos mucha información redundante, con pocos atributos o cuando una tabla posee una gran cantidad de atributos y se hace por ello inmanejable.
Para conseguir que una tabla 4FN con gran cantidad de atributos esté en 5FN, se parte la tabla original en tantas tablas como se desee, teniendo cada una de ellas en común con las demás los campos que forman la clave primaria en la tabla original.
Ejemplo para el caso de una tabla que posee una gran cantidad de atributos:
Tabla
Id Datos Familiares Datos Profesionales Datos Personales Datos Clínicos
1 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12
En este caso tenemos una empresa donde se guardan los datos personales, familiares, profesionales y clínicos de cada empleado en una única tabla llamada Empleados. Si esta tabla está ya en 4FN, se puede partir en las tablas empleados-personal, empleados-familia, empleados-profesional, empleados-clínicos; de este modo, la velocidad de acceso y la gestión de datos por cada departamento de la empresa se simplifica, al no tenerse que crear ningún tipo de restricción sobre determinados atributos que no han de ser vistos por el personal que no los necesite.
El resultado sería:
Tabla en quinta forma normal
Id Datos Familiares
1 D1 D2 D3
Tabla en quinta forma normal
Id Datos Profesionales
1 D4 D5 D6
Tabla en quinta forma normal
Id Datos Personales
1 D7 D8 D9
Tabla en quinta forma normal
Id Datos Clínicos
1 D10 D11 D12
Ejemplo para el caso de una tabla que posee mucha información redundante, con pocos atributos:
Tabla que no esta en quinta forma normal
Biblioteca
Título Fecha Socio
T1 FT S1
T2 FU S2
T3 FV S1
T4 FG S4
T1 FH S3
T2 FT S4
T3 FV S3
Si se tiene una tabla de préstamo de libros de una biblioteca, con los atributos título, fecha de préstamo y número de socios que ha tomado prestado el libro, existen multitud de registros que se crean diariamente en esa tabla, pero para cada libro o para cada socio habrá pocos registros, con lo que una consulta para esa tabla como: ¿Cuáles son los libros leídos por un determinado socio?, puede tener una velocidad de respuesta elevada. Si esta tabla se parte en las tablas título-fecha, título-socio y socio-fecha, cualquier consulta similar a la anterior tendrá un tiempo de respuesta tolerable, y cuando sea necesario, se podrán realizar consultas que impliquen los datos de las tres tablas.
El resultado sería pues:
Tabla en quinta forma normal
Título-Fecha
Título Fecha
T1 FT
T2 FU
T3 FV
T4 FG
T1 FH
T2 FT
T3 FV
Tabla en quinta forma normal
Título-Socio
Título Socio
T1 S1
T2 S2
T3 S1
T4 S4
T1 S3
T2 S4
T3 S3
Tabla en quinta forma normal
Fecha-Socio
Fecha Socio
FT S1
FU S2
FV S1
FG S4
FH S3
FT S4
FV S3
http://www.scourdesign.com/articulos/BD-FN.php
Suscribirse a:
Entradas (Atom)