Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente.
Ejemplo del modelo de datos
La normalización de bases de datos relacionales toma un esquema relacional y le aplica un conjunto de técnicas para producir un nuevo esquema que representa la misma información pero contiene menos redundancias y evita posibles anomalías en las inserciones, actualizaciones y borrados.
El proceso de normalización consiste en comprobar en secuencia si el esquema original está en 1ra Forma Normal, 2da Forma Normal y 3ra Forma Normal, analizando las dependencias funcionales en cada paso.
Tenemos una empresa pública donde los puestos de trabajo están regulados por el Estado, de modo que las condiciones salariales están determinadas por el puesto. Se ha creado el siguiente esquema relacional
EMPLEADOS(dni, nombre, puesto, salario, emails) con dni como clave primaria.
dni | nombre | puesto | salario | emails |
111 | Juan Pérez | Jefe de Área | 3000 | juanp@ecn.es; jefe2@ecn.es |
222 | José Sánchez | Administrativo | 1500 | jsanchez@ecn.es |
333 | Ana Díaz | Administrativo | 1500 | adiaz@ecn.es; ana32@gmail.com |
... | ... | ... | ... | ... |
Una tabla está en 1FN si sus atributos contienen valores atómicos. En el ejemplo, podemos ver que el atributo emails puede contener más de un valor, por lo que viola 1FN.
Tenemos dos opciones:
dni | nombre | puesto | salario | |
111 | Juan Pérez | Jefe de Área | 3000 | juanp@ecn.es |
111 | Juan Pérez | Jefe de Área | 3000 | jefe2@ecn.es |
333 | Ana Díaz | Administrativo | 1500 | ana32@gmail.com |
... | ... | ... | ... | ... |
La clave primaria ahora sería dni + email
dni | nombre | puesto | salario |
111 | Juan Pérez | Jefe de Área | 3000 |
222 | José Sánchez | Administrativo | 1500 |
333 | Ana Díaz | Administrativo | 1500 |
... | ... | ... | ... |
dni | |
111 | juanp@ecn.es |
111 | jefe2@ecn.es |
222 | jsanchez@ecn.es |
333 | adiaz@ecn.es |
333 | ana32@gmail.com |
... | ... |
Un esquema está en 2FN si:
Nombre, puesto y salario dependen sólo de dni, no de email, por lo que email se puede sacar a otra tabla
dni | nombre | puesto | salario |
111 | Juan Pérez | Jefe de Área | 3000 |
222 | José Sánchez | Administrativo | 1500 |
333 | Ana Díaz | Administrativo | 1500 |
... | ... | ... | ... |
la tabla derivada nos quedaría:
dni | |
111 | juanp@ecn.es |
111 | jefe2@ecn.es |
222 | jsanchez@ecn.es |
333 | adiaz@ecn.es |
333 | ana32@gmail.com |
... | ... |
Como vemos, la solución es la misma que la 2da solución de 1FN
Una relación está en tercera forma normal si, y sólo si:
Por lo tanto, a partir de un esquema en 2FN, tenemos que buscar dependencias funcionales entre atributos que no estén en la clave.
Es decir, datos repetidos que podemos colocar en otra tabla, y que se accedan a ellos por propiedad transitiva
Si en nuestro ejemplo asuminos que el salario depende del puesto, podemos normalizarlo así:
nss | nombre | puesto |
111 | Juan Pérez | Jefe de Área |
222 | José Sánchez | Administrativo |
333 | Ana Díaz | Administrativo |
... | ... | ... |
Nuestra tabla derivada:
puesto | salario |
Administrativo | 1500 |
Jefe de área |
3000 |
Actualmente es mejor utilizar un id interno de la base de datos como clave primaria
Dada la siguiente relación:
PRÉSTAMO_LIBROS (Colegio, ProfesorInfantil, Asignatura_Habilidades, Aula, Curso, Libro, Editorial, Fecha_Préstamo) que contiene información relativa a los préstamos que realizan las editoriales a los profesores de primaria de los colegios para su evaluación en alguna de las asignaturas/habilidades que imparten.
Resolver en las 3 Formas Normales
Colegio | Profesor |
Asignatura | Aula | Curso | Libro | Editorial | Préstamo |
---|---|---|---|---|---|---|---|
Cervantes | Juan Pérez | Pensamiento Lógico |
1.A01 | 1º | Aprender y enseñar en Educación Infantil | Graó | 9/9/2012 |
Cervantes | Juan Pérez | Escritura | 1.A01 | 1º | Preescolar Rubio, N6 | Rubio |
4/6/2013 |
Cervantes | Juan Pérez | Pensamiento Numérico |
1.A01 | 1º | Aprender y enseñar en Educación Infantil | Graó | 5/8/2012 |
Cervantes | Alicia García |
Pensamiento Espacial |
1.B01 | 1º | Educación Infantil N9 | Prentice Hall |
1/3/2014 |
Cervantes | Alicia García | Pensamiento Numérico |
1.B01 | 1º | Aprender y enseñar en Educación Infantil | Graó | 12/9/2010 |
Cervantes | Andrés Fernández |
Escritura | 1.A01 | 2º | Aprender y enseñar en Educación Infantil | Graó | 22/6/2014 |
Cervantes | Andrés Fernández | Inglés | 1.A01 | 2º | Saber Educar: Guía para Padres y Profesores |
Temas de Hoy |
20/1/2012 |
Quevedo | Juan Méndez |
Pensamiento Lógico | 2.B01 | 1º | Saber Educar: Guía para Padres y Profesores | Temas de Hoy |
8/3/2013 |
Quevedo | Juan Méndez | Pensamiento Numérico | 2.B01 | 1º | Aprender y enseñar en Educación Infantil | Graó | 6/5/2013 |
http://www.lsi.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf
http://es.wikipedia.org/wiki/Normalización_de_bases_de_datos
http://www.lsi.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf
Ejercicios varios: http://www.slideshare.net/kemotox/gua-de-ejercicios-24995296
Herramienta para el modelado de datos que permite representar las entidades relevantes de un sistema de información así como sus interrelaciones y propiedades.
Las entidades representan cosas u objetos (ya sean reales o abstractos), que se diferencian claramente entre sí.
Estas entidades se representan en un diagrama con un rectángulos, como los siguientes.
Es un vínculo que nos permite definir una dependencia entre varias entidades, es decir, nos permite exigir que varias entidades compartan ciertos atributos de forma indispensable.
La relación se representa con un rombo, uniendo entidades mediante líneas
Los datos del ejemplo anterior, en 3FN:
Empleados
Nombre | DNI | Cargo |
---|---|---|
Carlos Sánchez | 45338600L | 001 |
Pepe Sánchez | 02405068K | 002 |
Juan Sánchez | 40588860J | 002 |
Los datos del ejemplo anterior, en 3FN:
Cargo del empleado
ID del cargo | Descripción |
---|---|
001 | Jefe de taller |
002 | Mecánico |
Los atributos definen o identifican las características de entidad (es el contenido de esta entidad). Cada entidad contiene distintos atributos, que dan información sobre esta entidad.
En el ejemplo anterior, serían las columnas
Se representa como un listado de nombres de atributos dentro de la caja de la entidad
Podemos encontrar distintos tipos de relaciones según como participen en ellas las entidades. Es decir, en el caso anterior cada empleado puede tener un cargo, pero un mismo cargo lo pueden compartir varios empleados.
Esto complementa a las representaciones de las relaciones, mediante un intervalo en cada extremo de la relación que especifica cuantos objetos o cosas (de cada entidad) pueden intervenir en esa relación.
Una entidad se relaciona únicamente con otra y viceversa
determina que un registro de una entidad puede estar relacionado con varios de otra entidad, pero en esta entidad existir solo una vez. Como ha sido en el caso anterior del trabajador del taller.
1
1
determina que un registro de una entidad puede estar relacionado con varios de otra entidad, pero en esta entidad existir solo una vez. Como ha sido en el caso anterior del trabajador del taller.
N
1
determina que una entidad puede relacionarse con otra con ninguno o varios registros y viceversa. Por ejemplo, en el taller un coche puede ser reparado por varios mecánicos distintos y esos mecánicos pueden reparar varios coches distintos.