database - ¿No mínimo de tablas que existen después de descomponer la relación R en 1NF?
database-design relational-database (1)
Considere la relación R (A, B, C, D, E, F, G) con los siguientes tipos de atributos: -
No total de claves = 1 = {A}
Conjunto de atributos simples (o) atómicos (o) de valor único = {B, C}
Conjunto de atributos multivalor = {D, E}
Conjunto de atributos compuestos = {F, G}
¿Cuál sería el número mínimo de tablas que existe después de descomponer la relación R en 1NF?
(A) 3 (B) 2 (C) 4 (D) 5
Mi intento:
Necesitábamos una tabla diferente para cada atributo multivalor con la clave dada (A), total = 2
Del mismo modo, necesitábamos una tabla diferente para cada atributo compuesto, total = 2.
Hay un total de 4 de tales atributos. Doy 4 tablas con clave dada (A) en cada (4) tablas. Se me permite insertar atributos atómicos (B, C) en cualquiera de las 4 tablas dadas. Entonces, concluí que 4 tablas son suficientes para representar la relación en la primera forma normal.
¿Puedes explicar de manera formal, por favor?
Para cada atributo que considere "compuesto" (que tiene partes heterogéneas, como una tupla):
Para cada componente de atributo compuesto que pueda faltar: Agregue una relación con los atributos de alguna clave candidata y un atributo para ese componente. Para cada fila de la relación original que tenga ese componente, tenga una fila en la nueva relación cuyo nuevo valor de atributo sea el valor del componente y cuyos valores de atributo clave candidatos sean los de la fila original. Luego suelte el componente. Esto agrega una relación por componente que puede faltar.
Para cada componente restante: Agregue un atributo a la relación original cuyo valor en cada fila es el valor del componente. Luego suelte el atributo compuesto. Esto no agrega relaciones.
Para un atributo que considera "multivalor" (que tiene partes homogéneas, como una relación):
Para un atributo de un tipo que puede tener cero elementos: Agregue una relación con los atributos de alguna clave candidata y ese atributo. Para cada fila de la relación original, tenga un conjunto de filas en la nueva relación cuyos nuevos valores de atributo sean los elementos del atributo multivalor y cuyos valores de atributo clave candidatos sean los de la fila original. Luego suelte el atributo multivalor. Esto agrega una relación por atributo multivalor.
Para un atributo de un tipo que siempre tiene elementos: Reemplace cada fila de la relación original por un conjunto de filas cuyos valores de atributo multivalor son los elementos del atributo multivalor y cuyos otros valores de atributo son las filas originales. Esto no agrega relaciones.
Entonces, las relaciones finales aquí son {A, B, C, F1, ..., G1, ...}, {A, D} y {A, E}, un total de 1 (para originales y compuestos) + 2 ( para multivalor).
(Si todas las claves candidatas de una relación contienen atributos multivalor, entonces debe introducir un atributo sustituto para al menos un atributo multivalor).
Por supuesto, en la práctica debe normalizar las nuevas tablas, que pueden generar nuevas tablas. Pero eso es mejorar el diseño. Aquí queremos un diseño con la menor cantidad posible de tablas agregadas.
(No existe tal cosa como "descomponer" una relación en 1NF. El sentido original de "normalizar" significaba deshacerse de los atributos valorados por la relación. La teoría de normalización posterior considera que cada relación está en 1NF. Ver this 1NF y atomicidad. Podemos reemplazar una relación con atributos que consideramos que tienen partes homogéneas (multivalor) o partes heterogéneas (compuestas) por una o más relaciones que tienen atributos para las partes. Y podemos convertir un diseño no relacional en uno relacional. -el diseño relacional no tendrá una clave candidata / primaria, porque se define solo para las relaciones).