Çok büyük bir kategori yelpazesi olacağını düşünmüyorum hocam. Gelen veriyi kategorilerde taratıp yoksa etiket olduğunu kabul edip ona göre işlem yapmanı öneririm.

Ekstra: Genelde fonksiyon oluştururken örneğin kullanıcı bilgilerini almak için id ve username'i fonksiyona gönderebiliyoruz. Hangi değerin gönderildiğini anlamak için is_numeric() ile kontrol edip eğer sayısal bir değer ise veritabanından id sütununu kontrol edip diğer bilgilere ulaşıyorum, eğer değilse username sütunundan kullanıcıya ulaşmaya çalışıyorum. Bu tarz işlemlerde ikisinden birini tercih ediyorum. Senin sorunda ise hangi tablo daha kısa ise önce onu taratmanı öneririm.