sql >> Base de Datos >  >> RDS >> Mysql

¿Existen prácticas/directrices para la creación de tablas no normalizadas durante el proceso de normalización?

TL;RD Debe seguir un algoritmo publicado para descomponerse en una forma normal dada.

PD No obtuviste Artista del CD original a través de la normalización, ya que introdujiste una nueva columna. Pero supongamos que el artista de la mesa tiene el significado obvio. ¿Por qué crees que "nuevamente no está en la tercera forma normal hasta donde yo lo entiendo"? Si artista -> año en el CD original, también lo hace en Artista. Pero entonces {artist} es, con {artist_id}, una CK (clave de candidato) de Artist, y Artist está en 3FN (y 5NF).

De la versión original de su pregunta más la actual, tiene un CD de tabla base propuesto con columnas cd_id, título, grupo y año, que contiene tuplas donde cd cd_id titulado título fue hecho por el grupo grupo que se formó en el año año . La columna cd_id es única, por lo tanto, es un CK. FD {grupo} -> año también se mantiene.

La normalización no introduce nuevos nombres de columna. Reemplaza una tabla base propuesta por otras, cada una con un subconjunto más pequeño de sus columnas, que siempre se unen a lo que hubiera sido su valor. La normalización hasta BCNF se basa en FD (dependencias funcionales), que también son las que determinan los CK de una tabla base. Entonces su pregunta no contiene una descomposición. Una posible descomposición que recuerda a su pregunta, que podría o no tener propiedades particulares, sería tablas con conjuntos de columnas {cd_id, título, grupo} y {grupo, año}.

Otros FD se mantienen en el original. Algunos se sostienen por lo que son las columnas; algunos aguantan debido a la CK; algunos se mantienen porque {grupo} -> año se mantiene; en general, algunos se mantienen porque los tres lo hacen. Y tal vez otros se mantengan debido a las tuplas que se supone que van en la relación y las situaciones que pueden surgir. Tienes que decidir por cada posible FD si se mantiene.

Por supuesto, es posible que te hayan dicho que los únicos que aguantan son los que tienen que aguantar en esas circunstancias. Pero no lo harás me han dicho que el único FD que tiene es {grupo} -> año, porque hay son FDs triviales y cada superconjunto de un CK determina funcionalmente cada conjunto de columnas .

Una definición de 3NF es que una relación está en 2NF y ninguna columna no prima depende funcionalmente de manera transitiva de ningún CK. (Observe que cada condición involucra otras definiciones). Si desea usar esto para averiguar si su relación está en 3FN, entonces necesita averiguar qué todos los CK son. Puede hacer esto más rápido a través de un algoritmo apropiado, pero solo puede ver qué conjuntos de columnas determinan funcionalmente cada columna pero no contienen un conjunto más pequeño, ya que esos son los CK. Luego verifique las dos condiciones en la definición.

Si desea normalizar a 3NF, debe seguir un algoritmo para descomponer a 3NF. No explicas qué proceso crees que debes seguir. Pero si no está siguiendo un algoritmo probado, cualquier componente que elija puede o no unirse siempre al original y puede o no estar en una forma normal más alta en particular. Tenga en cuenta que ejemplos de descomposiciones que has visto no son presentaciones de algoritmos de descomposición .

Las definiciones de NF (forma normal) dan condiciones que una relación debe cumplir para estar en esa NF. No le dicen cómo descomponer sin pérdidas (preservando los FD cuando sea posible) a relaciones en NF más altos. La gente ha elaborado algoritmos para producir descomposiciones en NF particulares. (Y la descomposición en un NF dado no implica, en general, una primera descomposición en NF más bajos. Pasar por NF más bajos puede evitar que se generen buenas descomposiciones de NF más altas del original cuando se llega a la descomposición por un NF más alto).

Es posible que tampoco se dé cuenta de que cuando algunos FD se mantienen, otros deben mantenerse. El último se puede determinar a través de los axiomas de Armstrong del primero. Entonces, solo porque se descompuso para deshacerse de un FD en particular cuya presencia viola un NF en particular, no significa que no haya un montón de otros que lo violaron con los que no se ocupó. Pueden estar presentes en los nuevos componentes. O pueden no estar presentes de manera problemática, por lo que no los ha "conservado" cuando podría haberlo hecho, lo que lleva a diseños deficientes.

Aprenda sobre algoritmos NF específicos y, en realidad, sobre NF y la normalización en sí misma, en un libro de texto/curso/presentación de colegio/universidad. Muchos están en línea.