¿Se normaliza una tabla sin una clave primaria?

9

En una conferencia, mi profesor nos mostró una mesa sin una clave primaria. Al preguntar, dijo que en 3NF cuando eliminas dependencias transitivas, está bien tener una tabla sin una clave primaria.

Sin embargo, ninguna clave primaria implica que no hay dependencias funcionales, pero 3NF es la eliminación de dependencias transitivas, y me enseñaron que cada tabla debe tener una clave primaria para la normalización, ya que se trata de dependencias funcionales.

Sé que es completamente posible crear una tabla sin una clave primaria, pero ¿se considera que esa base de datos está normalizada si esa tabla existe?

Debo agregar que la tabla no tiene ninguna "clave única", ni primaria, ni compuesta, ni extranjera.

La tabla que se muestra tiene tres atributos, ninguno de ellos etiquetado como primario o único. Le pregunté si fue un error y dijo que está bien no tener uno. Cuestioné el comentario ya que ninguna de la información en la tabla se puede identificar de forma única y afirmó que está bien ser así. Esto va en contra de lo que me enseñaron sobre la normalización.

Alex
fuente

Respuestas:

15

Si una relación no tiene ninguna clave candidata (y la clave primaria es solo una de las claves candidatas), entonces puede tener filas duplicadas, ¡de hecho, no es una relación! (ya que las relaciones son siempre conjuntos).

En ese caso, es más correcto llamarlo una tabla, no una relación, como lo hizo en su pregunta, y tenga en cuenta que varios RDBMS en efecto pueden gestionar no relaciones, permitiendo tablas sin ninguna restricción de unicidad, incluso si este caso es muy poco frecuente y produce problemas (anomalías) al operar en los datos.

Pero en este caso, hablar de formas normales no es apropiado: toda la teoría de la normalización se basa en el supuesto fundamental de que los objetos de interés son relaciones , no conjuntos múltiples. De hecho, esta teoría se basa en el supuesto de relación universal (algo discutido), que supone que todas las relaciones de una base de datos son un subconjunto de una proyección de dicha relación, que contiene todos los atributos en cada relación. Y ese objeto es de hecho una relación (es decir, un conjunto), no un conjunto múltiple.

El hecho de que, cuando hablamos de datos del Modelo de datos relacionales, a veces intercambiamos los dos términos, tablas y relaciones, no significa que en realidad sean sinónimos, y esta diferencia es fundamental cuando hablamos de la teoría de la normalización. Recuerde que en los libros, cuando se introduce alguna forma normal, siempre se dice algo como:

Una relación está en forma normal xxx si ...

Renzo
fuente
¿No es un isomorfo multiset para un conjunto donde agrega un countatributo adicional a los elementos?
Barmar
3
@Barmar sí, pero luego agrega una clave candidata y todas las dependencias funcionales relevantes, por lo que desde el punto de vista de la teoría de normalización, se encuentra en un caso completamente diferente.
Renzo
1
Cuando las personas realizan operaciones relacionales en tablas no relacionales, esperan resultados relacionales. Cuando no los consiguen, estos parecen anómalos.
Walter Mitty
0

3NF se refiere a una tabla que cumple con las primeras 3 reglas de normalización de datos.

  1. Eliminación de grupos repetitivos.
  2. Eliminación de datos redundantes.
  3. Eliminación de columnas que no dependen de la clave.

La tercera regla requiere una clave. Tienes razón, la mesa del profesor no era 3NF.

Metáfora
fuente