Primera Forma Normal
NSS Nombre Puesto Salario Emails
111 Juan Pérez Jefe de Área 5000 juanp@ecn.es;
jefe2@ecn.es
222 José Sánchez Administrador 3000 jsanchez@ecn.es
333 Ana Díaz Administrador 3000 adiaz@ecn.es;
ana32@gmail.com
444 Eduardo Flores Administrador 3000 Edu12@ecn.es
En general, tenemos una relación R con clave primaria K. Si un atributo M viola la
condición de 1FN, tenemos dos opciones (el atributo que viola la condición son los
Emails)
NSS Nombre Puesto Salario Email
111 Juan Pérez Jefe de Área 5000 juanp@ecn.es;
111 Juan Pérez Jefe de Área 5000 jefe2@ecn.es
222 José Sánchez Administrador 3000 jsanchez@ecn.es
333 Ana Díaz Administrador 3000 adiaz@ecn.es;
333 Ana Díaz Administrador 3000 ana32@gmail.com
444 Eduardo Flores Administrador 3000 Edu12@ecn.es
Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva
tabla EMPLEADOS'(a) con clave primaria (nss, email): esto hará que cumplamos
una condición de FN1
Segunda Forma Normal
Para cumplir la 2NF necesitaremos separar las claves candidatas, en este caso
Email y NSS que están incompletas, por lo tanto, se tendrá que hacer dos tablas
con las llaves candidatas, una donde se incluya la clave principal (NSS) y otra
donde se tengan las dos llaves candidatas.
NSS Nombre Puesto Salario
111 Juan Pérez Jefe de Área 5000
222 José Sánchez Administrador 3000
333 Ana Díaz Administrador 3000
444 Eduardo Flores Administrador 3000
NSS EMAIL
111 juanp@ecn.es;
111 jefe2@ecn.es
222 jsanchez@ecn.es
333 adiaz@ecn.es;
333 ana32@gmail.com
444 Edu12@ecn.es
Tercera Forma Normal
En general, tenemos que buscar dependencias transitivas de la clave, es decir,
secuencias de dependencias como la siguiente: K->A y A->B, donde A y B no
pertenecen a la clave. La solución a este tipo de dependencias está en separar en
una tabla adicional N el/los atributos B, y poner como clave primaria de N el
atributo que define la transitividad A.
NSS Nombre Puesto
111 Juan Pérez Jefe de Área
222 José Sánchez Administrador
333 Ana Díaz Administrador
444 Eduardo Flores Administrador
En la nueva tabla PUESTOS, la clave sería el puesto, que también queda como
clave ajena referenciando la tabla EMPLEADOS. El resto de las tablas quedan
como estaban.
Segundo Ejemplo
Primera Forma Normal
ID Curso Slug Autor Material Fecha_Creaci
es on
1 Python Curso- David Acosta 23 01/12/19
Python
2 Fundamento Fundamento Pedro 15 03/03/20
s de Base de s-Datos- Quiñonez
Datos Bases
3 Curso de Curso- María Chávez 19 04/04/20
PostgreSQL PostSQL
Si nos damos cuenta esta tabla no cumple con el requisito que dice que todos los
atributos deben ser atómicos, es decir que debemos descomponerlo en su mínima
expresión. Siguiendo los aspectos a considerar podríamos decir que nuestra tabla
inicial se transformaría a:
ID Curso Slug Primer Segund Material Fecha_Creac
Nombr o es ion
e Nombre
Python Curso- David Acosta 23 01/12/19
1 Python
Fundament Fundament Pedro Quiñon 15 03/03/20
2 os de Base os-Datos- ez
de Datos Bases
Curso de Curso- María Chávez 19 04/04/20
3 PostgreSQ PostSQL
L
Con esto podríamos decir que nuestra tabla cumple con la Primera forma Normal.
Ahora, si nos fijamos esta aun no cumple con los requisitos que pide la Segunda
forma Normal. Se podría crear tablas separadas para los cursos y los profesores y
cada una tendría su clave principal y relacionada con una externa.
Tabla de Cursos:
ID Curso Materiales ID_Autor Fecha
creación
Python 01/12/19
1 23 3
Fundamento 03/03/20
2 s de Base de 15 2
Datos
Curso de 04/04/20
3 PostgreSQL 19 1
Tabla de Autores:
ID Primer Nombre Segundo Nombre Fecha Creación
01/12/19
1 David Acosta
03/03/20
2 Pedro Quiñonez
04/04/20
3 María Chávez
Segunda Forma Normal
Si detallamos nuestra tabla de Cursos aún podríamos simplificarla, para esto
podríamos extraer la columna de materiales y crear una nueva tabla para esto.
ID Nombre Material Slug Curso Fecha
id Creación
01/12/19
1 Operadores Operadores-Python 1
matemáticos en Python
03/03/20
2 Visión General de los Visión-Datos 2
datos
04/04/20
3 Uso de redes en Redes-PostSQL 3
PostSQL
Con esto, nuestra tabla cumpliría con los requisitos de la Tercera forma
normal y estaría lista.
Ejemplo 3
Primer Forma Normal
Estudia Tutor Habitació Clase 1 Clase Clase 3
nte n 2
1606 Sarmiento 438 111-01 111-02 111-03
2602 Valle 222 201-01 201-02 201-03
Para completar y hacer la primera formal Normal, se deberá eliminar los grupos
repetidos, en este caso son las clases.
Estudiante Tutor Habitación Clases
1606 Sarmiento 438 111-01
1606 Sarmiento 438 111-02
1606 Sarmiento 438 111-03
2602 Valle 222 201-01
2602 Valle 222 201-02
2602 Valle 222 201-03
Segunda Forma Normal
Los registros no deben depender de otra cosa que la clave principal de la
tabla, incluida la clave compuesta si es necesario
Estudiante Tutor Habitación Estudiantes
1606 Sarmiento 438
2602 Valles 222 Estudiante Clases
1606 111-01
1606 111-02
1606 111-03
Registros 2602 201-01
2602 201-02
2602 201-03
Tercera Forma Normal
Los valores que no dependen de la clave principal no pertenecen a la tabla
Los campos que no pertenecen a la clave principal colóquelos en una tabla aparte
y relacionen ambas tablas por medio de una clave externa.
Estudiante Tutor
1606 Sarmiento
2602 Valles
Estudiantes
Nombre Habitación Departament
o
Sarmiento 438 42
Valles 222 42
Facultad
Estudiante Clases
1606 111-01
1606 111-02
1606 111-03
2602 201-01
2602 201-02
2602 201-03
Registro.