Всё уже придумано до нас. Есть схемы связей many_to_many, one_to_many, many_to_one. Комбинируя их, можно легко реализовать схему. Большинство систем для работы с БД (имею в виду AcriteRecord и ORM — составляющие) это умеют.
Кстати, 4 запроса, каждый из которых просматривает 1 строку при поиске, лучше, чем один запрос, просматривающий 10000.