Seven Simple Rules

Rule #1: Data first, structure later. Maybe.

Explanation

I recommend not to worry about a declared data structure in an ERD sense. Initially.

Learn to love nt:unstructured (& friends) in development.

My bottom line: Structure is expensive and often it is entirely unnecessary to explicitly declare structure to the underlying storage.

There is an implicit contract about structure that your application inherently uses. Let’s say I store the modification date of a blog post in a lastModified property. My App automatically knows to read the modification date from that same property again, there is really no need to declare that explicitly.

Further data constraints like mandatory or type and value constraints should only be applied where required for data integrity reasons.

Example

The above example of using a lastModified Date property on for example, “blog post” node, really does not mean that there is a need for a special node type. I would definitely use nt:unstructured for my blog post nodes at least initially. Since in my blogging application, all I am going to do is to display the lastModified date anyway (possibly “order by” it) I barely care if it is a Date at all. Because I implicitly trust my blog-writing application to put a “date” there anyway, there really is no need to declare the presence of a lastModified date in the form of a node type.