Look, Ma, no keys! (most of the time)
You may be used to define “keys” for your data in a conventional database (FileMaker, FoxPro, …)
Not so here. ooKeys exist, and there’s an unique Object Id, but
Everything else is an object relationship/association...
The key to “keys” is an association. An object (call it “A”) can have “pointers” to other persistent objects. Make “A” persistent itself - you have created a persistent selection. “A” can be pointed to by other objects -- create relationship trees. Make as many associations as you like. Make some which are only needed by you. Make global ones which are used by many people (e.g. the “Tag database”). Make them “after the fact” - you can add persistent selections whenever you want (“all the events which are interesting for me”).
It makes your designs much easier and more flexible.
The “pointers” are really object references or handles which help retrieve the pointed-to object
real C++ pointers are just numbers.