Show Me The Data

Posted

Having written several articles about how DrProject works, I figured it was time to talk about how its database is organized. Of course, that meant figuring it out myself, which took some digging: I eventually dumped the PostgreSQL schema and started doodling. The result is cleaner than I expected, though there are a few fields whose purpose I still don’t understand:

DrProject Database Schema

The dashed lines indicate constraints that aren’t enforced by the database; we’ll make them explicit as part of Version 1.2. We probably won’t tidy up the inconsistent names of fields, though—we’re trying hard to make sure that 1.2 doesn’t require schema changes. Oh, and the fields marked as dates and Booleans (‘#’ and ‘?’ respectively, as opposed to ‘o’ for integer and ‘+’ for text) are actually stored as integers right now (Unix timestamps and 0/1, also respectively). I think this is a holdover from SQLite, but again, I’ll dig.

Outstanding questions: