Hello v_pozidis
This question about Dictionnary has already been asked in this forum.
It is difficult to answer them very precisely.
For simplicity, a dictionnary is a tool where all assets are stored and managed.
The dictionary will normally be a relational database which will store all the development assets.
For that, we use Hashing. Hashing is a mathematical algorithm applied to a key to generate a position in a block of storage.
This algorithm ensures that only that key value equates with its block position and vice versa.
With MVD, if you check this option (see your image), a hashing is created for each table you check.
So, the main goal is to ^make faster all your requests between tables.
It's a real complex mechanism. Am I enough clear ?
About second question, if you check this option, that's mean every time you delete an item from this table (City in your example, non only this item is removed from table City, but all links created with other tables in you project are also removed.
Good day and happy Christmas to you, Dmitry and all MVD fans.
JB