One status table for all models? lets say I have a users,posts and categories tables ..


users table would have statuses like ( active, expired .. etc )
posts table would have statuses like ( published, draft, archived .. etc )
categories would also have different statuses


Is it bad if I did my tables like this:

users table:

- id
- name
- email
- password
- status_id


posts table:

- id
- title
- desc
- status_id


categories table:

- id
- title
- status_id


status table:

- id
- name ( active, expired , published, draft, archived .. etc )
I would think so. Especially if you don't want the status published on users.. If you want to add a status to one, you're going to special case code for one of the consumers to exclude?

I would keep it simple -- two separate tables. Or if they're immutable (you won't be deleting and updating) status's and you're only using them on the one table, you can use an ENUM macro/check constraint.