In Qlik Sense association is automatically created if any two tables have same field name, so its not just restricted to IDs or key fields but you need to ensure that two tables are connected through single field and there must not be a loop created while associating tables. Sometimes two fields can be used for association but its suggested to avoid as far as possible.
Loop can be understood as A->B->C->A, Here C connected to A via B and also C directly connected to A, this kind of looping is not allowed in Qlik data model to keep data association and selections unambiguous.
You can do this in QlikSense, By default when you load the data into the Qlik, it has the capability to associate all the fields with same name (associative model).
You can also join different fields using the following functions:
(Inner, Outer, Left, Right) join or Keep