Relationship
Definition
A relationship in VKL describes how classes relate to each other.
Example:
Till_Haugworks atVeezoo_AGJP_Monteirois from the segmentConsumerRio_de_Janeirois located inBrazil
In other words, we have the following relationships:
works_atis a relationship that goes fromEmployeetoCompanyfrom_segmentis a relationship that goes fromCustomerto the classSegmentlocated_inis a relationship that goes fromCityto the classCountry
Usage
import db.postgres.movie_db.public.CUSTOMER
kb {
class Customer {
...
relationship lives_in {
/** How to display this relationship to the user in an answer's filters,
* e.g. "Customer lives in Brazil"
* Default: "with" */
display_name.en: "lives in"
/** Specifies the cardinality of the relationship
* (one of: KB_One2One, KB_Many2One, KB_Many2Many, KB_One2Many).
* Default: KB_Many2One */
tag: KB_Many2One
/** lives_in is a relationship that goes from Customer to Country. */
to: kb.Country
/** An optional join path in the case of intermediate tables.
* Default: not set */
join: [ ... ]
/** The sql expression representing this relationship. */
sql: "${CUSTOMER.country_id}"
}
}
}| Property | Optional/Mandatory | Summary | Default |
|---|---|---|---|
| to | Mandatory | A relationship is always between the outer class where it is defined and another class, specified in the property to. | No default |
| sql | Mandatory | The sql expression representing this relationship, usually a foreign key. May be omitted when it is identical to the sql of the to class (e.g. both sides use the same column of the same table), in which case Veezoo reuses that expression. | sql of the to class |
| display_name | Optional | How to display this relationship to the user in an answer's filters, e.g. "Customer lives in Brazil". | "with" in the respective language |
| tag: KB_Many2One/etc | Optional | Specifies the cardinality of the relationship (one of: KB_One2One, KB_Many2One, KB_Many2Many, KB_One2Many). | KB_Many2One |
| join | Optional | An optional join path in the case of intermediate tables. | Not set |
| to_name | Optional | A name for the class defined in to, e.g. to distinguish Origin Airport and Departing Airport in answers. | No default |
| to_synonym | Optional | A synonym for the class defined in to, e.g. Origin Airport can have a synonym 'Departing Airport'. | No default |