¿Cuál es la explicación más lúcida de BCNF?

La forma normal de Boyce-Codd, también llamada 3.5NF, es solo una versión más fuerte de 3NF.
Si un diagrama relacional está en BCNF, se eliminó toda la inclusión de componentes adicionales (sustitutos) basados ​​en la dependencia funcional , aunque aún pueden existir otros tipos de redundancia. Un esquema relacional R está en la forma normal de Boyce-Codd si y solo si cada una de sus dependencias X → Y, al menos una de las siguientes condiciones se cumplen:

X → Y es una dependencia funcional trivial (Y ⊆ X)
X es una super clave para el esquema R

esquema relacional: la organización de datos como un plano de cómo se construye una base de datos

redundancia : la inclusión de componentes adicionales que no son estrictamente necesarios para funcionar, en caso de fallo en otros componentes

dependencias: dada una relación R, se dice que un conjunto de atributos X en R determina funcionalmente otro conjunto de atributos Y, también en R, (escrito X → Y) si, y solo si, cada valor de X está asociado precisamente con una Y valor; Se dice entonces que R satisface la dependencia funcional X → Y.

Ir

La forma normal de Boyce-Codd (o BCNF o 3.5NF ) es una forma normal utilizada en la normalización de la base de datos. Es una versión ligeramente más fuerte de la tercera forma normal (3NF). BCNF fue desarrollado en 1974 por Raymond F. Boyce y Edgar F. Codd para abordar ciertos tipos de anomalías no tratadas por 3NF como se definió originalmente.

Si un esquema relacional está en BCNF, entonces se eliminó toda la redundancia basada en la dependencia funcional, aunque aún pueden existir otros tipos de redundancia. Un esquema relacional R está en la forma normal de Boyce-Codd si y solo si para cada una de sus dependencias X → Y , al menos una de las siguientes condiciones se cumple:

  • X → Y es una dependencia funcional trivial (Y ⊆ X)
  • X es una super clave para el esquema R

Chris Date ha señalado que una definición de lo que ahora conocemos como BCNF apareció en un artículo de Ian Heath en 1971.

La fecha escribió:

“Dado que esa definición es anterior a la propia definición de Boyce y Codd por unos tres años, me parece que BCNF debería, por derecho, llamarse forma normal de Heath . Pero no lo es”.

Edgar F. Codd lanzó su artículo original que decía “Un modelo relacional de datos para grandes bancos de datos compartidos” en junio de 1970. Esta fue la primera vez que se publicó la noción de una base de datos relacional. Todo el trabajo después de esto, incluido el método de forma normal de Boyce-Codd, se basó en este modelo relacional.

La forma normal de Boyce-Codd (BCNF) es una forma normal utilizada en la normalización de la base de datos. Realizamos la normalización de datos para optimizar los datos para obtener mejores resultados. BCNF es solo una versión ligeramente más fuerte de la tercera forma normal.

Solo en casos raros una tabla 3NF no cumple con los requisitos de BCNF. Una tabla 3NF que no tiene varias claves candidatas superpuestas está garantizada en BCNF. Una relación R está en BCNF si está en 3NF y para cada dependencia funcional X-> A en R, X es una clave o superclave en R. Una relación R está en 3NF es que no hay dependencia transitiva en la clave principal.

La diferencia entre 3NF y BCNF es sutil.
Definición 3NF
Una relación está en 3NF si está en 2NF y ningún atributo no primo de forma transitiva depende de la clave principal. En otras palabras, una relación R está en 3NF si para cada dependencia funcional X ⟶ A en R se cumple al menos una de las siguientes condiciones:

  1. X es una tecla o superclave en R
  2. A es un atributo principal en R

Ejemplo
Dada la siguiente relación:
EMP_DEPT (primer nombre, número de empleado, fecha de nacimiento, dirección, número de departamento, nombre de departamento)
Un empleado solo puede trabajar en un departamento y cada departamento tiene muchos empleados.
La clave del candidato es employeeNumber .
Considere las siguientes dependencias funcionales:

  1. employeeNumber ⟶ nombre, dateOfBirth, address, departmentNumber
  2. departmentNumber ⟶ departmentName

Dada la definición anterior, es posible concluir que la relación EMP_DEPT no está en 3NF porque la segunda dependencia funcional no cumple ninguna de las 2 condiciones de la 3NF:

  1. departmentNumber no es una clave o una superclave en EMP_DEPT
  2. departmentName no es un atributo principal en EMP_DEPT

Definición de BCNF
Una relación R está en BCNF si está en 3NF y para cada dependencia funcional X ⟶ A en R, X es una clave o superclave en R. En otras palabras, la única diferencia entre 3NF y BCNF es que en BCNF no está presente La segunda condición de la 3NF. Esto hace que BCNF sea más estricta que 3NF ya que cualquier relación que esté en BCNF estará en 3NF, pero no necesariamente todas las relaciones que están en 3NF estarán en BCNF.
Ejemplo
Dada la siguiente relación:
STUDENT_COURSE (studentNumber, socialSecurityNumber, courseNumber)
Un estudiante puede asistir a muchos cursos y en un curso puede haber muchos estudiantes.
Las claves candidatas son:

  1. seguridad social número , curso número
  2. estudianteNúmero , curso Número

Considere las siguientes dependencias funcionales:

  1. studentNumber ⟶ socialSecurityNumber
  2. socialSecurityNumber ⟶ studentNumber

Dada la definición anterior, es posible concluir que STUDENT_COURSE no está en BCNF ya que al menos studentNumber no es una clave o superclave en STUDENT_COURSE.

créditos ¿Cuál es la diferencia entre 3NF y BCNF?