An association represents a relationship between two views and it is defined by two endpoints and a list of mappings where you can traverse them. You can traverse links even if the associations were created without defining primary keys for the views. In fact, any association that maps views together can be traversed.
When you can mark the association as a Referential constraint and set a Role precondition, then the association is considered as the traditional primary key/foreign key constraint of relational databases. For that type of association, you would need to define primary keys which would help to define a better semantic model because you can define referential constraints (primary key/foreign key relation) between views. For more information, please refer to the [Associations](https://community.denodo.com/docs/html/browse/latest/vdp/administration/restful_architecture/associations/associations) section of Virtual DataPort Administration Guide.
Hope this helps!