Home Bases de Datos El Modelo Relacional Transformación del modelo entidad-relación al modelo relacional

PostHeaderIcon Transformación del modelo entidad-relación al modelo relacional

Usar puntuación: / 136
MaloBueno 

Hasta ahora hemos estado definiendo el modelo relacional, y sus relaciones con el modelo Entidad-Relación. Pero ¿cómo se convierte el modelo entidad-relación en el modelo relacional? Es decir, a partir de un esquema entidad-relación, ¿cómo obtengo sus correspondientes tablas? Vamos a verlo con ejemplos ilustrados.

En esta primera parte vamos a ver como convertir del modelo entidad-relación simple (llamémosle así para diferenciarlo del extendido) al modelo relacional. Para ello simplemente debemos aplicar el siguiente cuadro:

 

MODELO ENTIDAD/RELACIÓN

MODELO RELACIONAL

Entidad

Tabla

Atributo

Columna/Campo

Identificador Único

Clave Primaria

Relaciones N:M

Nueva tabla con clave primaria la concatenación de las claves de las entidades que la forman (la relación pasa a ser una tabla, y en esa tabla se pone como C.A. las entidades que une)

Relaciones 1:M

Transformar la relación en una tabla si no todos los elementos de la entidad que participa con muchos tienen asociado un elemento de la entidad que participa con uno.

 

 

 

 

 

Esta diferenciación se debe a que todas las claves ajenas deben hacer referencia a las claves primaria de otras tablas y consecuentemente no pueden ser nulas. Dicho de otra manera, toda referencia ajena debe hacerse a un campo único

Propagando la de 1 en la de muchos (creando un campo en la de muchos que referencie a la de 1) si cada elemento de la entidad que participa con muchos aparece en la entidad de uno, es decir, si TODOS los elementos de la entidad de muchos tienen asociado uno de la entidad de uno

Relaciones 1:1

Transformar la relación en tabla si no todos los elementos de la entidad que participa con muchos tienen asociado un elemento de la entidad que participa con uno.

Propagar la clave (igual que en la de 1:M) si cada elemento de la entidad que participa con muchos aparece en la entidad de uno, es decir, si TODOS los elementos de la entidad de muchos tienen asociado uno de la entidad de uno

Ejemplo:

Ejemplo: transformar el esquema entidad/relación al modelo relacional de una tienda de antigüedades

 

 

 

 

 

 

 

En este ejemplo observamos como tenemos dos entidades (cada una con cuatro atributos) y una relación 1:M en la que no todos los artículos deben ser comprados por un cliente sino que daremos de alta el artículo, a la espera de ser comprado por un cliente, pudiendo existir artículos en stock que no han sido vendidos nunca. Esta relación posee dos atributos propios de la entidad. Tal como vimos en la tabla la solución consistirá en tres tablas al no ser una relación obligatoria, una por cada entidad (clientes y artículos) y otra para la relación. Así, nos quedarían las siguientes tablas

CLIENTE:{(TELÉFONO: numérico), (DIRECCIÓN: texto), (COD.CLIENTE: numérico), (NOMBRE: texto)}

ARTÍCULOS:{(STOCK: numérico), (DENOMINACIÓN: texto), (PRECIO: numérico), (COD.ARTÍCULO: numérico)}

COMPRA:{_CP____(CLIENTE:Numérico),(ARTÍCULO: Numérico)____CP_,(FECHA_VENTA: Fecha),(UNID_VENDIDAS: Numérico)} 

                  

COMPRA --> CLIENTE --> CLIENTE

COMPRA --> ARTÍCULO --> ARTÍCULOS

Las claves (principales y ajenas) aparecen subrayadas y las claves de la tabla COMPRA aparecen doblemente subrayadas (o eso he intentado ya que no encontré esa posibilidad en el editor de texto que uso). ¿Cómo se pueden distinguir? A través del diagrama referencial, en donde podemos leer que en la tabla COMPRAS, el campo CLIENTE hace referencia a la tabla CLIENTES y en la misma tabla COMPRAS, el campo ARTÍCULOS hace referencia a la tabla ARTÍCULOS. Las claves subrayadas que no aparezcan en este diagrama referencial (COD.CLIENTE y COD.ARTÍCULO) se suponen claves principales al igual que las claves doblemente subrayadas.

Veamos otro ejemplo. Es similar al anterior solo que en este caso la relación es obligatoria

Vuelve a darse el caso de dos entidades y una relación 1 a muchos. Es el mismo caso que antes pues suponemos que todos los libros tienen un tema. Las tablas y el diagrama referencial serían:

TEMAS:{(DESCRIPCIÓN: texto), (COD.TEMAS: numérico)}

LIBROS:{(TÍTULO: texto), (AUTOR: texto), (NUM_EJEMPLARES: numérico), (COD.LIBRO: numérico), (ISBN: numérico), (CA.COD.TEMAS: numérico)}

LIBROS --> C.A.COD.TEMAS --> TEMAS

Veamos ahora otro ejemplo en el que cambia la relación a 1:1

En este caso ¿cuál de las dos entidades incrustamos en la otra? La respuesta es "da igual". Ésta es la solución propuesta

EMPLEADO:{(COD.EMP: numérico), (NOMBRE: texto), (TLF: numérico), (SALARIO: numérico)}

PUESTO_DE_TRABAJO:{(COD.TRA: numérico), (DEPT: texto), (C.A.COD.EMP: numérico)}

PUESTO_DE_TRABAJO --> C.A.COD.EMP. --> EMPLEADO

Hemos insertado al EMPLEADO en la tabla del PUESTO DE TRABAJO.

Finalmente vemos un ejemplo de una relación M:M

En este caso de una relación N:M creamos una tabla independiente quedando:

ALUMNOS:{(NOMBRE: Texto),(DNI: Numérico),(DIRECCIÓN: Texto),(TELÉFONO: Numérico)}

CURSO:{(CÓDIGO: Numérico),(DENOMINACIÓN: Texto),(PROFESOR: Texto)}

MATRÍCULA:{_CP____(ALUMNO: Numérico),(CURSO: Numérico)____CP_}


 

Comentarios   

 
0 #12 david 21-03-2017 20:36
:lol: :D lo mejor si sirvio mucho
Citar
 
 
-3 #11 Administrator 22-02-2017 12:26
Cito a Jesus:
Incompleto, ¿que pasa con las relaciones jerárquicas?,¿nos las comemos?

Hola Jesús. Te paso el enlace www.dryvalleycomputer.com/index.php/bases-de-datos/el-modelo-relacional/66-transformacion-del-modelo-entidad-relacion-extendido-al-modelo-relacional dónde se explica como pasar las relaciones jerárquicas, las cuales pertenecen al modelo entidad relación extendido
Verás que no es necesario comerse nada
Saludos
Citar
 
 
-4 #10 Jesus 21-02-2017 12:31
Incompleto, ¿que pasa con las relaciones jerárquicas?,¿n os las comemos?
Citar
 
 
-4 #9 Administrator 16-09-2015 20:41
Cito a Tina:
En primer lugar te agradezco mucho por el aporte, quisiera despejar una duda acerca del modelo relacional y el modelo E-R. He estado leyendo mucho sobre esto en internet, muchos dicen que el modelo relacional se basa en relaciones y una relacion es una tabla con tuplas y atributos. Ahora leo el modelo E-R y define una relación como la conexión de dos entidades :sigh: . Si es así, haciendo la comparación del inicio de tu publicación. Una relación del Modelo ER a que es equivalente en el modelo relacional. Son la misma palabra "relación" pero con diferente significado, me he creado una confusión tenaz... si me podrías despejar la duda por favor... :cry:


Hola Tina. Pues creo que la duda te la respondes tú sola así que me la tienes clara. Efectivamente se trata del mismo concepto con dos significados diferentes. En el modelo E/R una relación es la "conexión" entre dos entidades. En el modelo relacional una relación es una tabla con tuplas y atributos, es decir, registros y campos.
La "traducción" de una relación del modelo E/R a una relación (tabla) del modelo relacional viene en la tabla de principio de este post: dependerá de qué tipo de relación sea para saber si será una tabla o un campo añadido.
Saludos
Citar
 
 
-7 #8 Tina 11-09-2015 15:17
En primer lugar te agradezco mucho por el aporte, quisiera despejar una duda acerca del modelo relacional y el modelo E-R. He estado leyendo mucho sobre esto en internet, muchos dicen que el modelo relacional se basa en relaciones y una relacion es una tabla con tuplas y atributos. Ahora leo el modelo E-R y define una relación como la conexión de dos entidades :sigh: . Si es así, haciendo la comparación del inicio de tu publicación. Una relación del Modelo ER a que es equivalente en el modelo relacional. Son la misma palabra "relación" pero con diferente significado, me he creado una confusión tenaz... si me podrías despejar la duda por favor... :cry:
Citar
 
 
-2 #7 Administrator 14-04-2015 17:58
Cito a Ruben:
Hola, es muy clara tu explicación, pero solo muestras modelos de 2 entidades. Cómo se haría para transformar modelos de 3 o más entidades?


La respuesta a esa pregunta viene en el siguiente post: http://dryvalleycomputer.com/index.php/bases-de-datos/el-modelo-relacional/66-transformacion-del-modelo-entidad-relacion-extendido-al-modelo-relacional
Citar
 
 
-9 #6 Ruben 08-04-2015 04:45
Hola, es muy clara tu explicación, pero solo muestras modelos de 2 entidades. Cómo se haría para transformar modelos de 3 o más entidades?
Citar
 
 
-5 #5 Administrator 10-03-2014 11:19
Cito a Miguel:
Buenas, me podrías aclarar que diferencia hay entre los dos primeros diagramas? Los dos son 1:M, pero en el segundo dices que la relación es obligatoria, pero no acabo de entender el porque es obligatoria y porque se hace así.

Saludos.


Hola Miguel. Para saber si una relación es obligatoria o no debes preguntarte si es necesario que todo lo de la entidad de muchos debe tener algo con la entidad de uno. Es decir, ¿todo artículo debe estar comprado por un cliente? Obviamente la respuesta depende de la realidad que estemos modelando pero tal cual está planteado el problema la respuesta es no. Sin embargo en el segundo ejemplo la relación sí es obligatoria puesto que todos los libros deben estar clasificados por temas, y no existe la posibilidad de que haya algún libro que no lo tenga.

En cuanto a tu segunda pregunta, sobre por qué debe hacerse así, la respuesta es que en el modelo relacional no pueden existir claves ajenas vacías, por lo que cuando se trata de una relación obligatoria se puede añadir un campo a la tabla del muchos porque al ser obligatoria nunca estará vacía, cosa que no se corresponde cuando no es obligatoria. En el ejemplo concreto, si añadiésemos un campo con el cliente a la tabla artículo, al haber artículos que no han sido comprados por clientes, el susodicho campo estaría vacío, lo cual viola uno de los principios del modelo relacional.

Un saludo
Citar
 
 
-5 #4 Miguel 10-03-2014 10:49
Buenas, me podrías aclarar que diferencia hay entre los dos primeros diagramas? Los dos son 1:M, pero en el segundo dices que la relación es obligatoria, pero no acabo de entender el porque es obligatoria y porque se hace así.

Saludos.
Citar
 
 
-3 #3 Administrator 19-11-2013 15:12
Cito a emmanuel:
no me quedo claro la transformacion de la regla de correspondencia (M:M) :-|

Hola emmanuel. En primer lugar mis disculpas por contestar tan tarde. Te comento.

La correspondencia M:M siempre se soluciona en el modelo relacional con la creación de una tercera tabla. Esa tabla podrá tener todos los campos que se consideren necesarios, pero como mínimo deberá tener las dos claves principales de las dos entidades que la forman referenciándola s como claves ajenas. En el ejemplo que puse el campo alumno hace referencia a la tabla alumno y el campo curso a la tabla curso. Cada una de ellas es una clave ajena o foránea y juntas hacen la clave principal. Aparte de estos dos campos pueden existir más (se me ocurre como ejemplo en este caso los campos año y nota y quedaría así:

MATRÍCULA:{_CP____(ALUMNO: Numérico),(CURS O: Numérico)____CP _, AÑO: Numérico, NOTA: Numérico}
)

Espero haberte solucionado tu duda y que no haya sido muy tarde... :-?

Un saludo
Citar
 

Escribir un comentario


Código de seguridad
Refescar

PostHeaderIcon Más Comentado

PostHeaderIcon Últimos Comentarios

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy1502
mod_vvisit_counterAyer1493
mod_vvisit_counterEsta semana10801
mod_vvisit_counterLa semana pasada10142
mod_vvisit_counterEste mes27359
mod_vvisit_counterEl mes pasado44972
mod_vvisit_counterTodos los días1432929

We have: 156 guests online
Hoy es: Dic 16, 2017