Primer normal forma las cinco formas normales

Primer normal forma las cinco formas normales

La normalización es un enfoque de diseño de base de datos para descomponer sistemáticamente las tablas para eliminar la redundancia de datos y evitar anomalías que puedan acompañar la inserción, actualización y eliminación de datos. Existe la primera forma normal (1NF), la segunda forma normal (2NF), la tercera forma normal (3NF), la forma normal de Boyce-Codd (BCNF), la cuarta forma normal (4NF) y la quinta forma normal (5NF). La sexta forma normal todavía se está desarrollando (aún en estado de investigación) y no se discutirá en esta serie. La forma normal de Boyce-Codd es como la 3½ (3.5) Forma normal. Una base de datos relacional consta de tablas relacionadas, que deberían haberse normalizado.

Este artículo (tutorial) explica sobre la primera forma normal. Esta es la primera parte de la serie, las cinco formas normales. La base de datos de ejemplo utilizada es la de una tienda de conveniencia. En Gran Bretaña, una tienda de conveniencia se llama una tienda de esquina. En algunos países, se llama una tienda de provisiones.

Tabla de transacciones no normalizada

Una transacción es la compra de productos por parte de un cliente, de la tienda, o recibe productos por parte de la tienda de los proveedores, a la venta. Se supone en esta parte de la serie (en este tutorial) que el secretario que registra las transacciones no está capacitado para tal grabación. Puede haber más de un empleado que no sepa nada sobre la normalización. Si hay más de un empleado, todos los empleados registran en el mismo libro de ejercicios y ninguno de ellos sabe nada sobre la normalización. El propietario (propietario de la tienda) tampoco sabe nada sobre la normalización. Su padre acaba de morir y le dejó algo de dinero, y decidió invertir en una tienda de conveniencia. Entonces, el secretario (o los empleados) comienzan (s) con una tabla para registrar todas las transacciones. La tabla tiene los siguientes encabezados de la columna donde trans significa transacción:

Trans (producto, categoría, cliente, proveedor, empleado, precio)

Trans se refiere a una fila en la tabla. La tabla es una tabla de transacciones. Los ejemplos de productos vendidos en la tienda son: dulces, chocolates, sprite, coca-cora, fanta, pepsi, leche, yogurt, queso, pastas de dientes, tejidos, pañales, dulces, papas fritas y nueces. Cualquiera de estos nombres puede aparecer en la columna del producto.

Estos productos se dividen en categorías que son: confitería, refrescos, productos lácteos, artículos de tocador y comida.

La columna del cliente tiene los nombres de las personas que compran en la tienda. La columna del proveedor tiene los nombres de las compañías que suministran los productos que la tienda venden. La columna del empleado tiene el nombre del empleado que vende un producto o recibe un producto de un proveedor y lo registra. La columna de acción indica si se realizó una venta a un cliente o se realizó un pedido (comprado) a un proveedor.

Cada precio es el precio total de los productos vendidos o comprados en una transacción.

Y así, las primeras filas de la mesa son:

Antes de continuar, conozca que las columnas de tabla en una tabla de base de datos también se denominan atributos. Las filas con valores pueden denominarse objetos.

Ahora, observe que en la columna de precios, la moneda no está indicada. Si la moneda es dólares o euros o alguna otra moneda, no tiene que indicarse. Sin embargo, se indica en una área de comentarios que no es parte de la tabla.

De la mesa: Hay tres empleados hasta ahora, excluyendo al propietario, y uno de ellos ha llevado a cabo la transacción dos veces; Hasta ahora hay tres clientes, y uno de ellos ha comprado dos veces; Hay cuatro compañías de proveedores hasta ahora, y cada una está preocupada por una transacción.

Redundancia:

Tenga en cuenta que "John Smith" aparece como valor en dos filas en la misma columna. La repetición del mismo valor en la misma columna es la redundancia que puede conducir a problemas contables.

Primeras reglas normales de forma

Para que una tabla esté en la primera forma normal, se deben respetar las siguientes reglas. De lo contrario, habría problemas contables:

1) Todas las columnas en una tabla deben tener nombres de encabezados únicos.

2) Cada celda debe tener un solo valor.

3) Los valores almacenados en una columna deben ser del mismo tipo.

4) Las filas deben ser distintas.

5) El orden de las columnas o el orden de las filas no importa.

Usted, el lector, que finalmente completa esta serie y sabe todo sobre las formas normales, se ha convertido en un desarrollador de bases de datos. El propietario de la tienda de conveniencia es tu amigo. Decidió visitar el sitio de negocios de su amigo (tienda).

Miras la tabla anterior que produjeron. Reflexionas por algún tiempo, luego sacudes la cabeza, diciendo: "HM-HM-HM". Luego le dices a tu amigo, al propietario y a sus trabajadores que no se han respetado todas las reglas de la primera forma normal; y eso conduciría a errores contables.

Luego se propuso enseñarles las reglas de la primera forma normal, examinando las cinco reglas dadas, ya que están relacionadas con la tabla anterior, una por una.

Regla 1: Todas las columnas en una tabla deben tener nombres de encabezados únicos.

Hacer todas las columnas de la tabla anterior tienen nombres únicos? Si, y eso está bien. Los miembros del personal no son ininteligentes, después de todo. Simplemente no han sido educados en formas normales. La regla 1 no ha sido violada y eso no plantea un problema.

Regla 2: Cada celda debe tener solo un valor.

Una celda es la intersección de una fila y una columna. Mirando el último atributo (columna) con el encabezado, el precio, hay un número en cada celda y solo hay un número por celda. Eso está bien. Cada celda hay valor único.

Mirando la columna de los empleados, cada celda tiene un nombre de una persona. Un nombre consiste en el primer y apellido, formando una cadena (texto). Eso está bien. Cada celda de la columna tiene una cadena y, por lo tanto, cada celda tiene un valor.

Las celdas para las columnas del cliente y del proveedor tienen una sola cadena cada una y así, un solo valor. Eso está bien. En la columna del cliente, "John Smith" está en dos celdas diferentes (filas). Eso es redundancia (repetición) y su problema se discutirá más adelante en el tutorial para 2NF.

En la columna de categoría, cada celda debe tener una categoría. Un texto de categoría (un valor) es una cadena. Sin embargo, en la segunda celda desde la parte superior, hay dos categorías (dos cuerdas): "refresco" y "producto lácteo" separados por una coma. Estos son dos valores en una celda. El resto de las celdas en la columna de categoría tienen valores únicos, pero esta celda tiene dos. La regla de que cada celda debe tener solo un valor, se ha violado aquí en la segunda celda. Esto conduciría a problemas contables. Dado que hay dos valores en una celda, la solución es dividir la fila de datos en dos filas correspondientemente, colocando los dos valores en dos celdas, dos filas, en la misma columna a la siguiente:

Las dos categorías que estaban en una celda se han puesto en dos celdas en la misma columna. Sin embargo, las otras células se han repetido en sus columnas, introduciendo más redundancia. En el curso de la resolución de un problema, se agregaron repeticiones (redundancia), agregando otro problema. La solución a las repeticiones se discutirá en el próximo tutorial sobre la segunda forma normal.

Mirando la primera columna sobre el producto, la primera celda tiene dos valores: "dulces" y "chocolates" separados por una coma. Estos también son dos productos. La solución es dividir la fila en dos, colocando los dos valores en dos celdas diferentes en la misma columna y desafortunadamente también duplicando las otras celdas.

La segunda celda de la misma columna de producto tiene siete valores. Al igual que la primera celda, esto viola la regla: cada celda debe tener un solo valor. La solución es reemplazar la fila con siete nuevas filas, con cada uno de estos valores en su propia celda en la misma columna y repeticiones de las otras celdas en sus propias columnas. Las nuevas repeticiones aumentan la redundancia.

De los siete productos, cuatro caídas en la categoría de refrescos y tres caen en la categoría de productos lácteos. Los cuatro productos (Sprite, Coca-Cola, Fanta y Pepsi) están asociados con la categoría, refrescos. Los productos (leche, yogurt y queso) están asociados con la categoría, producto lácteo.

La nueva tabla se convierte en:

La regla de que cada celda debe tener solo un valor ahora está satisfecho. No hay celda con más de un valor en la tabla ahora. Esta solución llegó a un costo. Más células se repitieron en sus columnas, agregando más repeticiones a la doble repetición (original) dada de "John Smith". Poner una mesa en la segunda forma normal resuelve el problema de la repetición (redundancia) de la primera forma normal.

Nota: La repetición en la columna de precios no se considera un problema y no se tiene en cuenta al producir el 2NF. También tenga en cuenta que en esta tabla resultante, algunos de los precios dados se han dividido y se considera apropiado.

Regla 3: Los valores almacenados en una columna deben ser del mismo tipo.

El último atributo, la columna de precios solo tiene números. Entonces, todos los valores en esa columna son del mismo tipo llamado números (precisamente, enteros). Cada una de las otras columnas tiene valores de cadena de tipo. El tipo de cadena se llama texto en algunos códigos de tabla de base de datos. Y así, la regla de que los valores almacenados en una columna deben ser del mismo tipo se satisface sin ningún cambio a lo que el personal había hecho. No son ininteligentes después de todo.

Regla 4: Las filas deben ser distintas.

En la tabla anterior resultante, no hay dos filas las mismas. Algunas células ocurren en más de una fila en la misma columna, pero no hay dos filas que tengan las mismas celdas en el mismo orden. Y así, la regla de que las filas deben ser distintas se satisfacen sin ningún cambio en lo que el personal había hecho. No son ininteligentes después de todo.

Regla 5: El orden de las columnas o el orden de las filas no importa.

Cualquier columna puede ser la primera o última columna. Cualquier fila puede ser la primera o última fila. Y así, la regla de que el orden de las columnas u orden de las filas no importa sin ningún cambio a lo que el personal había hecho. No son ininteligentes después de todo.

La tabla ahora está en primera forma normal porque las cinco reglas están satisfechas.

De las cinco reglas para tener una mesa en primera forma normal, el personal, incluido su propietario, violó solo una por ignorancia que no es culpa. Usted, el desarrollador web que los capacita, tiene que felicitarlos. Sin embargo, debe insistir en que la regla de que cada celda debe tener solo un valor es la regla más importante para poner una tabla en la primera forma normal.

Bueno, eso no es todo. No dejas a las personas que estás entrenando todavía. La tabla tiene que recibir una clave (una clave principal). En otras palabras, cada fila debe ser identificable por uno o más valores de celda de esa fila. Si eso no es posible, se debe crear una nueva columna en el lado izquierdo de la tabla para llamarse la columna clave.

Clave primaria

¿Hay alguna columna en la tabla anterior donde ninguna celda puede estar vacía o tener un valor nulo, y todos los valores siempre serán únicos?? No hay ninguno. Si hubiera uno, entonces se convertiría en la clave principal. El lector podría pensar que la columna del producto tiene valores únicos, pero este no sería el caso todo el tiempo. Por ejemplo, el cliente "John Smith" o un nuevo cliente aún puede venir y comprar dulces en el futuro, como una nueva transacción (fila). Luego, habría dos valores de cadena de dulces en dos celdas en la columna del producto.

¿Hay dos o más columnas en la tabla anterior resultante cuya combinación de células de fila es única y no puede tener ninguna repetición en la siguiente tabla?? En caso afirmativo, el grupo de columnas formará la clave principal. Como sucede, no existe tal grupo; A menos que todas las columnas de la tabla se consideren como la clave principal, ya que ninguna fila puede repetirse. Tiene que haber una clave principal y debe haber columnas no clave en una tabla normalizada.

Dado que una o más columnas no pueden ser la clave principal de la tabla anterior resultante, se debe agregar una nueva columna en el extremo izquierdo de la tabla para ser la clave principal. En una columna de clave primaria, ninguna celda está vacía y ninguna celda tiene un valor nulo. Todos los valores en la celda tienen que ser únicos. La forma más fácil de tener tales valores para la columna clave principal es tener números desde 1 hacia arriba. Es decir, para la primera fila, el valor de la clave principal sería 1. Para la segunda fila, el valor para la clave primaria sería 2. Para la tercera fila, el valor para la clave principal sería 3, y así sucesivamente. Cuando se agrega una nueva fila de transacción en la parte inferior, el nuevo valor de la clave principal es uno más el que está justo encima de ella. Entonces, la tabla completa para la primera forma normal es la siguiente:

La columna clave principal se llama transid para "ID de transacción". ID significa identificador. Dicha clave primaria es el tipo de incremento automático, que es el mismo que el número automático. Una nueva fila tendrá una identificación primaria de 12. Esta tabla es una tabla de transacciones. Es la única mesa que la tienda tiene hasta ahora.

Que completa el diseño de la tabla para la primera forma normal. Sin embargo, como desarrollador web, no se aleja de las personas que está entrenando todavía. Todavía tiene que explicarle al personal (los aprendices) el significado de la dependencia funcional. Con eso, podrán manejar el problema de la clave principal, así como las cinco reglas que les enseñó en su ausencia.

Dependencia funcional

La idea de dependencia funcional o simplemente dependencia es que una vez que se conoce la clave principal de una fila, cualquier otro valor en esa fila se puede obtener. Entonces, la clave principal es el valor dependiente. Depende del resto de los otros valores en la fila. Por ejemplo, si el transid de 3 se da para la tabla anterior, el producto correspondiente es sprite. La categoría correspondiente es "refrescos". El cliente correspondiente es "John Smith". El proveedor correspondiente es la "compañía bebida". El empleado correspondiente (empleado) es "Mary Baker". La acción correspondiente es "ventas". Y la cantidad (precio) que pagó el cliente es de $ 12 ($ no está indicado en la tabla).

En este punto, usted, como desarrollador de bases de datos, puede dejar. Sin embargo, antes de ir, resumes lo que les enseñaste.

Conclusión

Una tabla en la primera forma normal no debe violar ninguna de las siguientes reglas:

1) Todas las columnas en una tabla deben tener nombres de encabezados únicos.

2) Cada celda debe tener un solo valor.

3) Los valores almacenados en una columna deben ser del mismo tipo.

4) Las filas deben ser distintas.

5) El orden de las columnas o filas no importa.

Cualquier tabla en cualquier forma normal debe tener una clave primaria.

La idea de la dependencia funcional o la simplemente dependencia es que una vez que se conoce la clave principal de una fila, cualquier otro valor en esa fila se puede obtener.

En este punto, usted como desarrollador de bases de datos puede despedirse. Sin embargo, volverá para enseñarles sobre la segunda forma normal porque una tabla en 1NF aún puede tener algunas vulnerabilidades.