Documentos de Académico
Documentos de Profesional
Documentos de Cultura
BASE DE DATOS?
Normalización de Base de Datos, es el
proceso de organizar los datos en una
base de datos que incluye la creación de
tablas y el establecimiento de relaciones
entre ellas.
La normalización de una base de datos persigue
varios objetivos, principalmente reducir la
redundancia de datos y simplificar las
dependencias entre columnas, aplicándose de
manera acumulativa. Lo anterior quiere decir que
la segunda forma normal incluye a la primera, la
tercera a la segunda y así sucesivamente.
La aplicación de esta medida no debe ser
considerada como opcional, sino como un paso
necesario para garantizar un diseño de base de
datos de éxito.
Las bases de datos se normalizan para:
Se tiene que crear una nueva tabla con la llave primaria de la tabla base y el grupo repetido .
Tabla alumnos
Solución: Aplicando el concepto de atomicidad y separar el atributo que viola 1FN en una tabla.
Tabla alumnos
Tabla materias
Matricula Materia # Materia
111 Base de Datos 333
111 PSW 444
111 POO 555
222 Base de Datos 333
222 Admón. 666
Segunda forma normal (2FN)
Ahora se aplicara la segunda forma normal por lo que se tiene
que eliminar cualquier columna no llave que no dependa de
la llave primaria de la tabla.
La Segunda Forma Normal nos habla de que cada columna
tabla debe depender de la clave o dicho de otra manera,
todos los atributos no clave deben depender por completo
de la clave primaria.
Eliminar esas columnas de la tabla base.
Crear una nueva tabla con esas columnas y las columnas
de la llave primaria de la cual dependen.
CONCEPTO DE DEPENDENCIA
FUNCIONAL Y DEPENDENCIA
TRANSITIVA.
En una dependencia transitiva el
E
En una dependencia funcional de
acuerdo al cuadro de abajo se atributo 1 depende funcionalmente
racionaliza que para que tanto el de la llave primaria, pero el atributo
atributo 1 como el atributo 2 2 depende del atributo 1, por lo que
dependen funcional mente de la se dice que el atributo 2 depende de
llave primaria, entonces para que la llave primaria solo que de forma
exista el atributo 1 debe existir la transitiva.
llave primaria y lo mismo con el
atributo 2
ATRIBUTO 1 ATRIBUTO 1
ATRIBUTO 2 ATRIBUTO 2
Por lo tanto para la 2FN se debe de tener en cuenta
lo siguiente:
Tabla alumnos
Matricula Nombre Apellido Dirección Teléfono Carrera
111 José Ramos Zapata 100 55668899 Programación
222 Silvia Mores Nogal 3 12345667 Programación
Tabla materias
Matricula Materia # Materia La tabla alumnos esta en 2FN ya que
111 Base de Datos 333 cualquier valor único Matricula determina
111 PSW 444 un solo valor para cada columna por lo
111 POO 555 tanto todas las columnas dependen de la
222 Base de Datos 333 llave primaria Matricula.
222 Admón. 666
Aplicando la Segunda forma normal (2FN)
Tabla materias Analizando la tabla materias nos damos cuenta que la llave
primaria es #Materia, y el atributo Matricula es una llave
foránea, por lo que el atributo Materia depende
Matricula Materia # Materia
funcionalmente de # de Materia ya que esta es la llave
111 Base de Datos 333 primaria.
111 PSW 444
111 POO 555 Sin embargo Materia no depende de Matricula, por lo tanto
222 Base de Datos 333
hay que separar el atributo Matricula en otra tabla sin perder
la relación,
222 Admón. 666
Ahora analizando la tabla alumnos vemos que todos los atributos dependen funcionalmente de la
llave primaria Matricula, sin embargo el atributo Carrera no depende directamente de Matricula, sino
que primero depende del alumno (Nombre) entonces la carrera existe por el alumno el cual no es
una llave , por lo que es una dependencia transitiva, por lo que tenemos que eliminar esta situación,
para lo cual separaremos el atributo Carrera en otra tabla.
Tabla alumnos
Matricula Nombre Apellido Dirección Teléfono Carrera
111 José Ramos Zapata 100 55668899 Programación
222 Silvia Mores Nogal 3 12345667 Programación
Aplicando la Tercera forma normal (3FN)
Tabla alumnos
Matricula Nombre Apellido Dirección Teléfono Carrera
111 José Ramos Zapata 100 55668899 Programación
Tabla alumnos
Matricula Nombre Apellido Dirección Teléfono Id Carrera
Tabla Carrera
Id Carrera Carrera
Si no se cuenta con una llave primaria para carrera Se crea o
789 Programación
se le asigna una. En este caso Id_carrera no se saca de la
456 Computación
tabla alumnos por ser una llave “creada”.
Recapitulando.
alumnos
alumnos
materias
Matricula Materia # Materia
alumnos
relación materias
Matricula Nombre Apellido Dirección Teléfono Id Carrera
Matricula # Materia Materia # Materia
111 José Ramos Zapata 100 55668899 789
111 333 Base de Datos 333
222 Silvia Mores Nogal 3 12345667 789
111 444 PSW 444
POO 555
3FN
Id Carrera Carrera 111 555
carrera 789 Programación 222 333 Base de Datos 333
23022 2/25/03 1072 HORACIO TOLUCA 23345 TAQUETES PLASTICO 1/4 89 0.40
ORDENES
23022 2/25/03 1072 HORACIO TOLUCA 23345 TAQUETES PLASTICO 1/4 89 0.40
23022 2/25/03 1072 HORACIO TOLUCA 23345 TAQUETES PLASTICO 1/4 89 0.40
ORDENES ARTICULOS
ID_ORDEN NUM_ART DESC_ART CANT PRECIO
UNIT ($)
ID_ORDEN FECHA ID_CLIENTE NOM_CLIENTE ESTADO
23011 3678 TORNILLO 3”X1/4 455 3.00
23011 2/23/03 1011 JOSUE OAXACA
23011 4567 PIJA 2”X1/3” 98 1.50
23022 2/25/03 1072 HORACIO TOLUCA
23011 9876 ARANDELA ¼” 45 0.50
23033 2/27/03 1104 ANA YUCATAN
23022 23345 TAQUETES PLASTICO 1/4 89 0.40
ORDENES ARTICULOS
ID_ORDEN FECHA ID_CLIENTE NOM_CLIENTE ESTADO ID_ORDEN NUM_ART DESC_ART CANT PRECIO
UNIT ($)
23011 2/23/03 1011 JOSUE OAXACA
23011 3678 TORNILLO 3”X1/4 455 300
ARTICULOS ARTICULOS_CANTIDAD
23033 1234 PLANTA SOLDAR 2 7000
23022 23345 89
23345 TAQUETES PLASTICO 1/4 0.40
ORDENES 23033 1234 2
1234 PLANTA SOLDAR 7000
ID_ORDEN FECHA ID_CLIENTE
23033 6743 5
6743 GATO HIDRAHULICO 4000
23011 2/23/03 1011 5 TONS.
23011 4567 98
23011 9876 45
23022 23345 89
23033 1234 2
23033 6743 5
ARTICULOS
ORDENES CLIENTE
NUM_ART DESC_ART PRECIO
UNIT ($)
ID_ORDEN FECHA ID_CLIENTE ID_CLIENTE NOM_CLIENTE ESTADO 3678 TORNILLO 3”X1/4 300
23011 2/23/03 1011 1011 JOSUE OAXACA 4567 PIJA 2”X1/3” 150
23033 2/27/03 1104 1104 ANA YUCATAN 23345 TAQUETES PLASTICO 1/4 40
POR LA SEGUNDA FORMA NORMAL SE OBERVA QUE SE CONFORMO LA TABLA ARTICULOS_CANTIDAD, Y SE OBSERVA QUE EL
ATRIBUTO “CANT” DEPENDE DE ID_ORDEN PARA EXISTIR Y SE PUEDE PENSAR QUE DICHO ATRIBUTO SE PUEDE MOVER A LA TABLA
ORDENES, SIN EMBARGO NO ES NECESARIO YA QUE SI OBSERVAMOS EN LA TABLA ARTICULOS_CANTIDAD TENEMOS QUE DESPUES
DE NUESTRO ANALISIS HAY DOS LLAVES FORANEAS DE LAS CUALES UNA ES ID_ORDEN, Y CON ESTO SE LOGRA LA DEPENDENCIA ENTRE
“CANT” E ID_ORDEN”.
DEPENDENCIA FUNCIONAL
ARTICULOS
ARTICULOS_CANTIDAD
NUM_ART DESC_ART PRECIO
ORDENES ID_ORDEN NUM_ART CANT UNIT ($)
3678 TORNILLO 3”X1/4 300
ID_ORDEN FECHA ID_CLIENTE 23011 3678 455
9876 ARANDELA ¼” 50
23022 2/25/03 1072 23011 9876 45
Cliente
nss nombre apellido puesto salario emails
Cliente Mails
nss nombre apellido puesto salario nss emails
333 adiaz@ecn.es;
333 ana32@gmail.com
Aplicando la 2FN.
Para la aplicación de la 2FN podemos observar que tanto para la tabla mails como
la tabla Cliente no se aplica, ya que en Cliente esta en 2FN ya que cualquier valor
único nss determina un solo valor para cada columna por lo tanto todas las columnas
dependen de la llave primaria Matricula.
Cliente Mails
nss nombre apellido puesto salario nss emails
333 adiaz@ecn.es;
333 ana32@gmail.com
Aplicando la 3FN.
Para la aplicación de la 3FN podemos observar que tanto para la tabla mails esta en
3FN, pero la tabla Cliente los campos o columnas nombre y apellido dependen de la
llave primaria nss, pero las columnas puesto y salario depende de la columna
nombre para existir por lo que es una dependencia transitiva, por lo que hay que
sacar dichas columnas con la respectiva llave primaria de la tabla original para crear
la relación así como crear una nueva llave primaria para la nueva tabla.
Cliente Mails nss emails
333 ana32@gmail.com
puesto Cliente
nss Id_puesto puesto salario nss nombre apellido
Libro
Cod_Libro Titulo Autor Editorial Nombre_Lector Fecha_Dev
1001 Variable compleja Murray Spiegel McGraw Hill Pérez Gómez, Juan 15/04/2005
1006 Oracle University Priya Nathan Oracle Corp. García Roque, Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez, Juan 18/04/2005
APLICANDO LA 1FN.
Libro
Cod_Libro Titulo Autor Editorial Nombre_Lector Fecha_Dev
1001 Variable compleja Murray Spiegel McGraw Hill Pérez Gómez, Juan 15/04/2005
1006 Oracle University Priya Nathan Oracle Corp. García Roque, Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez, Juan 18/04/2005
APLICANDO LA 1FN.
Libro
Cod_Libro Titulo Autor Editorial Apellido_Pat Apellido_Mat Nombre Fecha_Dev
1001 Variable compleja Murray Spiegel McGraw Hill Pérez Gómez Juan 15/04/2005
1006 Oracle University Priya Nathan Oracle Corp. García Roque Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez Juan 18/04/2005
APLICANDO LA 2FN.
los atributos no clave deben depender por completo de la clave primaria
Libro
Cod_Libro Titulo Autor Editorial Apellido_Pat Apellido_Mat Nombre Fecha_Dev
1001 Variable compleja Murray Spiegel McGraw Hill Pérez Gómez Juan 15/04/2005
1006 Oracle University Priya Nathan Oracle Corp. García Roque Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez Juan 18/04/2005
APLICANDO LA 2FN.
los atributos no clave deben depender por completo de la clave primaria
Libro Lector
Cod_Lector Apellido_Pat Apellido_Mat Nombre
Cod_Libro Titulo Autor Editorial
1001 Variable compleja Murray Spiegel McGraw Hill 1001 Pérez Gómez Juan
1006 Oracle University Priya Nathan Oracle Corp. 1006 García Roque Luis
1007 Clipper 5.01 Ramalho McGraw Hill 1007 Pérez Gómez Juan
El análisis es el siguiente, el titulo depende de Cod_Libro para existir sin embargo Autor y
Editorial dependen de Titulo que a su vez depende de Cod_Libro para que existan o
funciones por lo que hay que sacarlos de dicha tabla, visto de otra forma existe un solo
titulo y único para cada Cod_Libro, sin embargo un Autor puede escribir varios Títulos, y a
su vez una editorial puede tener también varios títulos y varios autores.
APLICANDO LA 3FN.
no deben existir dependencias transitivas entre las columnas de una tabla.
Libro Autor Editorial
Cod_Libro Titulo Cod_Autor Autor Cod_Edit Editorial
1001 Variable compleja 801 Murray Spiegel 901 McGraw Hill
1004 Visual Basic 5 802 E. Petroustsos 902 Anaya
1005 Estadística 803 Murray Spiegel 903 Oracle Corp.
1006 Oracle University 804 Priya Nathan
El análisis es el siguiente, el titulo depende de Cod_Libro para existir sin embargo Autor y
Editorial dependen de Titulo que a su vez depende de Cod_Libro para que existan o
funciones por lo que hay que sacarlos de dicha tabla, visto de otra forma existe un solo
titulo y único para cada Cod_Libro, sin embargo un Autor puede escribir varios Títulos, y a
su vez una editorial puede tener también varios títulos y varios autores.
APLICANDO LA 3FN.
no deben existir dependencias transitivas entre las columnas de una tabla.
Libro Autor Editorial
Cod_Libro Titulo Cod_Autor Autor Cod_Edit Editorial
1001 Variable compleja 801 Murray Spiegel 901 McGraw Hill
1004 Visual Basic 5 802 E. Petroustsos 902 Anaya
1005 Estadística 803 Murray Spiegel 903 Oracle Corp.
1006 Oracle University 804 Nancy Greenberg y
Priya Nathan
Sin embargo de las tablas creadas se ha perdido la relación por lo que hay que
relacionar cada libro con los autores y con sus editoriales.
APLICANDO LA 3FN.
no deben existir dependencias transitivas entre las columnas de una tabla.
Libro-Autor Libro-Editorial
Cod_Libro Cod_Autor Cod_Libro Cod_Edit
Sin embargo de las tablas creadas se ha perdido la relación por lo que hay que
relacionar cada libro con los autores y con sus editoriales.
FIN EJERCICIOS.