[Php-avanzado] Ejercicios de Normalización - Clase 8

Jesica Billia jesicabillia en hotmail.com
Dom Mayo 30 16:04:25 ART 2010




apunte - 2da parte---------------------

Primera forma normal (1NF)

Se dice que una tabla se encuentra en
primera forma normal (1NF) si y solo si cada uno de los campos contiene un
único valor para un registro determinado. Supongamos que deseamos realizar una
tabla para guardar los cursos que están realizando los alumnos de un
determinado centro de estudios, podríamos considerar el siguiente diseño:




 
  
  Código
  
  
  Nombre
  
  
  Cursos
  
 
 
  
  1
  
  
  Marcos
  
  
  Inglés
  
 
 
  
  2
  
  
  Lucas
  
  
  Contabilidad,
  Informática
  
 
 
  
  3
  
  
  Marta
  
  
  Inglés,
  Contabilidad
  
 




Podemos observar que el registro de
código 1 si cumple la primera forma normal, cada
campo del registro contiene un único dato, pero no ocurre así con los
registros 2 y 3 ya que en el campo cursos contiene más de un dato cada uno. La
solución en este caso es crear dos tablas del siguiente modo:

Tabla A




 
  
  Código
  
  
  Nombre
  
 
 
  
  1
  
  
  Marcos
  
 
 
  
  2
  
  
  Lucas
  
 
 
  
  3
  
  
  Marta
  
 




 

Tabla B




 
  
  Código
  
  
  Curso
  
 
 
  
  1
  
  
  Inglés
  
 
 
  
  2
  
  
  Contabilidad
  
 
 
  
  2
  
  
  Informática
  
 
 
  
  3
  
  
  Inglés
  
 
 
  
  3
  
  
  Informática
  
 




Como se puede comprobar ahora todos
los registros de ambas tablas contienen valores únicos en sus campos, por lo
tanto ambas tablas cumplen la primera forma normal.

Una vez normalizada la tabla en 1NF, podemos
pasar a la segunda forma normal.

Segunda
forma normal (2NF)

La segunda forma normal compara todos
y cada uno de los campos de la tabla con la clave definida. Si todos los campos dependen directamente de la clave
se dice que la tabla está es segunda forma normal (2NF).

Supongamos que construimos una tabla
con los años que cada empleado ha estado trabajando en cada departamento de una
empresa:




 
  
  Código
  Empleado
  
  
  Código
  Dpto.
  
  
  Nombre
  
  
  Departamento
  
  
  Años
  
 
 
  
  1
  
  
  6
  
  
  Juan
  
  
  Contabilidad
  
  
  6
  
 
 
  
  2
  
  
  3
  
  
  Pedro
  
  
  Sistemas
  
  
  3
  
 
 
  
  3
  
  
  2
  
  
  Sonia
  
  
  I+D
  
  
  1
  
 
 
  
  4
  
  
  3
  
  
  Verónica
  
  
  Sistemas
  
  
  10
  
 
 
  
  2
  
  
  6
  
  
  Pedro
  
  
  Contabilidad
  
  
  5
  
 




Tomando como punto de partida que la
clave de esta tabla está formada por los campos código de empleado y código de
departamento, podemos decir que la tabla se encuentra en primera forma normal,
por tanto vamos a estudiar la segunda:

1.    
El campo nombre no
depende funcionalmente de toda la clave, sólo depende del código del empleado.

2.    
El campo
departamento no depende funcionalmente de toda la clave, sólo del código del
departamento.

3.    
El campo años si
que depende funcionalmente de la clave ya que depende del código del empleado y
del código del departamento (representa el número de años que cada empleado ha
trabajado en cada departamento)

Por tanto, al no depender todos los
campos de la totalidad de la clave la tabla no está en segunda forma normal, la
solución es la siguiente:

Tabla A




 
  
  Código
  Empleado
  
  
  Nombre
  
 
 
  
  1
  
  
  Juan
  
 
 
  
  2
  
  
  Pedro
  
 
 
  
  3
  
  
  Sonia
  
 
 
  
  4
  
  
  Verónica
  
 




 

Tabla B




 
  
  Código
  Departamento
  
  
  Dpto.
  
 
 
  
  2
  
  
  I+D
  
 
 
  
  3
  
  
  Sistemas
  
 
 
  
  6
  
  
  Contabilidad
  
 




 

Tabla C




 
  
  Código
  Empleado
  
  
  Código
  Departamento
  
  
  Años
  
 
 
  
  1
  
  
  6
  
  
  6
  
 
 
  
  2
  
  
  3
  
  
  3
  
 
 
  
  3
  
  
  2
  
  
  1
  
 
 
  
  4
  
  
  3
  
  
  10
  
 
 
  
  2
  
  
  6
  
  
  5
  
 




Podemos observar que ahora si se
encuentras las tres tabla en segunda forma normal, considerando que la tabla A
tiene como índice el campo Código Empleado, la tabla B Código Departamento y la
tabla C una clave compuesta por los campos Código Empleado y Código
Departamento.

 		 	   		  
_________________________________________________________________
Diseñar aplicaciones tiene premio. ¡Si eres desarrollador no esperes más!
http://www.imaginemobile.es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-avanzado/attachments/20100530/add2ac0f/attachment-0001.htm 


Más información sobre la lista de distribución Php-avanzado