Что касается public в PostgreSQL, public определяется как имя схемы по умолчанию, если имя схемы не указано. Однако это можно изменить в файле postgresql.conf в строке search_path = xxx. Чтобы увидеть, какие текущие схемы по умолчанию настроены на выполнение следующей команды SQL:
SHOW_ search_path;
Если вы хотите изменить путь к схеме по умолчанию в сеансе открытых запросов, введите следующую команду SQL:
SET search_path = new_path;
Однако в примере, который вы опубликовали, я считаю, что конфликт имен, с которым у вас проблемы, связан не с именем схемы, а с функцией именем параметра account_category и именем таблицы account_category. Вы можете переименовать имя вашего параметра, чтобы избежать этого конфликта. В базах данных со многими схемами для ясности я часто явно указываю public в начале имен объектов базы данных.
Что касается вашего второго вопроса, я не думаю, что PostgreSQL уникален в своем использовании public, но я знаю, что многие другие базы данных делают свои схемы по-другому.