23

Luchando para ver las diferencias entre ellos. Sé que decimos que 2NF es "la clave completa" y 3NF "nada más que la clave".Normalización - 2NF vs 3NF

referencia a este gran respuesta por Smashery: What are 1NF, 2NF and 3NF in database design?

El ejemplo utilizado para 3NF es exactamente el mismo que 2NF - es un campo que depende de un solo atributo clave. ¿Cómo es el ejemplo de 3NF diferente del de 2NF?

Gracias

+8

La infracción 2NF se debe a que la columna 'Nombre del curso' depende de parte de la clave (' CourseID'). La infracción de 3NF se debe a que 'TeacherName' depende funcionalmente de' TeacherID', pero esto no forma parte de la clave. –

+1

Entonces una tabla en 2NF podría tener 'CourseID',' Semester', '# Places',' TeacherID', 'TeacherName'? Parece extraño considerando 'TeacherName' es claramente datos duplicados de' TeacherID'. – Marcus

+4

Sí. 2NF solo se ocupa de las dependencias funcionales en clave parcial. Si la tabla está en 1NF y no tiene una clave compuesta que AFAIK, está automáticamente en 2NF. –

Respuesta

9

Supongamos que alguna relación satisface una dependencia funcional no trivial de la forma A-> B, donde B es un atributo no primordial.

2NF se viola si A no es un superkey pero es un subconjunto propio de un candidato clave

3NF se viola si A no es un superkey

ha detectado que el requisito 2NF es sólo un especial caso (pero no tan especial) del requisito de 3NF. 2NF en sí mismo no es muy importante. El problema importante es si A es una superclave, no si A pasa a ser parte de una clave candidata.

+0

+1, aunque puse una respuesta con la esperanza de que podría ayudar a Igor K si el suyo no es suficientemente inglés. – Unreason

+0

3NF se infringe si ni A es una superclave ni B es el/los atributo (s) principal (es). –

2

Se han logrado la tercera NF cuando no existen relaciones entre la llave y otras columnas que no dependen de él.

No estoy seguro de que mi profesor lo haya dicho así, pero esto es lo que es.

Si está "en el campo". Olvídate de las definiciones. Busque las "mejores prácticas". Uno es SECO: No te repitas.

Si sigues ese principio, ya dominas todo lo que necesitas para NF.

Aquí hay un ejemplo. la tabla tiene el siguiente esquema:

PERSONS : id, name, age, car make, car model 

edad y el nombre están relacionados con la entrada de persona (=> id) pero el modelo depende en el coche y no la persona.

A continuación, se dividiría en dos tablas:

PERSONS : id, name, age, car_models_id (references CAR_MODELS.id) 
CAR_MODELS : id, name, car_makes_id (references CAR_MAKES.id) 
CAR_MAKES : id, name 

Usted puede tener la replicación en 2FN pero no en 3FN más.

La normalización tiene que ver con la no replicación, la coherencia y, desde otro punto de vista, las claves foráneas y las UNIONES.

Cuanto más normalizado mejor para los datos, pero no para el rendimiento ni comprensión si se vuelve realmente complicado.

+0

Gracias, estaría de acuerdo con el principio DRY, por eso me sorprendió ver duplicación de datos en el 2NF. – Marcus

+1

"Ha logrado el 3er NF cuando no hay relaciones entre la clave y las otras columnas". No estoy muy seguro de lo que quieres decir con esa frase, pero estoy muy seguro de que está mal. ¡Estar en 3NF no tiene nada que ver con que no haya "relaciones [sic]" entre la clave y otras columnas! – sqlvogel

+3

Si alguien estuviera "en el campo" de, por ejemplo, construir puentes, ¿le aconsejaría también que "se olvide de las definiciones" de, digamos, las leyes de la gravedad? –

8

Ya que hace una pregunta muy específica acerca de una respuesta para existing so question aquí hay una explicación de eso (y básicamente diré lo que dportas ya dijo en su respuesta, pero en otras palabras).

Los ejemplos de diseño que no está en 2NF ni en 3NF no son lo mismo.

Sí, la dependencia en ambos casos está en un solo campo.

Sin embargo, en el ejemplo no 2NF:

  • dependencia está en la parte de la clave primaria

mientras que en ejemplo no 3NF (que está en 2NF):

  • la dependencia está en un campo que es que no forma parte de la clave principal (y también tenga en cuenta que en ese Por ejemplo, satisface 2NF; esto es mostrar que incluso si marca para 2NF también debe comprobar si hay 3NF)

En ambos casos para normalizar debe crear la tabla adicional, que no presentan anomalías de actualización (ejemplo de actualización de anomalía: en el ejemplo 2NF, ¿Qué sucede si actualiza Coursename para IT101|2009-2, pero no para IT101|2009-1? Obtiene inconsistente = sin sentido = datos inutilizables).

Por lo tanto, si memoriza la clave, la clave completa y nada más que la clave, que abarca tanto 2NF como 3NF, que debería funcionar para usted en la práctica al normalizar. La distinción entre 2NF y 3NF puede parecerle sutil (pregunte si en la dependencia adicional los atributos de los que dependen los datos son parte de la clave candidata o no) y, bueno, así es, simplemente acéptelos.

6

2NF permite atributos no primos sean funcionalmente dependiente de atributos no primos

pero

3NF permite a los atributos no primos sean funcionalmente dependiente sólo de súper clave

Por lo tanto, cuando una tabla está en 3NF Es en 2NF y 3NF es más estricta que 2NF

Espero que esto ayude ...

0

2NF sigue la dependencia parcial mientras que 3NF sigue la dependencia funcional transitiva. Es importante saber que el 3NF debe estar en 2NF y admitir la dependencia funcional transitiva.

Cuestiones relacionadas