Name and reference objects. Not IDs It’s the indirection, stupid ! Object Oriented Design Tip # 1 Tired of IDs I_dentifiers are (almost) never present on the real world. So why should you build your models with them ?_ Objects can send messages to other objects if they know them. only Knowledge can be (temporary) or (strong). accidental essential knows essentially and that relation must be named. And naming is very important when dealing with objects. Object1 object2 Role naming is extremely important. Never qualify a relation exposing referenced object implementation. object1 should not name the variable object2id. Making such thing would imply a relational database implementation and thus mixing model specification with an relational implementation. essential accidental Objects should know other objects, not ids !