(+34) 958084455 informacion[arroba]academiaandroid.com

Uso GreenDAO en Android: relaciones entre tablas de una base de datos

Post Series: ORM-GreenDAO (II)

Relaciones entre Entidades con API GreenDAO

En esta serie de tutoriales sobre el uso de ORMs en Android, vamos a centrarnos en cómo  convertir una estructura de Base de Datos algo más compleja en objetos DAO, comprobando como se construyen las relaciones entre entidades con el uso de la API GreenDAO.

En primer lugar vamos a explicar qué tipo de relaciones se pueden establecer entre dos entidades, que posteriormente puedan ser construidas por GreenDAO:

Relaciones uno a uno (1:1)

En una relación uno a uno, una fila de la tabla A no puede tener relación con más de una fila en la tabla B y viceversa. Se crea una relación uno a uno si las dos columnas relacionadas son claves principales o tienen restricciones UNIQUE.

Este tipo de relación no es habitual, ya que la mayor parte de la información relacionada de esta manera estaría toda en una tabla. Puede utilizar una relación uno a uno para:

  • Dividir una tabla con muchas columnas
  • Aislar parte de una tabla por razones de seguridad
  • Almacenar datos que son efímeros y que pueden eliminarse fácilmente mediante la simple eliminación de la tabla.
  • Almacenar información que se aplica solamente a un subconjunto de la tabla principal.
relacion 1 a 1 entre tablas Profesor-Grupo de alumnos

En esta imagen representamos un Profesor que imparte una sola clase, y su relación 1:1 con el  grupo de Alumnos que componen esa clase

 

Tanto el lado de la clave principal como el de la clave externa de una relación uno a uno, se indica mediante un símbolo de clave.

Relaciones uno a varios (1:N)

Una relación uno a varios es el tipo más habitual de relación. En este tipo de relación, una fila de la tabla A puede corresponderse con muchas filas de la tabla B, pero una fila de la tabla B solo puede corresponderse con otra de la tabla A.
Es muy apropiado este tipo de relación si solamente una de las columnas relacionadas es la clave principal o tiene una restricción UNIQUE.

Relacion 1:n entre tablas Grupo de Alumnos y Profesores

Representación en que un grupo de alumnos pueden recibir clase de diferentes profesores (Matemáticas, Lenguaje, Historia etc.)

 

El lado de la clave principal de una relación uno a varios se indica mediante un símbolo de clave. El lado de la clave externa de una relación se indica mediante un símbolo de infinito.

Crear relaciones con GreenDAO

Para poder establecer relaciones entre tablas en GreenDAO, primero deberemos crear las entidades que formarán nuestra Base de Datos.

En este ejemplo que hemos realizado, se crean dos entidades o tablas, llamadas “Profesores” y “Asignaturas“. Ambas tablas pertenecen a la Base de Datos “Matricula“, por lo que habrá que añadir dos entidades al esquema creado con GreenDAO.

Tras crear el esquema, se definirán los campos que formarán cada Tabla:

  • Tabla Profesores: implementa la lógica de los datos personales del profesor, además del curso al que imparte clase. Su clave primaria es “_id“.
  • Tabla Asignaturas: se encarga de almacenar las asignaturas matriculadas por el alumno. El campo “idProfesor“es clave foránea del campo “_id“, que es clave primaria en la tabla Profesores. Se establece una relación de uno a varios (1 : N), en la que al identificador de profesor le corresponde varios campos de la tabla Asignaturas.

Estructura de Base de Datos de proyecto Android

Estructura bbdd del ejemplo

Representación de la estructura de la base de datos del ejemplo, con sus tablas ‘Profesores’ y ‘Asignaturas’ y la relación entre estas entidades

Con el fin de simplificar el modelo de datos para centrar la atención en cómo se definen las relaciones usando el ORM GreenDAO, se establece la lógica existente, entre un profesor y las asignaturas que imparte, a un único grupo de alumnos (por lo tanto no se define ninguna tabla ‘Alumnos’ en la base de datos).
De esta manera, facilitamos la tarea de selección de asignaturas a través de un campo booleano, para la gestión de una matrícula o ficha (de ahí el nombre de la base de datos).

En los próximos tutoriales vamos a desarrollar este proyecto Android que utiliza esta estructura de Base de Datos simplificada, en la que un profesor puede impartir hasta tres asignaturas, pero cada asignatura sólo puede ser impartida por un profesor.


Autor: José Antonio Gázquez Rodríguez- Academia Android

This Post Has 2 Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *