In my experience most apps designed around relational databases will benefit from:
- one-to-many and many-to-many mappings
- soft delete
- log tables / append-only tables
- entity-attribute-value
- meta columns (creator_id, timestamp, version, etc)
Beginning with them is way easier than patching afterwards
Reality: - team size dominates methodology and user base size dominates architectural decisions