CodeGym /Cursos /SQL SELF /Principios de la Primera Forma Normal (1NF)

Principios de la Primera Forma Normal (1NF)

SQL SELF
Nivel 25 , Lección 1
Disponible

La Primera Forma Normal (First Normal Form, 1NF) es la etapa inicial de la normalización de bases de datos, que impone restricciones estrictas a la estructura de las tablas. Una tabla está en 1NF si:

  1. Todos los datos son atómicos. Cada valor en una celda de la tabla debe ser indivisible. ¡Olvídate de las "listas en una sola celda"! En una base de datos eso no se hace.
  2. Cada fila es única. O sea, la tabla debe tener una clave primaria (Primary Key) o un identificador único.
  3. No hay grupos de datos repetidos. Los valores de una misma entidad no deben estar representados en la misma columna.

Dicho de forma sencilla, imagina que la tabla de la base de datos es tu habitación, y los valores atómicos son objetos separados: una lámpara, una mesa, un libro. Si la habitación está desordenada (por ejemplo, todo tirado en un montón), no vas a encontrar la lámpara ni saber rápido si tienes una mesa de repuesto. La normalización ayuda a "poner todo en su sitio".

Ejemplo de violación de la 1NF

Imagina que tenemos una tabla de estudiantes donde guardamos información sobre los cursos que asisten:

student_id name courses
1 Maria "Matemáticas, Física"
2 Rob "Biología, Química"

¿Por qué esta estructura es mala? Los cursos (columna courses) están escritos separados por coma en una sola celda. Esto significa que si queremos, por ejemplo, encontrar todos los estudiantes que estudian física, la consulta será un infierno: tendrás que hacer transformaciones de texto complicadas. Y si uno de los estudiantes quiere quitar física de la lista — tendrás otro problema. Estos datos no son atómicos, lo que rompe la regla principal de la 1NF.

¿Cómo llevar la tabla a 1NF?

Para solucionar el problema, vamos a dividir los datos en filas separadas, donde cada valor de la tabla será atómico:

student_id name course
1 Maria Matemáticas
1 Maria Física
2 Rob Biología
2 Rob Química

Ahora todo está bien. Transformamos nuestra tabla para que cada valor en la celda sea indivisible. Esto cumple con los principios de la 1NF.

Ejemplo detallado de violación y corrección de la 1NF

Supón que tenemos una tabla de pedidos de una tienda online:

order_id customer_name items
1001 Otto Lin "Portátil, Ratón, Teclado"
1002 Anna Song "Smartphone, Funda"

Obviamente aquí items contiene varios valores separados por coma, lo que viola la 1NF.

Para llevar los datos a 1NF, vamos a guardar una fila por cada producto en el pedido:

order_id customer_name item
1001 Otto Lin Portátil
1001 Otto Lin Ratón
1001 Otto Lin Teclado
1002 Anna Song Smartphone
1002 Anna Song Funda

Ahora la estructura de la tabla cumple con los principios de la 1NF. Cada pedido y producto están en una fila separada, y los valores son atómicos.

Añadiendo clave primaria

Después de transformar la tabla, es importante añadir un identificador único (clave primaria) para cada fila, para garantizar su unicidad. En el ejemplo de arriba puedes usar la combinación de order_id y item como clave primaria compuesta. Pero en la vida real normalmente se crea un campo aparte id.

id order_id customer_name item
1 1001 Otto Lin Portátil
2 1001 Otto Lin Ratón
3 1001 Otto Lin Teclado
4 1002 Anna Song Smartphone
5 1002 Anna Song Funda

Ejercicio práctico

Tienes una tabla de estudiantes con las asignaturas que estudian, presentadas en una sola celda:

student_id name subjects
1 Polly "Matemáticas, Química"
2 Peter "Física, Informática"

Lleva la tabla a una forma que cumpla con la 1NF.

Después de la transformación, la tabla debe verse así:

student_id name subject
1 Polly Matemáticas
1 Polly Química
2 Peter Física
2 Peter Informática

Errores más comunes al trabajar con 1NF

Cuando trabajas con una base de datos, las violaciones de la 1NF pueden aparecer en estas situaciones:

  • Guardar listas o arrays directamente en la tabla. Este es el error más común.
  • No tener un identificador único para las filas (clave primaria). Esto hace tu tabla vulnerable a datos duplicados.
  • Usar varias columnas para guardar la misma información. Por ejemplo, "course_1", "course_2", "course_3" — en vez de la estructura correcta.

Ten en cuenta estos puntos y tu base de datos cumplirá con la Primera Forma Normal.

Aplicación práctica de la 1NF

En proyectos reales la 1NF es clave. Por ejemplo:

  • En apps de gestión de clientes (CRM), los datos de clientes y sus acciones deben ser atómicos. Así es más fácil analizarlos y buscarlos.
  • En tiendas online, la 1NF se usa para guardar bien la info de pedidos, productos y compradores.
  • En sistemas bancarios, los datos de clientes, sus cuentas y transacciones tienen que ser atómicos para evitar líos entre operaciones distintas.

Seguir los principios de la 1NF ayuda a diseñar bases de datos que aguantan mucha carga y siguen siendo cómodas de usar. Todo bien, pero aparece duplicación de datos. Por eso pasamos a la Segunda Forma Normal (2NF), donde se entiende mejor cómo resolver dependencias parciales en las tablas.

¿Por qué es importante cumplir la Primera Forma Normal (1NF)? Imagina que guardas datos en una tabla donde en una celda puede haber varios valores — por ejemplo, una lista de productos pedidos por un cliente. Así es difícil trabajar con los datos: buscar todos los que pidieron "Teclado" se vuelve un suplicio. Y si necesitas cambiar o borrar parte de la info, es fácil meter la pata. Cuando los datos se guardan de forma atómica — o sea, cada campo tiene solo un valor — trabajar con ellos es más fiable y claro. Además, esas tablas son más fáciles de escalar, actualizar y reestructurar si hace falta.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION