Anomalías y formas normales
Álvaro González Sotillo
Created: 2024-09-08 dom 17:51
1. Introducción
- El diseño de base de datos es necesario para evitar anomalías
- De inserción
- De modificación
- De borrado
- Las anomalías hacen el uso de una base de datos
- Engorroso
- Lento
- Propenso a errores
- A medio plazo, las anomalías hacen fracasar una base de datos
2.1. Cambios de la BD (diseño E-R)
- Desde el punto de vista del diseño E-R, un cambio en la base de datos es:
- Modificación de atributos de una instancia de entidad
- Modificación de atributos de una instancia de interrelación
- Creación/borrado de una nueva instancia de entidad
- Creación/borrado de una nueva instancia de interrelación
2.2. Cambios de la BD (relaciones)
- Desde el punto de vista del diseño relacional, un cambio en la base de datos es:
- Modificación de atributos de una fila
- Creación de una fila
- Borrado de una fila
2.3. Anomalía
- Decimos que hay una anomalía cuando un cambio en el mundo real implica más de un cambio en la base de datos relacional
- Anomalía de inserción
- Anomalía de borrado
- Anomalía de modificación
Nota: el concepto de cambio en el mundo real no es una definición precisa
2.3.1. Anomalía de inserción/borrado
Idempleado |
NombreP |
Puesto |
Salario |
Centro |
DirecciónC |
Teléfono |
123A |
Ana Almansa |
Profesor |
20.000 |
Informática |
Complutense |
123 |
456B |
Bernardo Botín |
Administrativo |
15.000 |
Matemáticas |
Complutense |
456 |
789C |
Carlos Crespo |
Catedrático |
30.000 |
CC . Empresariales |
Somosaguas |
789 |
012D |
David Díaz |
Ayudante |
10.000 |
Informática |
Complutense |
123 |
- ¿Cómo inserto un empleado que aún no tiene centro de trabajo?
- ¿Cómo inserto un centro de trabajo que aún no tiene empleados?
2.3.2. Anomalía de modificación
Idempleado |
NombreP |
Puesto |
Salario |
Centro |
DirecciónC |
Teléfono |
123A |
Ana Almansa |
Profesor |
20.000 |
Informática |
Complutense |
123 |
456B |
Bernardo Botín |
Administrativo |
15.000 |
Matemáticas |
Complutense |
456 |
789C |
Carlos Crespo |
Catedrático |
30.000 |
CC . Empresariales |
Somosaguas |
789 |
012D |
David Díaz |
Ayudante |
10.000 |
Informática |
Complutense |
123 |
- ¿Cómo muevo la facultad de informática a Somosaguas?
2.3.3. Origen de las anomalías
- Redundancia de las interrelaciones
- Mala elección de la clave
- Mala elección de la cardinalidad de las interrelaciones
3. Dependencias funcionales
- Decimos que un campo B depende funcionalmente de otro A si, al conocer el valor de A, conocemos el valor de B.
- Las dependencias pueden ser
- Solo de un campo a otro campo:
A
→ B
- De varios campos a un campo:
(A,B)
→ C
- Las dependencias se extraen del significado de los datos
- Sólo el cliente/usuario final conoce dicho significado
- El diseñador de bases de datos debe extraer dicho conocimiento y formalizarlo
3.1. Ejemplo
- Se desea una base de datos que guarde los atributos
(DNI, Nombre, CódigoTienda, DirecciónTienda, Fecha, Turno)
- Los empleados tienen un turno, y cada día pueden trabajar en una tienda.
- No hay dos tiendas en la misma dirección
- Dependencias:
- DNI → Nombre
- DNI → Turno
- CódigoTienda → DirecciónTienda
- DirecciónTienda → CódigoTienda
- (DNI, Fecha) → CódigoTienda
- Hay más dependencias, pero pueden deducirse de las anteriores
- Por ejemplo (DNI, Fecha, Turno) → DirecciónTienda
3.2. Ejercicio
- Se desea una base de datos que guarde los atributos
(DNI, Nombre, CódigoTienda, DirecciónTienda, Fecha, Turno)
- Los empleados no tienen un turno fijo, y cada día pueden trabajar en una tienda en un turno
- En una misma dirección puede haber varias tiendas
4. Normalización
- Procedimiento para eliminar anomalías en la base de datos
- Es formal: a partir de las dependencias funcionales es un procedimiento automático
4.1. Clave de una relación
- La clave de una relación es el conjunto mínimo de campos que es imposible que se repitan en la relación
- Coinciden con los campos de los que depende funcionalmente el resto de campos
- Sirven para localizar cada fila de la relación
- Si hay varias claves posibles
- Todas ellas son claves candidatas
- Se elige una como clave primaria
4.2. Primera forma normal (1FN)
- Una relación está en 1FN si no tiene atributos multivaluados
4.2.1. Ejemplo 1FN
IDCliente |
Nombre |
Apellido |
Teléfono |
123 |
Rachel |
Ingram |
555-861-2025 |
456 |
James |
Wright |
555-403-1659, 555-776-4100 |
789 |
Cesar |
Dure |
555-808-9633 |
- La clave es
IDCLIENTE
- La relación se parte en dos:
- Una con todos los atributos que respetan 1FN
- Otra con la clave
IDCLIENTE
y el atributo que no respeta 1FN
IDCliente |
Nombre |
Apellido |
123 |
Rachel |
Ingram |
456 |
James |
Wright |
789 |
Cesar |
Dure |
IDCliente |
Teléfono |
123 |
555-861-2025 |
456 |
555-403-1659 |
456 |
555-776-4100 |
789 |
555-808-9633 |
4.3. Segunda forma normal (2FN)
- Una relación está en 2FN si
- Está en 1FN
- Todos los atributos que no son parte de una clave candidata dependen de la totalidad de las claves candidatas
- Como consecuencia, si está en 1FN y la clave candidata es de un atributo, está en 2FN
4.3.1. Ejemplo 2FN
Empleado |
Habilidad |
Lugardetrabajo |
Jones |
Mecanografía |
114 Main Street |
Jones |
Taquigrafía |
114 Main Street |
Jones |
Tallado |
114 Main Street |
Bravo |
Limpieza ligera |
73 Industrial Way |
Ellis |
Alquimia |
73 Industrial Way |
Ellis |
Malabarismo |
73 Industrial Way |
Harrison |
Limpieza ligera |
73 Industrial Way |
- La clave es
(Empleado,Habilidad)
Lugardetrabajo
depende de Empleado
- Hay anomalías de modificación
- Hay redundancias de datos
- Para conseguir 2FN se parte la relación en dos
- Se deja la clave y todos los atributos que dependen totalmente de ella
- Se crea una relación con el atributo que depende de una parte de la clave, con esa parte de la clave
Empleado |
Lugaractualdetrabajo |
Jones |
114 Main Street |
Bravo |
73 Industrial Way |
Ellis |
73 Industrial Way |
Harrison |
73 Industrial Way |
Empleado |
Habilidad |
Jones |
Mecanografía |
Jones |
Taquigrafía |
Jones |
Tallado |
Bravo |
Limpieza ligera |
Ellis |
Alquimia |
Ellis |
Malabarismo |
Harrison |
Limpieza ligera |
4.4. Tercera forma normal (3FN)
- Una relación está en 3FN si
- Está en 2FN
- No hay dependencias transitivas de la clave
4.4.1. Ejemplo 3FN
Torneo |
Año |
Ganador |
Fechadenacimientodelganador |
Indiana Invitational |
1998 |
Al Fredrickson |
21 de julio de 1975 |
Cleveland Open |
1999 |
Bob Albertson |
28 de septiembre de 1968 |
Des Moines Masters |
1999 |
Al Fredrickson |
21 de julio de 1975 |
Indiana Invitational |
1999 |
Chip Masterson |
14 de marzo de 1977 |
- La clave es
(Torneo,Año)
Fecha de nacimiento
depende de Ganador
, que depende de la clave
- Hay anomalías de modificación
- Para conseguir 3FN se parte la relación en 2
- Se deja la clave y los atributos sin dependencia transitiva
- Se crea una relación que tiene como clave y campos la dependencia transitiva
Torneo |
Año |
Ganador |
Indiana Invitational |
1998 |
Al Fredrickson |
Cleveland Open |
1999 |
Bob Albertson |
Des Moines Masters |
1999 |
Al Fredrickson |
Indiana Invitational |
1999 |
Chip Masterson |
Ganador |
Fechadenacimiento |
Chip Masterson |
14 de marzo de 1977 |
Al Fredrickson |
21 de julio de 1975 |
Bob Albertson |
28 de septiembre de 1968 |
5. Referencias
- Formatos:
- Creado con:
- Alojado en Github