100% encontró este documento útil (1 voto)
297 vistas6 páginas

Normalización de Bases de Datos

El documento describe las primeras, segunda y tercera formas normales de bases de datos relacionales. Explica cómo normalizar una tabla de empleados dividiéndola en tablas separadas para los empleados, puestos y correos electrónicos. Luego describe otro ejemplo con cursos y profesores y cómo normalizarlo en múltiples tablas.

Cargado por

Maria
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
297 vistas6 páginas

Normalización de Bases de Datos

El documento describe las primeras, segunda y tercera formas normales de bases de datos relacionales. Explica cómo normalizar una tabla de empleados dividiéndola en tablas separadas para los empleados, puestos y correos electrónicos. Luego describe otro ejemplo con cursos y profesores y cómo normalizarlo en múltiples tablas.

Cargado por

Maria
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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.

Primera Forma Normal 
NSS
Nombre
Puesto
Salario
Emails
111
Juan Pérez
Jefe de Área
5000
juanp@ecn.es; 
jefe2@ecn.es
222
José
333
adiaz@ecn.es;
333
ana32@gmail.com
444
Edu12@ecn.es
Tercera Forma Normal
En general, tenemos que buscar dependencias trans
Nombr
e
o
Nombre
es
ion
1
Python
Curso-
Python
David 
Acosta
23
01/12/19
2
Fundament
os de Base
de Datos
Fundament
os-Datos-
2
Pedro 
Quiñonez
03/03/20
3
María
Chávez
04/04/20
Segunda Forma Normal
Si detallamos nuestra tabla de Cursos aún podríamos s
2602
Valle
222
201-01
201-02
201-03
Para completar y hacer la primera formal Normal, se deberá eliminar los grupos
repetidos,
Valles
222
42
Facultad
Registro.
Estudiante
Clases
1606
111-01
1606
111-02
1606
111-03
2602
201-01
2602
201-02
2602
201-03

También podría gustarte