Неосновные таблицы базы данных необходимы, если ваши данные более сложны, чем пост-модель WordPress, они будут огромными, и в них будет много метаданных, которые будут искать.
Формат EAV, который WordPress использует для своей мета-записи, не подходит для многокритериального поиска.
Если вы разделите свою мета на множество записей, у вас будет много записей на пост в мета-таблице постов, и поиск любого поста с помощью метасов будет намного медленнее.
Если вы храните все мета-последовательности, сериализованные в массиве, и у вас есть только одна запись в пост-мета, на этот раз вы будете вынуждены выполнять только текстовый поиск внутри этой мета, и вы не сможете использовать операторы сравнения непосредственно в вашем sql-запросе.
Не большая проблема, если ваш плагин не будет иметь тысячи записей и связанных мета.
Но главная проблема, если ваш плагин собирается делать что-то большое.
Ваша ситуация, имя файла в качестве независимой записи и 3 записи метаданных, прикрепленных к этой записи, не кажутся такими уж большими. Для этого вы можете использовать таблицу сообщений WordPress и таблицу метаданных.
НО, если люди собираются много раз искать эти 3 мета, ОСОБЕННО в сочетании, то я бы порекомендовал вам создать отдельные таблицы.
С этим форматом будет достаточно одной таблицы с одной записью, которая также содержит все мета, и будет молниеносно запрашивать.
Кстати, если вы используете таблицы WordPress, а также используете кэширование запросов, пользователь, который ищет ваши данные, со временем будет кэшироваться и будет меньше загружаться. Но это не так разумно, как делать отдельные таблицы.