Bases de datos
Necesidades
- Persistencia en los datos
- Independencia de datos y procesos
- Reducir redundancia
- Integridad y seguridad en los datos
- Eficiencia
Bases de datos relacionales
Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente.
Se utiliza como lenguaje a SQL
Bases de datos relacionales
Ejemplo del modelo de datos
Notar las claves primarias
Notar las claves foráneas
Notar los tipos de datos
Normalización de bases 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.
Ejemplo completo
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.
Ejemplo completo
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 |
... | ... | ... | ... | ... |
Primera Forma Normal (1FN)
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:
- Duplicar los registros con valores repetidos
- Separar el atributo que viola 1FN en una tabla
Solución 1
Duplicar los registros con valores repetidos
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
Solución 2
Separar el atributo que viola 1FN en una 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 |
... | ... | ... | ... |
Solución 2
Separar el atributo que viola 1FN en una tabla
dni | |
111 | juanp@ecn.es |
111 | jefe2@ecn.es |
222 | jsanchez@ecn.es |
333 | adiaz@ecn.es |
333 | ana32@gmail.com |
... | ... |
Segunda Forma Normal (2FN)
Un esquema está en 2FN si:
- Está en 1FN.
- Todos sus atributos que no son de la clave principal tienen dependencia funcional completa respecto de todas las claves existentes en el esquema. En otras palabras, para determinar cada atributo no clave se necesita la clave primaria completa, no vale con una subclave.
Segunda Forma Normal (2FN)
1ra solución de 1FN
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 |
... | ... | ... | ... |
Segunda Forma Normal (2FN)
1ra solución de 1FN
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 |
... | ... |
Segunda Forma Normal (2FN)
Como vemos, la solución es la misma que la 2da solución de 1FN
Tercera Forma Normal (3FN)
Una relación está en tercera forma normal si, y sólo si:
- está en 2FN
- y, además, cada atributo que no está incluido en la clave primaria no depende transitivamente de la clave primaria.
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
Tercera Forma Normal (3FN)
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 |
... | ... | ... |
Tercera Forma Normal (3FN)
Nuestra tabla derivada:
puesto | salario |
Administrativo | 1500 |
Jefe de área |
3000 |
Uso de id como clave primaria
Actualmente es mejor utilizar un id interno de la base de datos como clave primaria
- Reduce potenciales problemas del mundo real (ej DNIs duplicados)
- Aumenta la eficiencia de las bases de datos.
- Reduce la complejidad del modelo de datos
- Es la base de datos la que se encarga de resolver colisiones o problemas técnicos
Ejercicio
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
Ejercicio
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 |
Documentación complementaria
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
Modelo Entidad-Relación
Herramienta para el modelado de datos que permite representar las entidades relevantes de un sistema de información así como sus interrelaciones y propiedades.
- Se elabora el diagrama (o diagramas) entidad-relación.
- Se completa el modelo con listas de atributos.
Modelo Entidad-Relación
Entidad
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.
Relación
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
Relación
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 |
Relación
Los datos del ejemplo anterior, en 3FN:
Cargo del empleado
ID del cargo | Descripción |
---|---|
001 | Jefe de taller |
002 | Mecánico |
ATRIBUTO
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
Relaciones de Cardinalidad
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.
Uno a uno
Una entidad se relaciona únicamente con otra y viceversa
UNO A Muchos
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
UNO A Muchos
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
Muchos a muchos
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.
Ejercicio
Referencias
http://es.wikipedia.org/wiki/Modelo_entidad-relaci%C3%B3n
http://www.genbetadev.com/bases-de-datos/fundamento-de-las-bases-de-datos-modelo-entidad-relacion
Bases de datos
By Guillermo Nuñez
Bases de datos
- 3,033