We do have someone here who posts that idea regularly but I'm not sure what the alternative is. You need to define the categories, your other option is to hard-code them into a value list. That makes them part of the design and not data. As you might imagine, I disagree completely with the opinion that a table with a single field or a PK and a text value is not valid.
I typically would use an autonumberID for each table. That allows the text value to change without having to update all related records.
tblCategory
CategoryID (autonumber PK)
Category
tblSubCategory
SubCategoryID (autonumber PK)
CategoryID (FK to tblCategory and first field of unique Index)
SubCategory (second field of unique index)
The unique index for the second table limits a SubCategory from occurring more than once per Category. The autonumber PK cannot enforce business rules like this. I'm not sure what this app is all about but it is certainly feasible for a SubCategory to be assigned to multiple Categories. For example some tea with extra caffeine might also be a stimulant.