I'm writing an application that displays posts, much like a simple forum system. Posts can be marked as urgent by users when they submit the post, but a moderator must approve the "urgent" status. A post will still be displayed even if it has not been approved as urgent, but will just appear to be a normal post until the moderator approves the urgent status at which point the post will get special treatment.
I have considered two approaches for this:
1) have two flags in the posts tables. One to say the user has requested urgent status, and a second to indicate if admin has approved urgent status. Only if both are true will the post be show as being urgent.
2) have two tables. A requests pending table which holds all the pending urgent approvals. Once admin approves urgent status, I would delete the request from the pending table and update the posts table so that the urgent field becomes true for that post.
I'm not sure if either approach is better than the other.
The first solution means I only have one table to worry about, but it ends up with more fields in it. Not sure if this actually makes querying any slower or not, considering that the posts table will be the most queried table in the app.
The second solution keeps the posts table leaner but ads another table to deal with (not that this is hard).
I'm leaning towards the second solution, but wonder if I'm not over analysing hings and making my life more complicated than it needs to be. Advice?