Clase6

=media type="youtube" key="vIlidpG_kRM" width="425" height="350"= =El Modelo de Datos Entidad-Relación (E/R)= Cuando se utiliza una base de datos para gestionar información, se está plasmando una parte del mundo real en una serie de tablas, registros y campos ubicados en un ordenador; creándose un modelo parcial de la realidad. Antes de crear físicamente estas tablas en el ordenador se debe realizar un modelo de datos. Se suele cometer el error de ir creando nuevas tablas a medida que se van necesitando, haciendo así el modelo de datos y la construcción física de las tablas simultáneamente. El resultado de esto acaba siendo un sistema de información parcheado, con datos dispersos que terminan por no cumplir adecuadamente los requisitos necesarios.

Entidades y Relaciones
El modelo de datos más extendido es el denominado ENTIDAD/RELACIÓN (E/R) En el modelo E/R se parte de una situación real a partir de la cual se definen __**entidades**__ y __**relaciones**__ entre dichas entidades:
 * **Entidad**.- Objeto del mundo real sobre el que queremos almacenar información (Ej: una persona). Las entidades están compuestas de //atributos// que son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección,...). De entre los atributos habrá uno o un conjunto de ellos que no se repite; a este atributo o conjunto de atributos se le llama **//clave//**de la entidad, (para la entidad persona una clave seria DNI). En toda entidad siempre hay al menos una clave que en el peor de los casos estará formada por todos los atributos de la tabla. Ya que pueden haber varias claves y necesitamos elegir una, lo haremos atendiendo a estas normas:
 * **Que sea única**.
 * **Que se tenga pleno conocimiento de ella**.- ¿Por qué en las empresas se asigna a cada cliente un número de cliente?.
 * **Que sea mínima**, ya que será muy utilizada por el gestor de base de datos.
 * **Relación**.- Asociación entre entidades, sin existencia propia en el mundo real que estamos modelando, pero necesaria para reflejar las interacciones existentes entre entidades. Las relaciones pueden ser de tres tipos:
 * **Relaciones 1-1**.- Las entidades que intervienen en la relación se asocian una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la relación MATRIMONIO).
 * **Relaciones 1-n**.- Una ocurrencia de una entidad está asociada con muchas (n) de otra (Ej: la entidad EMPERSA, la entidad TRABAJADOR y entre ellos la relación TRABAJAR-EN).
 * **Relaciones n-n**.-Cada ocurrencia, en cualquiera de las dos entidades de la relación, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la entidad ALUMNO, la entidad EMPRESA y entre ellos la relación MATRÍCULA).

Representación gráfica de Entidades y Relaciones
Para asimilar fácilmente un diseño de datos cuando se emplea el modelo E/R se utilizan los siguientes elementos gráficos:

La utilización de estos elementos dará como resultado lo que se denomina el __esquema entidad-relación__ de la base de datos. Los ejemplos que se incluyen en el apartado anterior, gráficamente quedarían como sigue:

¿Cómo se pasa del esquema E/R a las tablas?
Para cada entidad del esquema se creará una tabla con tantos campos como atributos tenga la entidad. Ejemplo:

Tabla 'TRABAJADOR'
|| **DNI** Las relaciones **1-1** se pueden reflejar incluyendo en una de las dos tablas un campo en el que poder colocar la **clave** del elemento de la otra tabla con el que se está relacionado. Ese nuevo campo que se incluye en la tabla recibe el nombre de **clave ajena**. Ejemplo:
 * **NUM_SS** || **nombre-apellidos** || **...** ||
 * 11111111 || XXXXXXXXXXX || Fulano de tal || ... ||
 * 22222222 || YYYYYYYYYYY || Mengano de cual || ... ||

Tabla 'HOMBRE'
|| **DNI**
 * **Nombre** || **...** ||
 * 11111111 || ... || ... ||
 * 22222222 || ... || ... ||

Tabla 'MUJER'
|| **DNI** Donde el campo **DNI-ESPOSO** es **clave ajena** de la tabla **HOMBRE**. Aquí hay que hacer notar que el campo **DNI-ESPOSO** puede tomar o bien un valor nulo, en el caso de aquellas mujeres que no estén casadas, o bien el valor de alguno de los **DNI** de la tabla **HOMBRE**, en el caso de las mujeres casadas; en este segundo caso, ese **DNI** (la clave ajena) no se deberá repetir en ningún otro registro de la tabla **MUJER**. Las relaciones **1-n** se representan de forma muy parecida a como se ha explicado para las relaciones 1-1. La diferencia está en que ahora no es indiferente donde se coloque la **clave ajena**, esta debe estar obligatoriamente en la tabla del '//mucho//' (n); y además, para este caso si se permitirá que haya valores repetidos en dicho campo. Ejemplo:
 * **Nombre** || **...** || **DNI-ESPOSO** ||
 * 33333333 || ... || ... || 11111111 ||
 * 44444444 || ... || ... || (nulo) ||

Tabla 'EMPRESA'
|| **CIF**
 * **Nombre** || **...** ||
 * XX-1111-AA || ... || ... ||
 * YY-2222-BB || ... || ... ||

Tabla 'TRABAJADOR'
|| **DNI** Para representar las relaciones **n-n** en tablas lo que se hace es crear una nueva tabla solamente para la relación. Esta nueva tabla tendrá dos **claves ajenas** y su propia **clave** estará formada por la unión de las claves ajenas. Ejemplo:
 * **Nombre** || **...** || **CIF** ||
 * 11111111 || ... || ... || XX-1111-AA ||
 * 22222222 || ... || ... || YY-2222-BB ||
 * 33333333 || ... || ... || YY-2222-BB ||
 * 44444444 || ... || ... || XX-1111-AA ||

Tabla 'ALUMNO'
|| **DNI**
 * **Nombre** || **...** ||
 * 11111111 || ... || ... ||
 * 22222222 || ... || ... ||

Tabla 'ASIGNATURA'
|| **COD-ASIGNATURA**
 * **Nombre** || **...** ||
 * 01 || ... || ... ||
 * 02 || ... || ... ||

Tabla 'MATRÍCULA'(esta es la relación)
|| **DNI** En la tabla **MATRÍCULA** es donde se refleja la relación. La **clave** de dicha tabla está formada por los campos **DNI** y **COD-ASIGNATURA** ; y cada uno de ellos es **clave ajena**, el primero de **ALUMNO** y el segundo de **ASIGNATURA**. Hacer ver aquí que la tabla **MATRICULAS** puede tener más campos además de los que son **clave ajena** como ocurre en el ejemplo; la tabla añade además un campo **NOTA**.
 * **COD_ASIGNATURA** || **NOTA** ||
 * 11111111 || 01 || 7.5 ||
 * 11111111 || 02 || 6.25 ||
 * 22222222 || 01 || 5.5 ||
 * 22222222 || 02 || 8 ||

**Tipos de relaciones entre tablas**
Para ver la forma de establecer la relación es necesario decidir, previamente, qué tipo de relación existe entre las tablas. Existen tres tipos básicos de relaciones entre tablas: =EJERCICIOS PRACTICOS=
 * Uno a muchos. Este tipo se da cuando una fila de la primera tabla puede estar relacionada con muchas filas de la segunda tabla, pero una fila de la segunda sólo está relacionada con una de la primera. Es decir, si consideramos que una película sólo puede tener un único género, éste sería el tipo de relación que existe entre la tabla Genero y la tabla Peliculas (ver Figura 4.4) ya que, por ejemplo, el género Drama tiene varias películas relacionadas que son de dicho género pero dada una película sólo está relacionada con un género.
 * Muchos a muchos. Esta clase de relación ocurre cuando una fila de la primera tabla puede estar relacionada con muchas filas de la segunda tabla y una fila de la segunda tabla puede estarlo con muchas filas de la primera. Un ejemplo de este tipo lo tenemos en la relación entre la tabla Peliculas y la tabla Interpretes (ver Figura 4.9) porque, dada una película en particular, puede tener muchos intérpretes, y, viceversa, dado un intérprete, este puede haber intervenido en muchas películas.
 * Uno a uno. Este tipo de relación aparece con menos frecuencia y sucede cuando una fila de la primera tabla sólo puede estar relacionada con una fila de la segunda y una fila de la segunda tabla sólo puede estar relacionada con una de la primera. Un ejemplo de este tipo de relaciones podría ser entre una tabla con países y otra con jefes de gobierno, dado que, normalmente, un país sólo tiene un jefe de gobierno y un jefe de gobierno lo es sólo de un país.