CREATE TYPE item_source AS ENUM ('shop', 'neutral'); CREATE TABLE items ( id SERIAL PRIMARY KEY, name TEXT NOT NULL UNIQUE, source item_source NOT NULL, min_tier SMALLINT, max_tier SMALLINT, image_url TEXT NOT NULL, CONSTRAINT neutral_tier_matches_source CHECK ( (source = 'neutral' AND min_tier BETWEEN 1 AND 5 AND max_tier BETWEEN 1 AND 5 AND min_tier <= max_tier) OR (source = 'shop' AND min_tier IS NULL AND max_tier IS NULL) ) );