Как уже говорили другие, это очень субъективно и там, где нет абсолютных прав (при этом, безусловно, может быть неправильный способ сделать это, или, по крайней мере, некоторые неблагоприятные).
Лично я бы создал таблицу с именем "category" с полями id_cate, name_cate и description_cate (или что-то похожее, но вы поняли основную идею). Причина, по которой можно объединить каждое имя с помощью «_cate», заключается в том, что когда вы связываете таблицы вместе в запросе, где поля имеют одно и то же имя, вы теперь по расширению будете определять, к какой таблице оно принадлежит, что устраняет необходимость делать
select * from Table1Name inner join Table2Name on Table1Name.ID = Table2Name.ID
Вы просто напишите:
select * from Table1Name inner join Table2Name on id_tab1 = id_tab2
Как я уже говорил и было сказано другими, нет лучшего способа сделать это. Каждый просто разрабатывает стиль / технику, с которой он наиболее удобен и кажется наиболее читабельным. Пока вы последовательны и уверены в своем стиле, это не имеет большого значения.