El blog de Alejandro Meroño

El blog de Alejandro Meroño Hernández

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

Para transformar un modelo entidad-relación a modelo relacional seguiremos las siguientes reglas:

  • Toda entidad del modelo entidad-relación se transforma en una tabla.
  • Cualquier atributo de una entidad se transforma en un campo dentro la tabla, manteniendo las claves primarias.
  • Las relaciones N:M se transforman en una nueva tabla que tendrá como clave primaria la concatenación de los atributos clave de las entidades que relaciona.
  • En las relaciones 1:N se pueden tener dos casos:
    • Si la entidad que participa con cardinalidad máxima uno lo hace también con cardinalidad mínima uno, entonces se propaga el atributo de la entidad que tiene cardinalidad máxima 1 a la que tiene cardinalidad máxima N, desapareciendo el nombre de la relación. Si existen atributos en la relación éstos también se propagarán.
    • Si la entidad que participa con cardinalidad máxima uno lo hace también cardinalidad mínima cero, entonces se crea una nueva tabla formada por las claves de cada entidad y los atributos de la relación. La clave primaria de la nueva tabla será el identificador de la entidad que participa con cardinalidad máxima N.
  • En el caso de las relaciones 1:1 también pueden darse dos casos:
    • Si las entidades poseen cardinalidades (0,1), la relación se convierte en una tabla.
    • Si una de las entidades posee cardinalidad (0,1) y la otra (1,1), conviene propagar la clave de la entidad con cardinalidad (1,1) a la tabla resultante de la entidad con cardinalidad (0,1). Si ambas entidades poseen cardinalidades (1,1) se puede propagar la clave de cualquiera de ellas a la tabla resultante de la otra.
  • En el caso de las relaciones N-arias se aplica la misma regla que para las relaciones N:M
  • En el caso de las relaciones reflexivas supondremos que se trata de una relación binaria con la particularidad que las dos entidades son iguales y aplicaremos las reglas vistas en los puntos anteriores.

Veamos algunos ejemplos.

Relaciones N:M

Supongamos el siguiente modelo entidad-relación.

En este caso la relación “compra” se transforma en una nueva tabla cuya clave primaria estará formada por los atributos dni, que es la clave primaria de cliente, y código, que es la clave primaria de producto. Además tendrá como campo fecha compra, ya que este atributo forma parte de la relación.

El modelo relacional quedaría de la siguiente forma (en negrita las claves primarias):

  • CLIENTE(dni,nombre,apellidos)
  • PRODUCTO(código,descripción)
  • COMPRAS(dni_cliente,código_producto,fecha_compra)

Relaciones 1:N

Veamos ahora el caso de una relación 1:N. En el siguiente modelo entidad-relación un empleado pertenece a un único departamento (debe pertenecer a uno obligatoriamente), y un departamento tiene 1 o más empleados.

En este caso se propaga el atributo código de departamento a la tabla EMPLEADO. El modelo relacional quedaría de la siguiente manera:

  • EMPLEADO(dni,nombre,salario,código_departamento)
  • DEPARTAMENTO(código,nombre,localización)

Imaginemos ahora que pudiera darse el caso de que hubiera empleados que no pertenecieran a ningún departamento.

En este caso la entidad que participa con cardinalidad máxima 1, DEPARTAMENTO, también lo hace con cardinalidad mínima 0, ya que puede haber empleados que no pertenezcan a ningún departamento. Así pues, se crea una nueva tabla formada por dni de EMPLEADO y código de DEPARTAMENTO. En esta nueva tabla dni de EMPLEADO será la clave primaria. El modelo relacional quedaría de la siguiente forma:

  • EMPLEADO(dni,nombre,salario)
  • DEPARTAMENTO(código,nombre,localización)
  • PERTENECE(dni_empleado,código_departamento)

Relaciones 1:1

Veamos ahora el caso de una relación 1:1 a través del siguiente ejemplo. En el siguiente modelo entidad-relación un equipo de fútbol tiene a un único presidente y un presidente preside a un único club de fútbol.

En este ejemplo, tal y como dicen las reglas, podemos propagar la clave de cualquier tabla a la tabla resultante de la otra. Es decir, tenemos dos opciones, o mover la clave de PRESIDENTE a EQUIPO o mover la clave de EQUIPO a PRESIDENTE. El modelo relacional podría quedar de cualquiera de las dos formas siguientes:

  • EQUIPO(código,nombre,año_fundación)
  • PRESIDENTE(dni,nombre,código_equipo)
  • EQUIPO(código,nombre,año_fundación,dni_presidente)
  • PRESIDENTE(dni,nombre)

Relaciones reflexivas

Veamos ahora como quedaría en el modelo relacional la siguiente relación reflexiva. En el siguiente modelo entidad-relación un ALUMNO es delegado de varios ALUMNOS y un ALUMNO tiene obligatoriamente un delegado y sólo a uno.

Como podemos observar en las reglas de transformación, en este caso la relación reflexiva se trata como si fuera una relación binaria con la particularidad de que las dos entidades son iguales. Al tratarse de una relación 1:N se propagará la clave de la entidad ALUMNO a la entidad ALUMNO, quedando el modelo relacional de la siguiente forma:

  • ALUMNO(num_expediente,nombre,num_expediente_delegado)

Todos los modelos entidad-relación que se ven en los ejemplos están realizados con dia, un excelente editor de diagramas, que además es gratuito.

Popularity: 17% [?]


Otras entradas que te pueden interesar



Esta entrada tiene

29 comentarios

Escrito por Alejandro Meroño Hernández

Octubre 13th, 2007 at 1:00 pm

Categoría: Bases de datos

29 comentarios en 'Transformación del modelo entidad-relación al modelo relacional'

Suscríbete a comentarios con RSS o TrackBack en 'Transformación del modelo entidad-relación al modelo relacional'.

  1. hola wenas, porfavor si alguien me podria ayudar tengo que hacer un proyecto de futbol y lo tengo que pasar a model relacional si alguien me poddria exar un cable gracias
    saludoooood!!!!!!!!!!!!!!!!11

    Amin

    23 Ene 08 at 4:35 pm

  2. gracias por la informacion

    zuly

    13 Mar 08 at 10:38 pm

  3. Una explicación muy buena y clara. Gracias.

    Javier Fernández

    17 Mar 08 at 8:34 pm

  4. Ey ale! Quiero decirte que aunque lo más probable es que suspenda la asignatura xD me ha ayudado mucho a entender mejor la E/R al modelo relacional.

    Gracias.

    John_User_Debian

    24 Mar 08 at 11:37 pm

  5. Hola la verdad es que hasta hora estoy viendo Base de Datos y quiciera hacer un modelo relacional esto, teniendo en cuenta la cartera de una istitución de educaión, no se si ustedes me podrían ayudar. en esta istitución averigue lo siguiente:
    se hace matricula semestral cada matrícula varía anualmente según el sueldo mínimo osea que si en este año el sueldo es de 200.000 esa es la matrícula, si para el siguiente año el sueldo amunta en 250.000 ese es el valor de matricula. los alunos pueden ir pagando por cuotas durante el semestre ya sea por 3 cuotas o cuatro. esto es para cada programa sin excención. gracias.

    Carmen de la Rosa

    14 May 08 at 8:04 pm

  6. SUPER COOOOOOOOOOOOOOL

    ANA

    15 May 08 at 11:27 pm

  7. realmente no entendi muy bien lo que queria…
    necesitamos mas apoyo.!

    azucena

    26 May 08 at 6:31 pm

  8. En la relacion 1:n en la primera imagen las cardinalidades no etsan al reves?

    Iker

    13 Sep 08 at 5:01 pm

  9. Hola, la verdad que muy buena la info, muy bien explicado todo, estoy aca estudiando con un amigo y la verdad que nos sirvio mucho.

    ga2ga

    23 Sep 08 at 11:00 pm

  10. hola necesito que me ayuden porfas a hacer un modelo entidad relación sobre el calculo de entrada y salida de personal y calculo de nomina del personal.si pueden ayuedenme pliss.

    Concepción

    2 Nov 08 at 3:08 am

  11. MUCHISIMAS GRACIAS! tengo un examen
    y me has salvado…te followeo en twitter
    de cabeza :D

    dagandara

    1 Dic 08 at 9:46 pm

  12. muy buen resumen y claros ejemplos, thx!

    fernando

    12 Ene 09 at 11:03 pm

  13. Me sacaste de un apuro ;) gracias

    Raul

    31 Ene 09 at 11:13 pm

  14. muy buena tu informacion me ayudaste en mi proyecto para diseñar una buena base de datos, pequeña pero funcional.

    rugal

    25 Feb 09 at 11:49 pm

  15. Que buene extracto saludos al que hizo este resumen muy util…..

    MAuri

    7 Mar 09 at 2:54 pm

  16. poner mas informacion

    onesimo caballero alavez

    3 Abr 09 at 1:49 am

  17. no es cierto

    es broma

    muy buen trabajo

    soy muy bromista no me hagan caso

    onesimo caballero alavez

    3 Abr 09 at 1:51 am

  18. que buena informacio te felicito

    gracias em has dejado una buena

    definicion sigue asi.

    Anónimo

    4 May 09 at 6:15 pm

  19. Muchas gracias!!!
    el concepto quedo claro
    un saludo.

    Blanca

    23 Jun 09 at 6:45 pm

  20. super druper…………….

    sharon

    10 Oct 09 at 5:08 pm

  21. mas informacion por favor

    eliana

    21 Oct 09 at 1:20 pm

  22. Hola muy buen blog !! esta genial, muy bien elaborado tiene un explicacion super……!!! Saludos y gracias por apoyarnos a los estudiantes SUERTE!!

    Miranda

    6 Nov 09 at 3:28 am

  23. Es correcta esta data? En el libro “Diseño conceptual de bases de datos” de Batini, Ceri y Navathe en la página 364 explica todo lo contrario :S.
    Saludos

    faku

    11 Nov 09 at 10:12 pm

  24. Estoy estudiando ingenieria tecnica de sistemas y la verdad es que me ha sacado de un apuro. Genial!!

    Neni

    27 Ene 10 at 11:04 pm

  25. Muy claro, bien resumido. Soy profesor de Bases de Datos y me ha servido mucho para explicarlo.

    Yo le agregaría que en el caso de las N:M, no siempre es suficiente con heredar las PK de las tablas originales, sino que en ocasiones hay que agregar uno o más atributos a la PK de la tabla resultante. Ejemplo: estudiante y cursos. Lamentablemente un estudiante podría tener que matricular el mismo curso en varios periodos.

    Imagino que usted lo resuelve a la hora de normalizar, pero si el estudiante lo “revisa” desde la transformación, se gana tiempo. Gracias.

    Guillermo

    5 Feb 10 at 7:42 pm

  26. Gracias por tan buen trabajo ;)
    Excelente explicación.

    Buen blog.

    Smike

    13 May 10 at 2:01 am

  27. gracias!

    :D

    23 May 10 at 4:22 am

  28. Mira gracias por el aporte pero no se todavia me quedan unas dudas cuando explicas acerca del a relacion 1:N en el ejemplo dice un empleado pertenece a un departamento y un departamento puede tenes mas de un empleado mi duda es si esto no seria una relacion N:1 (muchos a uno)???? ayudame por favor!!!!

    Karina

    23 May 10 at 8:47 am

  29. Hola Karina. Sí es una relación N:1, que es lo mismo que una relación 1:N :P
    Un saludo.

Deja un comentario