Leyendo un poco sobre el MySQL enum, supongo que el equivalente más cercano sería un simple restricción de comprobación
CREATE TABLE sizes (
name VARCHAR2(10) CHECK(name IN ('small','medium','large'))
);
pero que no permite hacer referencia al valor por el índice. Una más complicada relación de clave externa también sería posible
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
Mientras se opera a través de la vista, parecería que su pudo replicar la funcionalidad razonablemente bien.
Ahora, si admite soluciones PL/SQL, puede crear tipos de objetos personalizados que podrían incluir lógica para limitar el conjunto de valores que pueden contener y tener métodos para obtener los ID y obtener los valores, etc.
Tienes Enums en MySQL, son bastante útiles :) ¡Gracias de todos modos! –
No estoy seguro de que esto esté más cerca, pero pensé que lo tiraría allí. –
Sí, está más cerca, y es también la solución que estoy usando actualmente, pero solo deseaba que hubiera una mejor manera. –