Relationships One-to-Many (1:N) in CAP

Relationships One-to-Many (1:N) in CAP

Introducción

Introducción

En el artículo anterior aprendió los fundamentos básicos de las bases de datos, y además vio cómo establecer relaciones uno a uno entre una colección de entidades. Continuando con las restricciones o las cardinalidades que puede haber entre distintas entidades, es momento de hablar acerca de las relaciones uno a muchos. En algunas situaciones es posible indicar que una persona puede tener varias direcciones o incluso puede tener varios números de contactos personales, incluso varios números de contactos de emergencia. Entonces, la idea de este artículo es comprender, a nivel teórico y a nivel de modelado en CAP cómo es posible establecer una relación uno a muchos.

Cloud Application Programming Model – Relaciones uno a muchos (1:N)

Este tipo de relación se establece cuando un registro de una tabla se puede asociar a uno o varios registros de otra tabla. En la Figura 1.1 puede ver un Modelo Entidad Relación en donde puede apreciar una entidad Measures (Medidas) relacionada con otra entidad llamada Units of Measurement (Unidades de Medidas).

image 20
Relationships One-to-Many (1:N) in CAP 12

El ejemplo mostrado puede ser descrito de la siguiente manera: Una Medida puede tener varias Unidades de Medidas y cada Unidad de Medida solo pertenece a una Medida. Para tener una mayor comprensión del mismo, vea la Figura 1.2.

image 21
Relationships One-to-Many (1:N) in CAP 13

Como puede ver, las Unidades de Longitud tienen varias unidades de medidas asignadas. Al desglosarlo, es posible entender que las unidades de medidas que pertenecen a las Unidades de Longitud son:

  • Metro
  • Decímetro
  • Centímetro
  • Milímetro
  • Kilómetro
  • Pulgada
  • Pie
  • Yarda
  • Milla

Ahora, ¿cómo podemos escribir estas entidades en CAP?

Ejemplo Demostrativo

Lo primero que debe realizar es definir las dos entidades sin ninguna relación entre ellas, quedando el código de la siguiente manera, recuerde que debe crear un archivo llamado schema.cds dentro de la carpeta db.

image 22
Relationships One-to-Many (1:N) in CAP 14

Una vez definidas las dos entidades, es necesario establecer las relaciones entre ellas, para ello debe recordar: ¿quién tendrá el registro de muchos? En este caso, la entidad: UnitsMeasurement representará la entidad que contendrá varios registros que estarán relacionados con la entidad Measures. Para ello, debe establecer una asociación con el nombre measure en la entidad de Unidades de Medidas, quedando de la siguiente manera:

image 23
Relationships One-to-Many (1:N) in CAP 15

El nuevo campo measure, lo único que contendrá es el ID de la medida (Unidades de Longitud). Es decir, que podemos expresarlo de la siguiente manera:

Entidad: Measures / campo: ID = 16b5d4f9-77b5-4587-b3e5-f619c53bea39

Entidad: UnitsMeasurement / campo: measure_ID = 16b5d4f9-77b5-4587-b3e5-f619c53bea39

Sin embargo, hasta el momento no es posible navegar desde Unidades de Longitud para poder ver cuáles son todas sus Unidades de Medidas. Para comprender esto un poco mejor, realice las proyecciones de las dos entidades. Para ello, cree dentro de la carpeta srv un archivo llamado: service.cds y copie el siguiente código.

image 24
Relationships One-to-Many (1:N) in CAP 16

Como resultado final debería tener las siguientes vistas:

Vista previa:

image 25
Relationships One-to-Many (1:N) in CAP 17

View: Measures

image 26
Relationships One-to-Many (1:N) in CAP 18

View: UnitsMeasurement

image 27
Relationships One-to-Many (1:N) in CAP 19

Como puede notar en la imagen previa, el campo: measure_ID solo muestra el ID de alguna Medida. Pero, si desea ver cuáles son las unidades de medidas de alguna medida en específico, ¿qué debes hacer? Para hacer lo indicado, es necesario hacer una relación uno a muchos desde la entidad Measures hacia la entidad UnitsMeasurement y por último es necesario hacer una navegación por medio del $self para indicar que el campo: ID de Measures es igual campo measure_ID de la entidad UnitsMeasurement. En resumen, debe agregar un nuevo campo llamado toUnitsMeasurement en la entidad Measures:

image 28
Relationships One-to-Many (1:N) in CAP 20

Una vez incorporado el campo de navegación, es posible obtener el siguiente resultado:

image 29
Relationships One-to-Many (1:N) in CAP 21

Como podrá ver en la imagen previa, la entidad Measures (Medidas) tiene asociadas varias Unidades de Medidas.

Conclusión

Las relaciones uno a muchos se definen cuando una entidad padre puede tener varias entidades hijas. Analógicamente, es posible decir que un padre puede tener varios hijos, pero cada hijo solo puede tener un padre biológico. En el ejemplo mostrado se logró establecer una relación con las entidades: Medidas y Unidades de Medidas. Sin embargo, no basta con solo crear un campo con el Association to Measures si desde la entidad padre (Measures) no hay una navegación que le diga cómo llegar hacia las Unidades de Medidas (UnitsMeasurement). Por ello, es necesario hacer uso del self para poder referenciar hacia sí mismo, es decir, para que sepa cuál(es) es(son) su(s) campo(s) clave(s). 

Un comentario de “Relationships One-to-Many (1:N) in CAP

  1. Marcell almonte dice:

    Es muy interesando poder dominar y entender este sistema , ya que unas de las principales programa moderno que los utilizan todas la empresa para tener dominio y control de sus productos .

Deja una respuesta

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