This is a work in progress.
This is a collection of thoughts based on my own experiences designing and maintaining databases. I'm going to assume that you're already familiar with the Relational Model and understand how things like Foreign Key constraints work. I'm also going to assume that you're using a database that has fully formed features like transactions and check constraints (if you're still using MySQL, you're doing yourself and your customers a serious disservice).
All examples are for PostgreSQL. If you're using something else, you'll need to check with the documentation for comparable features.
- Organizing Source Code
- Replaceable vs. Irreplaceable Objects
- Migration Ready Source
- Table Design
- Naming Conventions
- Constraints
- Migrations
- Feature Detection
- Nuke Replaceable Objects Without Regret
- Code Like Replaceable Objects Don't Exist
Unconfirmed topics:
- Git Versioning
- Triggers
- Functions
- Large scale redesigns (ie. that last guy was such a bonehead)
- Migrating from other RDBMS
- Foreign Data Wrappers (FDW)
- Use the Index, Luke: a fantastic resource on how to write and use indexes
- Modern SQL: beyond SQL-92 (not for MySQL users!)
- The Database Programmer: advanced articles on database design and lover of the "Less Code, More Data" mantra