Modelo Relacional

    El Modelo Relacional o MR es un enfoque de organización de datos, que en vez de usar entidades y relaciones usa únicamente relaciones (pero no son lo mismo que en MER).

    Las relaciones del MR representan tablas en la base de datos.

    ¿Para qué sirve?

    Similar al MER, permite a los desarrolladores representar la estructura de la base de datos, pero de una forma más directa

    Ejemplo

    Tomemos de ejemplo el diagrama de la clase anterior:

    Imagen de MER

    Si quisieramos pasar este MER a MR deberíamos seguir los siguientes pasos.

    Paso 1. Representar las entidades

    Este es el paso más sencillo, tomamos cada una de las entidades y las representamos con su nombre en mayúsculas, seguido de sus atributos dentro de ”<>”. Además indicamos claves primarias

    ALUMNO<id (PK), nyAp>
    MATERIA<nombre (PK), año (PK)>
    PROFESOR<id (PK), nyAp>
    TEMA<título (PK), carga_horaria, materia_nombre (PK, FK), materia_año (PK, FK)>
    

    Paso 2. Identificar y mapear las relaciones

    En el MER, las relaciones pueden ser uno a uno (1:1), uno a muchos (1:N) o muchos a muchos (N:M). Para convertirlas al MR, seguimos estas reglas:

    🔹 Relaciones 1:1 (Uno a Uno)

    Cuando dos entidades tienen una relación 1:1, la clave primaria de una entidad pasa como clave foránea (FK) a la otra. La elección de dónde colocar la FK depende de cuál entidad depende más de la otra.

    📌 Ejemplo: Si una tabla USUARIO tiene una relación 1:1 con PERFIL, podríamos definir:

    USUARIO<id (PK), nombre, email>
    PERFIL<username (PK), foto, biografía, **id_usuario (PK, FK)**>
    

    Aquí, la clave id de USUARIO se replica en PERFIL como clave primaria y foránea. Aunque podría ser al revés sin ningún problema.

    🔹 Relaciones 1:N (Uno a Muchos)

    En una relación 1:N, la clave primaria de la entidad que está en el lado 1 se pasa como clave foránea (FK) a la entidad que está en el lado N.

    📌 Ejemplo: Un profesor puede dar varias materias, pero cada materia tiene un solo profesor:

    PROFESOR<id (PK), nyAp>
    MATERIA<nombre (PK), año (PK), profesor_id (FK)>
    

    Aquí, profesor_id en MATERIA actúa como FK referenciando a la PK de PROFESOR.

    🔹 Relaciones N:M (Muchos a Muchos)

    Las relaciones N:M no pueden representarse directamente en el MR, por lo que se necesita una tabla intermedia que almacene las claves primarias de ambas entidades como claves foráneas.

    📌 Ejemplo: Un alumno puede inscribirse en varias materias, y una materia puede tener varios alumnos inscritos.

    ALUMNO<id (PK), nyAp>
    MATERIA<nombre (PK), año (PK)>
    CURSA<alumno_id (PK, FK), materia_nombre (PK, FK), materia_año (PK, FK)>
    

    Aquí:

    • CURSA es la tabla intermedia.

    • alumno_id referencia a ALUMNO.

    • materia_nombre y materia_año referencian a MATERIA.

    Resultado Final

    ALUMNO<id (PK), nyAp>
    PROFESOR<id (PK), nyAp>
    MATERIA<nombre (PK), año (PK), profesor_id (FK)>
    TEMA<título (PK), carga_horaria, materia_nombre (PK, FK), materia_año (PK, FK)>
    CURSA<alumno_id (PK, FK), materia_nombre (PK, FK), materia_año (PK, FK)>
    

    Conclusión

    El Modelo Relacional proporciona una forma estructurada y eficiente de organizar los datos. Su correcta implementación asegura integridad, escalabilidad y rendimiento en los sistemas de bases de datos.

    Si comprendes bien cómo transformar un MER en MR, podrás diseñar bases de datos optimizadas y listas para su implementación en SQL.