What's the best database design for implementing categories and tags? For example, a news website might have "categories" such as Politics, Business, Entertainment, Sports, Lifestyle, Tech, Science, Health, ... etc. Each article belongs to only one category, but can have multiple "tags". Tags are just like hashtags we see on social media and can be very detailed.

This StackOverflow question shows the best approach to design a database for "tags". What if I need to add "categories"?

I'm not sure if it's okay to simply record each article's category in its table row. Maybe adding a column named "Category"? If so, is the performance still good when visitors want to search, say, all articles which belong to "Business" category and have "Facebook" tag?
If each article has at most one (or one and only one) category, then you would include the category information in the article table.

I would not include the text name of the category in the table. I would have a separate category table with the category name and an integer ID value. As there are presumably a relatively small number of possible categories, this shouldn't have a major impact on performance; and it would prove its value the first time someone had you change the name of a category.

You'll also probably want an index on article.category_id, if searches by tag and category will be very common (as I imagine they would be).