Las personas que lean la Introducción de C.J.Date al Sistema de base de datos o libros de nivel similar no deberían tener problemas con la definición de normalización y desnormalización.(De) Normalización de dos relaciones
Sin embargo, la memoria no es lo que solía ser y a menudo miro un diseño y digo que no está normalizado aunque no puedo encontrar cuál de las formas normales está rompiendo.
El ejemplo real que ilustran es:
Si tenemos relaciones
r1 (A, B, C)
y r2 (A, D)
con FD: AB-> C y A-> D
y representan r1
datos detallados, mientras que r2
es un resumen de esos datos (en otras palabras, cada instancia de D es una función de valores en r1. en este ejemplo, que sea subtotal de valores C acc cediendo a A desde r1).
ejemplo Ejemplo
r1 =
A B C
1 1 10
1 2 20
2 1 10
2 2 25
r2 =
A D
1 30
2 35
Así que, aunque no puedo decir que se rompe por ejemplo 2NF o 3NF, que parecen estar atrapados en la idea de que el diseño sigue desnormalizaremos en el siguiente sentido (de . Codd, EF "normalización adicional de la Relational Model Base de datos", p 34, al comentar sobre las razones para normalizar más allá 1NF):
- para liberar a la colección de las relaciones de inserción indeseable, actualización y eliminación de dependencias;
- Para reducir la necesidad de reestructuración de la colección de relaciones como nuevos tipos de datos son introducidos , y por lo tanto aumentar la vida lapso de programas de aplicación;
- Para que el modelo relacional sea más informativo para los usuarios;
- Para realizar la recopilación de relaciones neutrales a la consulta estadísticas, donde estas estadísticas son susceptibles de cambiar con el paso del tiempo.
que puedo decir, que si definimos D como la suma de todos los Cs de r1 donde A partir de r1 es igual a A partir de entonces r2, si actualizamos C en r1 y no actualizamos D en r2, podemos terminar con una dependencia de actualización indeseable y los datos terminan en un estado inconsistente. Encuentro esta razón para llamar a r1 y r2 desnormalizados y pensar que están desnormalizados. (De hecho r2 conjunto es una función de R1 y llevar a cero nuevos hechos en el modelo; r2 = f (r1))
Así que las preguntas son
- podemos llamar R1 y R2 desnormalizar?
- si es así, ¿por qué? si no, ¿por qué? (según qué regla? o según qué definición?)
NOTA:
Para aquellos que encuentran la pregunta (s) lo suficientemente interesante como para poner en una respuesta, le ruego para proporcionar ya sea algo citable o, para decirlo en una forma de hipótesis y conclusiones específicas (o en otras palabras, si va a poner su opinión, sígala con algún razonamiento).
EDIT Acepté dportas answer. Voy a tratar de añadir un poco de aquí: C.J.Date puede hace una distinción clara y estricta:
Gran parte de la teoría de diseño tiene que ver con la reducción de la redundancia ; la normalización reduce la redundancia dentro de relvars, la ortogonalidad la reduce a través de relvars.
citado de Database in depth: relational theory for practitioners
y en la siguiente página
simplemente como un fracaso para normalizar todo el camino implica redundancia y puede conducir a ciertas anomalías, por lo que también podemos un fracaso para adherirse a la ortogonalidad.
Esto suena coherente +1 y Estoy considerando aceptarlo. Sin embargo, no estoy convencido de que la definición anterior sea suficiente y necesaria. Por ejemplo, bajo la definición anterior de desnormalización, la relación r (A, B, C) con FD: A-> B, A-> C se desnormaliza (si tuviéramos relaciones r1 (A, B) y r2 (A, C) yr es una combinación de r1 y r2), pero no veo qué forma normal rompen (lo que me lleva a la pregunta inicial). – Unreason
@Unreason: "... No veo qué forma normal rompen". r (A, B, C) con FD: A-> B, A-> C violaría 6 NF. – sqlvogel
Ok, acepto la cita y la definición. También actualicé un poco mi memoria y, de hecho, la normalización siempre habla de relvar único, por lo que bajo estricta definición no puedo hablar de normalización entre dos relvars. (No estoy completamente convencido de la cuestión del operador escalar vs. operador relacional, pero ya no lo veo relevante para esta pregunta) – Unreason