Bouquet's zero-commute is a powerful feature of the Bouquet Server that gives you a quick start for your data modeling. Zero-commute algorithm runs whenever you connect the Bouquet Server to a datasource and when your database's definition changes (new table, new column etc). The algorithm creates:
- a Domain for each table it finds in your database,
- a Dimension for each non-digit columns of the table,
- a Metric for each digital columns (integer, float, etc.),
- a Segment for each boolean columns,
- a Relation between two Domains for each foreign key
Domains created by the zero-commute algorithm are called a dynamic Domains. In order to distinguish them from domains created manually using the OB1 Modeler, zero-commute adds a tilde ("~") in front of the dynamic domains.
If you connect to a database and run the zero-commute algorithm in more than one schemas then Bouquet Server for tables with the same name will append the name of the schema in the name of the Domain. For example, if you have created public.table1 and test.table1, Bouquet Server will create the Dimensions table1 (public) and table1 (test).
For each relation the zero commute will create a corresponding dimension in the child domain (the one who's importing the key. For example if there is a relation 1-many between Customer table and Subscription table, Bouquet is automatically adding a customer dimension in the Subscription Domain)
The algorithm will also detect Dimensions that are dates (or timestamps) and automatically sets them as a Period, if the table is a fact table (yes, zero-commute detects fact tables!).
Of course with the OB1 Model you can add new domains, relations, dimensions and metrics. These will be kept in Bouquet Server and not be propagated to the Database