create table boolean ( id integer primary key, name text not null unique ) insert into boolean (name) values ('true'); insert into boolean (name) values ('false'); create table document ( id integer primary key, name text not null unique, body text not null, is_archived not null integer, foreign key (is_archived) references boolean (id) on delete cascade on update no action );

Solved.

Bonus: DBAs hate this one weird trick that can free up incredible amounts of disk space by deleting just two rows.

Would this make 0 = true and 1 = false?
You’re right, that’s way too simple. Definitely need to rotate the booleans daily. For… security. Yeah, security.