Четейки малко за MySQL enum, предполагам, че най-близкият еквивалент би бил просто ограничение за проверка
CREATE TABLE sizes (
name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
);
но това не ви позволява да препращате стойността по индекса. Възможна е и по-сложна връзка с външен ключ
CREATE TABLE valid_names (
name_id NUMBER PRIMARY KEY,
name_str VARCHAR2(10)
);
INSERT INTO valid_sizes VALUES( 1, 'small' );
INSERT INTO valid_sizes VALUES( 2, 'medium' );
INSERT INTO valid_sizes VALUES( 3, 'large' );
CREATE TABLE sizes (
name_id NUMBER REFERENCES valid_names( name_id )
);
CREATE VIEW vw_sizes
AS
SELECT a.name_id name, <<other columns from the sizes table>>
FROM valid_sizes a,
sizes b
WHERE a.name_id = b.name_id
Докато работите през изгледа, изглежда, че можете да възпроизведете функционалността сравнително добре.
Сега, ако приемете PL/SQL решения, можете да създадете персонализирани типове обекти, които биха могли да включват логика, за да ограничите набора от стойности, които могат да държат, и да имате методи за получаване на идентификаторите и за получаване на стойностите и т.н.