Skip to content

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

ORM-GreenDAO (II)
1. Uso GreenDAO en Android: relaciones entre tablas de una base de datos
2. Proyecto Android: implementación de relaciones entre tablas con GreenDAO
3. Videotutorial: proyecto base de datos en Android con GreenDAO
4. Proyecto ORM GreenDAO: Relación entre Tablas (Android Studio – Android 5.0)

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

Esta entrada tiene 2 comentarios

Los comentarios están cerrados.

Volver arriba
Esta web usa cookies para su correcto funcionamiento. No hay cookies de publicidad, aunque algunos de los contenidos mostrados (videos o documentos insertados) están alojados en servicios externos (Youtube, Vimeo, Box...) que sí pueden implementar sus propias cookies.    Más información
Privacidad