1. John Denis Suarez Ortiz
Dorvin Eduardo Bardales Lucana
Normalización
BASE DE DATOS I
Ingeniería de Sistemas y Telemática
http://heroepatriota.blogspot.com
Ing. Marco Aurelio Porro Chulli
http://jhonsuarezortiz.blogspot.com
2. Dependencia funcional
Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si se conoce el valor
de DNI tiene una conexión con Apellido o Nombre.
Dependencia funcional reflexiva
Si "y" está incluido en "x" entonces x y
A partir de cualquier atributo o conjunto de atributos siempre puede deducirse él mismo. Si la dirección o el
nombre de una persona están incluidos en el DNI, entonces con el DNI podemos determinar la dirección o
su nombre.
3. Dependencia funcional Aumentativa
DNI nombre
DNI,dirección nombre,dirección
Si con el DNI se determina el nombre de una persona, entonces con el DNI más la
dirección también se determina el nombre y su dirección.
Dependencia funcional transitiva
4. Sean X, Y, Z tres atributos (o grupos de atributos) de la misma entidad. Si Y depende
funcionalmente de X y Z de Y, pero X no depende funcionalmente de Y, se dice entonces que
Z depende transitivamente de X. Simbólicamente sería:
X Y Z entonces X Z
Entonces tenemos que FechaDeNacimiento determina a Edad y la Edad determina a Conducir,
indirectamente podemos saber a través de FechaDeNacimiento a Conducir (En muchos países,
una persona necesita ser mayor de cierta edad para poder conducir un automóvil, por eso se
utiliza este ejemplo).
5. Una clave primaria es aquella columna (o conjunto de columnas) que identifica unívocamente a cada fila. La
clave primaria es un identificador que va a ser siempre único para cada fila. Se acostumbra a poner la clave
primaria como la primera columna de la tabla pero es más una conveniencia que una obligación. Muchas
veces la clave primaria es numérica auto-incrementada, es decir, generada mediante una secuencia
numérica incrementada automáticamente cada vez que se inserta una fila.
En una tabla puede que tengamos más de una columna que puede ser clave primaria por sí misma. En ese
caso se puede escoger una para ser la clave primaria y las demás claves serán claves candidatas.
Una clave ajena (foreign key o clave foránea) es aquella columna que existiendo como dependiente en una
tabla, es a su vez clave primaria en otra tabla.
Claves
6. Una clave alternativa es aquella clave candidata que no ha sido seleccionada como clave primaria, pero
que también puede identificar de forma única a una fila dentro de una tabla. Ejemplo: Si en una tabla
clientes definimos el número de documento (id_cliente) como clave primaria, el número de seguro social
de ese cliente podría ser una clave alternativa. En este caso no se usó como clave primaria porque es
posible que no se conozca ese dato en todos los clientes.
Una clave compuesta es una clave que está compuesta por más de una columna.
La visualización de todas las posibles claves candidatas en una tabla ayudan a su optimización. Por
ejemplo, en una tabla PERSONA podemos identificar como claves su DNI, o el conjunto de su nombre,
apellidos, fecha de nacimiento y dirección. Podemos usar cualquiera de las dos opciones o incluso todas a
la vez como clave primaria, pero es mejor en la mayoría de sistemas la elección del menor número de
columnas como clave primaria.
Claves
7. Básicamente, las reglas de Normalización están encaminadas a eliminar redundancias e
inconsistencias de dependencia en el diseño de las tablas. Tienes que tener en cuenta que
debes crear una BD funcional y eficiente.
NORMALIZACIÓN CERO:
FORMAS DE NORMALIZACIÓN
8. Primer nivel de Formalización/Normalización. (F/N)
1. Eliminar los grupos repetitivos de las tablas individuales.
2. Crear una tabla separada por cada grupo de datos relacionados.
3. Identificar cada grupo de datos relacionados con una clave primaria.
Ahora diremos que nuestra tabla está en el primer nivel de F/N. Hemos solucionado el problema de
la limitación del campo url. Pero sin embargo vemos otros problemas. Cada vez que introducimos un
nuevo registro en la tabla usuarios, tenemos que duplicar el nombre de la empresa y del usuario.
9. Segundo nivel de F/N
1. Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros.
2. Relacionar estas tablas mediante una clave externa.
Hemos creado tablas separadas y la clave primaria en la tabla usuarios, userId, está relacionada
ahora con la clave externa en la tabla urls.
10. Tercer nivel de F/N.
Eliminar aquellos campos que no dependan de la clave.
11. Relaciones entre los Datos
Antes de definir el cuarto nivel de F/N, veremos tres tipos de relaciones entre los datos: uno-a-uno, uno-con-
varios y varios-con-varios. Por un momento imaginemos que ponemos el campo url en una tabla separada, y
cada vez que introducimos un registro en la tabla usuarios también introducimos una sola fila en la tabla urls.
Entonces tendríamos una relación uno-a-uno: cada fila en la tabla usuarios tendría exactamente una fila
correspondiente en la tabla urls. Para los propósitos de nuestra aplicación no sería útil la normalización.
Las tablas en el ejemplo del Segundo Nivel de F/N. Nuestras tablas permiten a un sólo usuario tener asociadas
varias urls. Esta es una relación uno- con-varios, el tipo de relación más común, y hasta que se nos presentó el
dilema del Tercer Nivel de F/N. la única clase de relación que necesitamos.
La relación varios-con-varios, sin embargo, es ligeramente más compleja. En el ejemplo del Tercer Nivel de F/N
que tenemos a un usuario relacionado con varias urls.
12. Para disminuir la duplicación de los datos (este proceso nos llevará al Cuarto Nivel de
F/N), hemos creado una tabla que sólo tiene claves externas y primarias url_elations.
13. Cuarto Nivel de F/N.
1. En las relaciones varios-con-varios, entidades independientes no pueden ser almacenadas en la
misma tabla.
Ya que sólo se aplica a las relaciones varios-con-varios, la mayoria de los desarrolladores pueden
ignorar esta regla de forma correcta. Pero es muy útil en ciertas situaciones, tal como está. Hemos
optimizado nuestra tabla urls eliminado duplicados y hemos puesto las relaciones en su propia tabla.
Ejemplo:
SELECT nombre, url FROM usuarios, urls, url_relations WHERE url_relations.relatedUserId = 1 AND
usuarios.userId = 1 AND urls.urlId = url_relations.relatedUrlId
Y si queremos recorrer todas las urls de cada uno de los usuarios, hariamos algo así:
SELECT nombre, url FROM usuarios, urls, url_relations WHERE usuarios.userId =
url_relations.relatedUserId AND urls.urlId = url_relations.relatedUrlId
14. Quinto Nivel de F/N.
Existe otro nivel de normalización que se aplica a veces, pero es de hecho algo esotérico y en la mayoría de
los casos no es necesario para obtener la mejor funcionalidad de nuestra estructura de datos o aplicación.
Su principio sugiere:
1. La tabla original debe ser reconstruida desde las tablas resultantes en las cuales ha sido troceada.
Los beneficios de aplicar esta regla aseguran que no has creado ninguna columna extraña en tus tablas y
que la estructura de las tablas que has creado sea del tamaño justo que tiene que ser. Es una buena
práctica aplicar esta regla, pero a no ser que estés tratando con una extensa estructura de datos
probablemente no la necesitarás.
15. RESUMEN
La normalización es una técnica que se utiliza para crear relaciones lógicas apropiadas entre tablas de
una base de datos. Ayuda a prevenir errores lógicos en la manipulación de datos. La normalización facilita
también agregar nuevas columnas sin romper el esquema actual ni las relaciones.
Existen varios niveles de normalización: Primera Forma Normal, Segunda Forma Normal, Tercera Forma
Normal, Forma Normal Boyce-Codd, Cuarta Forma Normal, Quinta Forma Normal o Forma Normal de
Proyección-Unión, Forma Normal de Proyección-Unión Fuerte, Forma Normal de Proyección-
Unión Extra
Fuerte y Forma Normal de Clave de Dominio. Cada nuevo nivel o forma nos acerca más a hacer una
base de datos verdaderamente relacional.
Se discutieron las primeras tres formas. Éstas proveen suficiente nivel de normalización para cumplir con
las necesidades de la mayoría de las bases de datos. Normalizar demasiado puede conducir a tener una
base de datos ineficiente y hacer a su esquema demasiado complejo para trabajar. Un balance
apropiado de sentido común y práctico puede ayudarnos a decidir cuándo normalizar.
16. SUMMARY
Normalization is a technique that is used to create appropriate between tables in a database logical
relationships. It helps prevent logical errors in data manipulation. Normalization also easy to add new
columns without breaking the current scheme or relationships.
There are several levels of normalization: First Normal Form Second Normal Form, Third Normal Form,
Normal Form Boyce-Codd, Fourth Normal Form, Quinta Normal Form or Normal Form Projection-Union,
Normal Form Projection-Union Strong, Normal Form projection-Union Extra Strong and Normal Form
Domain Key. Each new level or form brings us closer to making a truly relational data base.
the first three forms discussed. They provide sufficient level standardization to meet the needs of most
databases. Normalize too much can lead to inefficient have a base of data and make her too complex to
work scheme. A proper balance of common sense can help us practical decide when to normalize.
17. Recomendaciones
Siempre tener en cuenta las reglas de normalización en una base de datos, cada regla se denomina una
forma normal. Si se cumple la primera regla, se dice que esta en la primera forma normal. Si se cumplen
las tres primeras reglas la base de Datos se considera que esta en la tercera forma normal aunque son
posibles otros niveles de normalización la tercera forma se considera el máximo nivel
Apreciación del Equipo
Mientras mas normalizada este la base de datos este será mas flexible al eliminar la redundancia y
las dependencias incoherentes.
Conclusiones
La normalización permite evitar la redundancia de los datos, evitar los problemas de actualización
de los datos en las tablas, proteger la integridad de los datos.
18. GLOSARIO
Axiomas de Armstrong: Eliminación de dependencias redundantes. Obtención de claves.
Normal Form (NF): Forma normal.
BIBLIOGRAFÍA
https://www.cs.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf
http://www.eet2mdp.edu.ar/alumnos/MATERIAL/MATERIAL/info/infonorma.pdf
http://www.galeon.com/nevifi/Archivos/Normalizacion.pdf
http://biblioteca.uns.edu.pe/saladocentes/archivoz/publicacionez/2011_normalizacion_bd.pdf