Don't Do This with PostgreSQL
wiki.postgresql.org
wiki.postgresql.org
I don't see sufficient justification for "Don't use serial"--the some weird behaviors links to a 404 page.
The "Don't use varchar(n) by default" reasoning is similarly weak.
This post doesn't doesn't give enough detail reasoning to be self-evident, and other than the quality of formatting could be a collection of anyone's blog posts. Some recommendations seem to be solid, but mixed with the arbitrary ones loses some of its recommendation strength.
Use time + timezone if the time is always local to a particular user and should follow their time zone. E.g. wake up alarm, eat breakfast schedule,
The problem is these definitions are already a bit fuzzy and it's not always clear which type it is even to the person creating it.
https://news.ycombinator.com/item?id=42111896 "What I Wish Someone Told Me About Postgres"
Well, i think "char(1) not null" is a valid choice for a very compact 1-byte field, "smallint" is twice as big
The other types have overhead. A single-byte bytea will actually use 2 bytes, char(1) will use at least that much, and bit(8) will use 7 bytes. Smallint is strictly better for representing small numbers.