If you’re a fan of Object Relational Modelling, well even if you’re not…
There once was a tool called InfoModeler that allowed you to design a graphical ORM by making factual statements about objects, properties and the relationships between them:
“[User] represents [Organisation] / [Organisation] is represented by [User]
Each Organisation is represented by some User.
It is possible that some User represents more than one Organisation
and that some Organisation is represented by more than one User.”
It then built a data dictionary and translated the model and dictionary into a database schema. Visio bought the company shortly before they were purchased by Microsoft and InfoModeler briefly reappeared as VisioModeler before a relatively limited version of it was merged into the Visio product as the ORM template.
But Microsoft thankfully still has VisioModeler available for download as an “unsupported tool”. Every time I start to design persisted objects I reach for this tool. It’s not as useful as it once was and I can’t always directly use the database schemas it creates, but nothing else helps me really think through the relationships between objects and how that translates into the relationships between tables in a relational database in quite the same way.