Memory and CPU are affected by whether you join tables or not. Qlik recommends keeping tables normalized (Not Joined) in order to minimize incorrect calculations and also makes data easier to understand.
I think this article is relevant to your question:
I don't regard myself as a data modeling expert but here are a few thoughts I have on the matter. You should know that a lot of the answers you're looking for depend on the amount of data you have in your app and the structure of your ETL process (i.e. database vs qlik script transformations)
Here are some reasons you should have associations:
1. A narrower fact table with supporting dimension tables will be more efficient than one larger fact table; RAM and/or processing time will be reduced your app
2. If you want to create an app that incorporates two fact tables without a common link, you wouldn't be able to join them and instead would need to design a model that associates the data properly using a link table
3. A data model with no associations is less informative to developers and users
4. It may be a design requirement to refresh the data frequently and joins will bog down your script run time
In regards to what you said about the QIX engine, from what I've read, it associates data in either a left, right, or outer join depending on how the user is interacting with the application. If no filters are applied, it will produce a full outer join
It would be great to here from our experts on this.
To mark a reply as correct, simply click the Correct Answer button that appears below the post. You can read this guide for more info.
Let m know if you have any further questions.
Qlik Community Team
With rather simple datamodels the purely association of tables might be enough. But there are cases where you would get synthetic keys and/or circular references (of course this would be solvable but it would require some efforts) and/or you need to calculate something with fields from different tables and/or you need a specific datamodel-design for reasons of logic (for example are inner joins very well suited to filter tables), readability, maintainability and very important to ensure a certain performance from script and gui.
And beside joining there are other methods like concatenating and mapping to merge the data to get a well working datamodel.
This meant you will be have (nearly always) several different ways to create a datamodel and it will depend on your data, requirements and your experience which one will be the most suitable. Here you will find a good starting point in the topic of creating datamodels: Get started with developing qlik datamodels