Если ваша проблема действительно так проста, просто используйте VIEWS:
CREATE TABLE food (
id SERIAL,
name TEXT NOT NULL,
category TEXT NOT NULL,
PRIMARY KEY(id),
CHECK(category = 'fruit' OR category = 'veggie')
);
CREATE UNIQUE INDEX food_name_udx ON food(name);
CREATE VIEW fruit AS
SELECT id, name FROM food WHERE category = 'fruit';
CREATE VIEW veggie AS
SELECT id, name FROM food WHERE category = 'veggie';
Используйте DOMAINS или внешнюю таблицу с FOREIGN KEY CONSTRAINT, если категория превышает 5-10 записей.