Requisito previo: Primera forma normal , Segunda forma normal , Tercera forma normal
La aplicación de las definiciones generales de 2NF y 3NF puede identificar redundancia adicional causada por dependencias que violan una o más claves candidatas. Sin embargo, a pesar de estas restricciones adicionales, aún pueden existir dependencias que causarán la presencia de redundancia en las relaciones 3NF. Esta debilidad en 3NF resultó en la presentación de una forma normal más fuerte llamada el Forma normal de Boyce-Codd (Codd, 1974) .
Aunque 3NF es una forma normal adecuada para bases de datos relacionales, aún así, esta forma normal (3NF) puede no eliminar el 100% de la redundancia debido a la dependencia funcional X−>Y si X no es una clave candidata de la relación dada. Esto se puede resolver mediante la forma normal de Boyce-Codd (BCNF).
Forma normal de Boyce-Codd (BCNF)
La forma normal de Boyce-Codd (BCNF) se basa en dependencias funcionales que tienen en cuenta todas las claves candidatas en una relación; sin embargo, BCNF también tiene restricciones adicionales en comparación con la definición general de 3NF.
Reglas para BCNF
Regla 1: La tabla debe estar en la tercera forma normal.
Regla 2: X debe ser una superclave para cada dependencia funcional (FD) X−>Y en una relación determinada.
Nota: Para probar si una relación está en BCNF, identificamos todos los determinantes y nos aseguramos de que sean claves candidatas.
BCNF en DBMS
Te encontraste con una jerarquía similar conocida como Forma normal de Chomsky en Teoría de la Computación. Ahora, estudie cuidadosamente la jerarquía anterior. Se puede inferir que cada relación en BCNF también está en 3NF . Para decirlo de otra manera, una relación en 3NF no tiene por qué estar en BCNF. Reflexione sobre esta afirmación por un momento.
Para determinar la forma normal más alta de una relación dada R con dependencias funcionales, el primer paso es verificar si se cumple la condición BCNF. Si se encuentra que R está en BCNF, se puede deducir con seguridad que la relación también está en 3NF , 2FN, y 1FN como muestra la jerarquía. El 1NF tiene la restricción menos restrictiva: solo requiere que una relación R tenga valores atómicos en cada tupla. El 2NF tiene una restricción ligeramente más restrictiva.
La 3NF tiene una restricción más restrictiva que las dos primeras formas normales pero es menos restrictiva que la BCNF. De esta manera, la restricción aumenta a medida que descendemos en la jerarquía.
Ejemplos
Aquí, analizaremos algunos ejemplos básicos que le permitirán comprender las propiedades de BCNF. Discutiremos varios ejemplos aquí.
Ejemplo 1
Consideremos la base de datos de estudiantes, en la que se mencionan los datos del estudiante.
Este_ID | Esta_rama | curso_stu_ | Número de sucursal | Stu_Curso_No |
---|---|---|---|---|
101 | Ingeniería en ciencias de la computación | SGBD | B_001 | 201 |
101 | Ingeniería en ciencias de la computación | Red de computadoras | B_001 | 202 |
102 | Ingeniería Electrónica y Comunicaciones | Tecnología VLSI | B_003 | 401 |
102 | Ingeniería Electrónica y Comunicaciones | Comunicación móvil | B_003 | 402 |
La dependencia funcional de lo anterior es la mencionada:
Stu_ID −>Stu_Branch Stu_Course −> {Número_de_sucursal, Stu_Course_No}>
Las claves candidatas de la tabla anterior son: {Este_ID, Este_Curso}
¿Por qué esta tabla no está en BCNF?
La tabla presente arriba no está en BCNF, porque como podemos ver, ni Stu_ID ni Stu_Course son una superclave. Como las reglas mencionadas anteriormente dicen claramente que para que una tabla esté en BCNF, debe seguir la propiedad de que para la dependencia funcional X−>Y, X debe estar en Super Key y aquí esta propiedad falla, es por eso que esta tabla no está en BCNF .
¿Cómo satisfacer BCNF?
Para satisfacer esta tabla en BCNF, tenemos que descomponerla en tablas adicionales. Aquí está el procedimiento completo mediante el cual transformamos esta tabla en BCNF. Primero dividamos esta tabla principal en dos tablas. Esta_rama y Stu_Curso Mesa.
Tabla Stu_Branch
Este_ID | Esta_rama |
---|---|
101 | Ingeniería en ciencias de la computación |
102 | Ingeniería Electrónica y Comunicaciones |
Clave candidata para esta tabla: Este_ID .
variables de tipo java
Tabla Stu_Course
Stu_Curso | Número de sucursal | Stu_Curso_No |
---|---|---|
SGBD | B_001 | 201 |
Red de computadoras | B_001 | 202 |
Tecnología VLSI | B_003 | 401 |
Comunicación móvil | B_003 | 402 |
Clave candidata para esta tabla: Stu_Curso .
Tabla Stu_ID a Stu_Course_No
Este_ID | Stu_Curso_No |
---|---|
101 | 201 |
101 | 202 |
102 | 401 |
102 | 402 |
Clave candidata para esta tabla: {Stu_ID, Stu_Course_No}.
Después de descomponerse en tablas adicionales, ahora está en BCNF, ya que pasa la condición de Super Key, que en la dependencia funcional X−>Y, X es un Súper clave.
Ejemplo 2
Encuentre la forma normal más alta de una relación R(A, B, C, D, E) con FD establecida como:
{ BC->D, AC->BE, B->E }>
Explicación:
- Paso 1: Como podemos ver, (AC)+ ={A, C, B, E, D} pero ninguno de sus subconjuntos puede determinar todos los atributos de la relación, por lo que AC será la clave candidata. A o C no pueden derivarse de ningún otro atributo de la relación, por lo que solo habrá 1 clave candidata {AC}.
- Paso 2: Los atributos primos son aquellos atributos que forman parte de la clave candidata {A, C} en este ejemplo y otros serán no primos {B, D, E} en este ejemplo.
- Paso 3: La relación R está en la primera forma normal ya que un DBMS relacional no permite atributos compuestos o de múltiples valores.
La relación está en segunda forma normal porque BC->D está en segunda forma normal (BC no es un subconjunto adecuado de la clave candidata AC) y AC->BE está en segunda forma normal (AC es clave candidata) y B->E está en la segunda forma normal (B no es un subconjunto adecuado de la clave candidata AC).
La relación es no en tercera forma normal porque en BC->D (ni BC es una superclave ni D es un atributo principal) y en B->E (ni B es una superclave ni E es un atributo principal) pero para satisfacer la tercera forma normal para , el LHS de un FD debería ser una superclave o el RHS debería ser un atributo principal. Entonces, la forma normal más alta de relación será la segunda forma normal.
Nota: Un atributo principal no puede depender transitivamente de una clave en la relación BCNF.
Considere estas dependencias funcionales de alguna relación R
AB ->C C ->B AB ->B>
Supongamos que se sabe que la única clave candidata de R es AB. Se requiere una observación cuidadosa para concluir que la dependencia anterior es una dependencia transitiva ya que el atributo principal B depende transitivamente de la clave AB a C. Ahora, el primer y el tercer FD están en BCNF ya que ambos contienen la clave candidata (o simplemente LLAVE) en sus lados izquierdos. La segunda dependencia, sin embargo, no está en BCNF pero definitivamente está en 3NF debido a la presencia del atributo principal en el lado derecho. Entonces, la forma normal más alta de R es 3NF ya que los tres FD satisfacen las condiciones necesarias para estar en 3NF.
Ejemplo 3
Por ejemplo, considere la relación R (A, B, C)
A ->antes de Cristo, B -> A>
A y B son superclaves, por lo que la relación anterior está en BCNF.
Nota: Es posible que la descomposición BCNF no siempre sea posible con la condición de unión sin pérdidas. Por ejemplo, relación R (V, W, X, Y, Z), con dependencias funcionales:
V, W ->X Y, Z -> X W -> Y>
No satisfaría la dependencia preservando la descomposición del BCNF.
Nota: A veces todavía hay despidos en una relación BCNF, ya que no siempre es posible eliminarlos por completo.
También hay algunas formas normales de orden superior, como la cuarta forma normal y la quinta forma normal.
Para obtener más información, consulte las formas normales cuarta y quinta.