Bill Gibson's Blog

Thoughts on building SQL Server Data Tools

Oslo CTP update; Data Modeling Design Patterns in M

As modelers, one of the things we’re doing all the time is looking for patterns – trying to distinguish what in each model is truly unique to the domain from that which is more broadly applicable, and then either using or adapting existing patterns or harvesting new patterns to put in our back pocket.  The January Oslo CTP update (woohoo!!) on the Oslo Dev Center includes an initial set of data modeling design patterns.  These patterns, described and illustrated in M, include patterns for modeling enumerations and relationships, including closed type-based enumerations, open extent-based enumerations, and one-to-many, many-to-many and one-to-one relationships.  

While this may seem like pretty basic stuff you’ll likely find some or all of it useful, particularly if you’re new to M and coming at it and repository modeling with an OO rather than relational mindset.  The patterns all have code samples so you may find it useful to have the patterns open while you’re coding.

We’ll add more patterns as our experience grows and the language evolves and is more fully implemented.  In the pipeline are patterns for vertical partitioning, including patterns that help when mapping a generalization hierarchy in a conceptual model to a relational design.   You can see some early exploration of these kinds of patterns in the domain schemas included in the CTP.

As always, we’d love to get your feedback.  If you have any comments on the patterns and the usefulness of this kind of material let us know.  And if you have any broadly useful patterns in your back pocket that might map nicely into M they would be great to hear about also.