Codd se dio de cuenta que existían bases de datos en el mercado las cuales decían ser relacionales,
pero lo único que hacían era guardar la información en las tablas, sin estas tablas estar literalmente
normalizadas; entonces éste publicó 12 reglas que un verdadero sistema relacional debería de tener,
en la práctica algunas de ellas son difíciles de realizar.Un sistema podrá considerarse "más relacional"
cuanto más siga estas reglas.
Toda la información en un RDBMS está explícitamente
representada de una sola manera por valores en una tabla. Cualquier cosa que no exista en una tabla
no existe del todo. Toda la información, incluyendo nombres de tablas, nombres de vistas, nombres de
columnas, y los datos de las columnas deben estar almacenados en tablas dentro de las bases de
datos. Las tablas que contienen tal información constituyen el Diccionario de Datos.
Regla No. 1 - La Regla de la información
Cada ítem de datos debe ser lógicamente accesible al ejecutar una búsqueda que combine el nombre
de la tabla, su clave primaria, y el nombre de la columna. Esto significa que dado un nombre de tabla,
dado el valor de la clave primaria, y dado el nombre de la columna requerida, deberá encontrarse uno
y solamente un valor. Por esta razón la definición de claves primarias para todas las tablas es
prácticamente obligatoria.
Regla No. 2 - La regla del acceso garantizado
La información inaplicable o faltante puede ser representada a través de valores nulos. Un RDBMS
(Sistema Gestor de Bases de Datos Relacionales) debe ser capaz de soportar el uso de valores nulos en
el lugar de columnas cuyos valores sean desconocidos o inaplicables.
Regla No. 3 - Tratamiento sistemático de los valores nulos
La descripción de la base de datos es almacenada de la misma manera que los datos ordinarios, esto
es, en tablas y columnas, y debe ser accesible a los usuarios autorizados. La información de tablas,
vistas, permisos de acceso de usuarios autorizados, etc, debe ser almacenada exactamente de la
misma manera: En tablas. Estas tablas deben ser accesibles igual que todas las tablas, a través de
sentencias de SQL.
Regla No. 4 - La regla de la descripción de la base de datos
Debe haber al menos un lenguaje que sea integral para soportar la definición de datos, manipulación
de datos, definición de vistas, restricciones de integridad, y control de autorizaciones y transacciones.
Esto significa que debe haber por lo menos un lenguaje con una sintaxis bien definida que pueda ser
usado para administrar completamente la base de datos.
Regla No. 5 - La regla del sub-lenguaje Integral
Todas las vistas que son teóricamente actualizables, deben ser actualizables por el sistema mismo. La
mayoría de las RDBMS permiten actualizar vistas simples, pero deshabilitan los intentos de actualizar
vistas complejas
Regla No. 6 - La regla de la actualización de vistas
La capacidad de manejar una base de datos con operandos simples aplica no solo para la
recuperación o consulta de datos, sino también para la inserción, actualización y borrado de datos.
Esto significa que las cláusulas SELECT, UPDATE, DELETE e INSERT deben estar disponibles y operables
sobre los registros, independientemente del tipo de relaciones y restricciones que haya entre las
tablas.
Regla No. 7 - La regla de insertar y actualizar
El acceso de usuarios a la base de datos a través de terminales o programas de aplicación, debe
permanecer consistente lógicamente cuando quiera que haya cambios en los datos almacenados, o
sean cambiados los métodos de acceso a los datos. El comportamiento de los programas de
aplicación y de la actividad de usuarios vía terminales debería ser predecible basados en la definición
lógica de la base de datos, y éste comportamiento debería permanecer inalterado,
independientemente de los cambios en la definición física de ésta.
Regla No. 8 - La regla de independencia física
Los programas de aplicación y las actividades de acceso por terminal deben permanecer lógicamente
inalteradas cuando quiera que se hagan cambios (según los permisos asignados) en las tablas de la
base de datos. La independencia lógica de los datos especifica que los programas de aplicación y las
actividades de terminal deben ser independientes de la estructura lógica, por lo tanto los cambios en
la estructura lógica no deben alterar o modificar estos programas de aplicación.
Regla No. 9 - La regla de independencia lógica
Todas las restricciones de integridad deben ser definibles en los datos, y almacenables en el catalogo,
no en el programa de aplicación. Las reglas de integridad son: Ningún componente de una clave
primaria puede tener valores en blanco o nulos. (esta es la norma básica de integridad). Para cada
valor de clave foránea deberá existir un valor de clave primaria concordante. La combinación de estas
reglas aseguran que haya Integridad referencial.
Regla No. 10 - La regla de la independencia de la integridad
El sistema debe poseer un lenguaje de datos que pueda soportar que la base de datos esté distribuida
físicamente en distintos lugares sin que esto afecte o altere a los programas de aplicación. El soporte
para bases de datos distribuidas significa que una colección arbitraria de relaciones, bases de datos
corriendo en una mezcla de distintas máquinas y distintos sistemas operativos y que este conectada
por una variedad de redes, pueda funcionar como si estuviera disponible como una única base de
datos en una sola máquina.
Regla No. 11 - La regla de la distribución
Si el sistema tiene lenguajes de bajo nivel, estos lenguajes de ninguna manera pueden ser usados para
violar la integridad de las reglas y restricciones expresadas en un lenguaje de alto nivel (como SQL).
Algunos productos solamente construyen una interfaz relacional para sus bases de datos No
relacionales, lo que hace posible la subversión (violación) de las restricciones de integridad. Esto no
debe ser permitido.
Regla No. 12 - Regla de la no-subversión
Primera forma normal
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y
colocarse en tablas separadas.
Elimine los grupos repetidos
de las tablas individuales.
Cree una tabla independiente para
cada conjunto de datos relacionados.
Poner la base de datos en la Primera Forma Normal resuelve el problema de los encabezados de
columna múltiples. Muy a menudo, los diseñadores de bases de datos inexpertos harán algo similar a
la tabla no normalizada. Una y otra vez, crearán columnas que representen los mismos datos. La
normalización ayuda a clarificar la base de datos y a organizarla en partes más pequeñas y más fáciles
de entender. En lugar de tener que entender una tabla gigantesca y monolítica que tiene muchos
diferentes aspectos, sólo tenemos que entender los objetos pequeños y más tangibles, así como las
relaciones que guardan con otros objetos también pequeños
¿Qué ocurre cuando se agrega un tercer proveedor? Agregar un campo no es la respuesta, requiere
modificaciones en las tablas y el programa, y no admite fácilmente un número variable de
proveedores. En su lugar, coloque toda la información de los proveedores en una tabla independiente
denominada Proveedores y después vincule el inventario a los proveedores con el número de
elemento como clave, o los proveedores al inventario con el código de proveedor como clave.
“Cuando se manipulan las relaciones de un modelo de visión se les trata como conjuntos matemáticos
de eneadas (tuplas). Esto requiere entre otras cosas, que los atributos dentro de cada eneada sean
ordenados y completos, y que los dominios permitan sólo valores simples. Los valores simples no
pueden descomponerse en múltiples valores y no pueden por sí mismos ser conjuntos o relaciones."
Al proceso de eliminar grupos anidados se le denomina NORMALIZACION, y a las relaciones
resultantes se les considera expresadas en la PRIMERA FORMA NORMAL
Segunda Forma Normal
La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben
eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a
aquellos datos que no dependen de la llave primaria de la tabla para identificarlos
Una vez alcanzado el nivel de la Segunda Forma Normal, se controlan la mayoría de los problemas de
lógica. Podemos insertar un registro sin un exceso de datos en la mayoría de las tablas.
Cree tablas independientes para
conjuntos de valores que se
apliquen a varios registros.
Relacione estas tablas con una clave externa
Los registros no deben depender de nada que no sea una clave principal de una tabla, una clave
compuesta si es necesario. Por ejemplo, considere la dirección de un cliente en un sistema de
contabilidad. La dirección se necesita en la tabla Clientes, pero también en las tablas Pedidos, Envíos,
Facturas, Cuentas por cobrar y Colecciones. En lugar de almacenar la dirección de un cliente como una
entrada independiente en cada una de estas tablas, almacénela en un lugar, ya sea en la tabla Clientes
o en una tabla Direcciones independiente.
Tercera Forma Normal
Elimine los campos que no dependan de la cla
Una tabla está normalizada en esta forma si todas las columnas que no son llave
son funcionalmente dependientes por completo de la llave primaria y no hay
dependencias transitivas. Comentamos anteriormente que una dependencia
transitiva es aquella en la cual existen columnas que no son llave que dependen
de otras columnas que tampoco son llave.
Cuando las tablas están en la Tercera Forma Normal se previenen errores de lógica cuando se insertan
o borran registros. Cada columna en una tabla está identificada de manera única por la llave primaria,
y no deben haber datos repetidos. Esto provee un esquema limpio y elegante, que es fácil de trabajar y
expandir.
EXCEPCIÓN: cumplir la tercera forma normal, aunque en teoría es deseable, no siempre es práctico. Si
tiene una tabla Clientes y desea eliminar todas las dependencias posibles entre los campos, debe crear
tablas independientes para las ciudades, códigos postales, representantes de venta, clases de clientes
y cualquier otro factor que pueda estar duplicado en varios registros. En teoría, la normalización
merece el trabajo que supone. Sin embargo, muchas tablas pequeñas pueden degradar el rendimiento
o superar la capacidad de memoria o de archivos abiertos
Puede ser más factible aplicar la tercera forma normal sólo a los datos
que cambian con frecuencia. Si quedan algunos campos dependientes,
diseñe la aplicación para que pida al usuario que compruebe todos los
campos relacionados cuando cambie alguno.
Identifique cada conjunto de datos
relacionados con una clave principal.
Qué es la normalización
La normalización es el proceso mediante el cual se transforman datos complejos a un conjunto de
estructuras de datos más pequeñas, que además de ser más simples y más estables, son más fáciles de
mantener.
También se puede entender la normalización como una serie de reglas que sirven para ayudar a los
diseñadores de bases de datos a desarrollar un esquema que minimice los problemas de lógica. Cada
regla está basada en la que le antecede. La normalización se adoptó porque el viejo estilo de poner
todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y
conducía a errores de lógica cuando se trataban de manipular los datos.
La normalización también hace las cosas fáciles de entender. Los seres humanos tenemos la tendencia
de simplificar las cosas al máximo.
Lo hacemos con casi todo, desde los animales
hasta con los automóviles. Vemos una imagen de
gran tamaño y la hacemos más simple agrupando
cosas similares juntas.
Las guías que la normalización provee crean
el marco de referencia para simplificar una
estructura de datos compleja.
Otra ventaja de la normalización de base de datos es el consumo de espacio. Una base de datos
normalizada ocupa menos espacio en disco que una no normalizada.
Hay menos repetición de datos, lo que tiene como consecuencia un mucho menor uso de espacio en
disco.
El proceso de normalización tiene un nombre y una serie de reglas para cada fase. Esto puede parecer
un poco confuso al principio, pero poco a poco se va entendiendo el proceso, así como las razones para
hacerlo de esta manera.
Grados de normalización
Existen básicamente tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma
Normal (2NF) y Tercera Forma Normal (3NF).
Cada una de estas formas tiene sus propias reglas. Cuando una base de datos se conforma a un nivel,
se considera normalizada a esa forma de normalización. No siempre es una buena idea tener una base
de datos conformada en el nivel más alto de normalización, puede llevar a un nivel de complejidad que
pudiera ser evitado si estuviera en un nivel más bajo de normalización.
Terminología equivalente
relación = tabla o archivo
tupla = registro, fila o renglón
atributo = campo o columna
base de datos = banco de datos
dependencia multivaluada = dependencia multivalor
clave = llave
clave primaria = superclave
clave ajena = clave extranjera o clave foránea
RDBMS = del inglés Relational Data Base Manager System que significa, Sistema Gestor de Base de
Datos Relacionales
Claves
Clave ajena
Cuando se tienen dos tablas o más, una clave ajena es aquella
columna de una tabla que hace referencia a una clave primaria de
otra tabla.
La base de datos no debe conter valores de clave ajena sin
concordancia. Así como los valores de clave primaria
representan identificadores de entidades, las claves ajenas
representan referencia a entidades.
Regla de Integridad Referencial
Por lo general la forma más eficiente y segura para escoger o hacer
la clave primaria es poniendo un número y aumentando éste a
medida que se van añadiendo filas, pero si de casualidad se diera el
caso de que existan varias claves candidatas de las cuales se deba
escoger la clave primaria, esta elección se hace utilizando el sentido
común.
Clave candidata
Son aquellas claves candidatas que no han sido elegidas
Claves alternativas
Es una clave que esta compuesta solo de un atributo
Clave simple
Es una clave que esta compuesta por más de un atributo.
Clave compuesta
Objetivo de la normalización
Evitar la redundancia de los datos.
Evitar problemas de actualización de los datos en las tablas.
Proteger la integridad de los datos.
Cada columna debe tener su nombre único.
No puede haber dos filas iguales. No se permiten los duplicados.
Todos los datos en una columna deben ser del mismo tipo
Organizar los datos en grupos lógicos, de tal manera que cada grupo describa una pequeña parte del
todo.
Minimizar la cantidad de datos duplicados almacenados en una base de datos.
Perfeccionar la organización de los datos de tal manera que, cuando se necesite introducir
modificaciones, el cambio sólo deba aplicarse en un lugar.
Construir una base de datos a la que se pueda acceder de forma rápida y donde sea posible manipular
los datos con la máxima eficiencia y sin comprometer su integridad.