Sql primera, segunda y tercera formas normales
Hay tres fuentes de anomalías de modificación en SQL Estos se definen como primero, segundo, tercero y formas normales
(1NF, 2NF, 3NF). Estas formas normales actúan como remedios a la modificación anomalías.Primera forma normal
Para estar en primera forma normal (1NF), una tabla debe tener las siguientes cualidades:
La mesa es bidimensional con filas y columnas.
Cada fila contiene datos que pertenece a alguna cosa o parte de una cosa.
Cada columna contiene datos para un solo atributo de la cosa que está describiendo.
Cada célula (intersección de una fila y una columna) de la tabla debe tener un solo valor.
Las entradas de cualquier columna deben ser todos de la misma clase. Si, por ejemplo, la entrada en una fila de una columna contiene un nombre de empleado, todas las otras filas deben contener nombres de los empleados en esa columna, también.
Cada columna debe tener un nombre único.
No hay dos filas pueden ser idénticos (es decir, cada fila debe ser único).
El orden de las columnas y el orden de las filas no son significativas.
Una tabla (relación) en la primera forma normal es inmune a ciertos tipos de anomalías de modificación, pero todavía está sujeta a otros. La tabla de ventas se encuentra en primera forma normal, y la mesa está sujeta a deleción e inserción anomalías. Primera forma normal puede resultar útil en algunas aplicaciones pero poco fiable en otros.
Segunda forma normal
Para apreciar la segunda forma normal, hay que entender la idea de dependencia funcional. LA dependencia funcional es una relación entre dos o más atributos. Un atributo es funcionalmente dependiente de otro si el valor de la segunda atributo determina el valor de la primera atributo. Si conoce el valor del segundo atributo, se puede determinar el valor del primer atributo.
Supongamos, por ejemplo, que una tabla tiene atributos (columnas) StandardCharge, NumberOfTests, y Carga total que se relacionan a través de la siguiente ecuación:
TotalCharge = StandardCharge * NumberOfTests
Carga total es funcionalmente dependiente tanto StandardCharge y NumberOfTests. Si conoces a los valores de StandardCharge y NumberOfTests, se puede determinar el valor de Carga total.
Cada mesa en primera forma normal debe tener una clave primaria única. Esa llave puede constar de uno o más de una columna. Una llave que consta de más de una columna se llama clave compuesta. Para estar en segunda forma normal (2NF), todos los atributos no clave deben dependen de la clave de todo. Por lo tanto, cada relación que está en 1NF con una sola clave de atributo está automáticamente en la segunda forma normal.
Si una relación tiene una clave compuesta, todos los atributos no clave deben depender de todos los componentes de la clave. Si usted tiene una mesa donde algunos atributos no clave no dependen de todos los componentes de la clave, romper la mesa en dos o más tablas para que - en cada una de las nuevas tablas - todos los atributos no clave dependen de todos los componentes de la clave primaria.
¿Suena confuso? Mira un ejemplo para aclarar las cosas. Tenga en cuenta la tabla de ventas. En lugar de grabar solamente una sola compra para cada cliente, se agrega una fila cada vez que un cliente compra un producto por primera vez. Otra diferencia es que los clientes de chárter (aquellos con ID de cliente valores de 1001 hasta 1007) obtienen un descuento sobre el precio normal.
ID de cliente no identifica de forma única una fila. En dos filas, ID de cliente es 1001. En otras dos filas, ID de cliente es 1010. La combinación de la ID de cliente columna y el Producto columna identifica de forma exclusiva una fila. Estas dos columnas juntos son una clave compuesta.
Si no fuera por el hecho de que algunos clientes califican para un descuento y otros no, la mesa no sería en la segunda forma normal, ya que Precio (un atributo no clave) dependería sólo de parte de la clave (Producto). Debido a que algunos clientes no califican para un descuento, Precio depende tanto ID de cliente y Producto, y la tabla está en segunda forma normal.
Tercera forma normal,
Tablas en la segunda forma normal son especialmente vulnerables a algunos tipos de anomalías de modificación - en particular, las que provienen de las dependencias transitivas.
LA dependencia transitiva se produce cuando un atributo depende de un segundo atributo, que depende de un tercero atributo. Las eliminaciones en una mesa con una dependencia de este tipo pueden causar pérdida de información no deseada. Una relación en la tercera forma normal es una relación en la segunda forma normal sin dependencias transitivas.
Mira de nuevo en la mesa de las ventas, que usted conoce está en primera forma normal. Mientras usted restringirá entradas para permitir sólo una fila para cada ID de cliente, usted tiene una clave principal de un solo atributo, y la mesa está en segunda forma normal. Sin embargo, la tabla sigue siendo objeto de anomalías. ¿Qué pasa si el cliente 1010 está contento con el cloro, por ejemplo, y devuelve el artículo para un reembolso?
Usted desea quitar la tercera fila de la tabla, que registra el hecho de que al cliente 1010 compró cloro. Usted tiene un problema: Si elimina esa fila, también se pierde el hecho de que el blanqueador de cloro tiene un precio de $ 4. Esta situación es un ejemplo de una dependencia transitiva. Precio depende de Producto, que, a su vez, depende de la clave primaria ID de cliente.
Romper la tabla de ventas en dos mesas resuelve el problema de la dependencia transitiva. Las dos tablas constituyen una base de datos que está en tercera forma normal.