Ответ 1
Немного прочитав о перечисление MySQL, я предполагаю, что ближайший эквивалент будет простым проверочным ограничением
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, вы можете создавать собственные типы объектов, которые могут включать в себя логику, чтобы ограничить набор значений, которые они могут содержать, и иметь методы для получения идентификаторов и получения значений и т.д.