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).
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.
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.
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:
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.
Como resultado final debería tener las siguientes vistas:
Vista previa:
View: Measures
View: UnitsMeasurement
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:
Una vez incorporado el campo de navegación, es posible obtener el siguiente resultado:
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).
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 .