La primera forma normal es el primer paso en la normalización de la base de datos. Las siguientes condiciones deben cumplirse para que una tabla esté en la primera forma normal:
- Todos los campos deben tener valores atómicos. La atomicidad significa que todas las columnas deben dividirse a menos que sus valores se vuelvan indivisibles . Entonces, no podemos usar una tupla para dos entidades, tampoco podemos fusionar los atributos.
- Debe existir una clave en la tabla que identifique de forma única sus tuplas.
En otras palabras, evite guardar valores en formato separado por comas en la base de datos. Hacen que una tabla falle en la primera forma normal en la mayoría de los casos.
Problemas 1NF Direcciones
Hay dos casos en los que una tabla falla 1NF y provocan dos problemas diferentes. Si una tabla guarda un atributo de varios valores en formato separado por comas, se vuelve difícil actualizar o insertar otro valor. Uno debe recuperar la cadena completa, hacer cambios y luego ponerla en la base de datos. Mientras que en otro caso, si una tupla representa dos entidades porque tienen todos los demás valores de atributos iguales.
Normalización a 1NF
Una tabla se puede normalizar a 1FN agregando más columnas para que las tuplas sean únicas o usando otra tupla para cada valor de un atributo multivaluado, según la propiedad de 1NF que falta en el diseño de la tabla.
Ejemplos
Ejemplo 1
Una tabla que rastrea la ubicación de los usuarios.
Usuario | Localización |
---|---|
UN | 33.680565, 73.020199 |
B | 33.646104, 72.990074 |
Aquí, la columna Ubicación se puede dividir en dos columnas, por lo que anula la propiedad de atomicidad .
Usuario | Latitud | Longitud |
---|---|---|
UN | 33.680565 | 73.020199 |
B | 33.646104 | 72.990074 |
La tabla está en 1NF ahora porque las columnas tienen valores atómicos. Además, existe una clave.
Ejemplo 2
Considere la siguiente tabla
Nombre de usuario | … | Amigos |
---|---|---|
UN | … | ANTES DE CRISTO |
B | … | C |
C | … | UN |
Aquí, la columna Amigos se usa para almacenar un atributo de varios valores . Para eliminar a C y A, debemos obtener el valor de las columnas A Friends , eliminar C y luego volver a colocarlo. Podemos resolver el problema fácilmente siguiendo las reglas de 1NF . Para hacer la tabla en primera forma normal hacemos otra tupla para cada combinación de amigos.
Nombre de usuario | … | tiene amigo |
---|---|---|
UN | B | |
UN | C | |
B | C | |
C | UN |
Hacer la transformación puede resultar en la pérdida de algunas formas normales más fuertes, por lo que también debemos cuidarlas.
Ejemplo 3
Producto | Tamaño | Precio |
---|---|---|
UN | pequeña | $20 |
UN | largo | $30 |
B | pequeño grande | $15 |
En la siguiente tabla, se utiliza una tupla para varias entidades . Esto puede parecer bueno si el precio del producto B no depende del tamaño, pero puede resultar un problema si cambiamos de opinión y queremos cobrar más por el producto B de gran tamaño. Siempre tendremos que crear otra tupla. Entonces, es mejor tener una tupla separada desde el principio.
Producto | Tamaño | Precio |
---|---|---|
UN | pequeña | $20 |
UN | largo | $30 |
B | pequeña | $15 |
B | largo | $15 |
Ejemplo 4
Considere la tabla en una base de datos de una compañía de taxis que se usa para mantener el registro de todos los viajes.
Nombre de usuario | Conductor | … | Lugar de recogida | Punto de entrega |
---|---|---|---|---|
UN | D1 | … | ubicación-a | ubicación-b |
B | D2 | … | ubicación-a | Ubicación-c |
UN | D1 | … | ubicación-a | ubicación-b |
En la tabla anterior, no podemos identificar los dos viajes similares que tuvo la persona A. Una persona puede tener un viaje similar con el mismo conductor. Es un problema, pero se puede eliminar fácilmente agregando otra columna. En este caso, puede ser DateTime , que registra la fecha y la hora del viaje. Por lo tanto, podemos diferenciar los dos paseos.
Nombre de usuario | Conductor | Fecha y hora | … | Lugar de recogida | Punto de entrega |
---|---|---|---|---|---|
UN | D1 | 2018-01-15T13:45:30 | … | ubicación-a | ubicación-b |
B | D2 | 2018-01-15T13:45:30 | … | ubicación-a | Ubicación-c |
UN | D1 | 2018-01-20T13:45:30 | … | ubicación-a | ubicación-b |
Temas relacionados
- Normalización
- bases de datos