You should use primary keys for your id columns in Postgres as they provide several benefits including uniqueness, non-nullability, automatic indexing, logical replication, referential integrity, and query optimization. Primary keys ensure data integrity by preventing duplicate values and nulls, while unique constraints can lead to problems such as allowing null values and degrading performance. To work around these issues, you can combine the NOT NULL constraint with the UNIQUE constraint or use the SERIAL data type to automatically generate a unique sequential integer value for each row. Additionally, using primary keys simplifies logical replication by providing an automatic replica identity, whereas unique constraints require manual specification of a replica identity and more complex composite unique constraints. Overall, it is recommended to always use primary keys for your id columns in Postgres.