Ogólnie rzecz biorąc, ENUM
typy nie są przeznaczone do użycia w takich sytuacjach. Dzieje się tak szczególnie w przypadku, gdy zamierzasz zapewnić elastyczność dodawania lub usuwania ról w przyszłości. Jedyny sposób na zmianę wartości ENUM
jest z ALTER TABLE
, podczas gdy definiowanie ról we własnej tabeli będzie wymagało po prostu nowego wiersza w roles
tabela.
Ponadto za pomocą roles
tabela umożliwia dodanie dodatkowych kolumn, aby lepiej zdefiniować rolę, np. description
pole, które zaproponowałeś w Opcji 1. Nie jest to możliwe, jeśli użyjesz ENUM
wpisz jak w Opcji 2.
Osobiście nie wybrałbym ENUM
w tych scenariuszach. Może widzę, że są używane w kolumnach o absolutnie skończonym zbiorze wartości, takich jak {Spades, Hearts, Diamonds, Clubs}
zdefiniować kolor karty, ale nie w przypadkach takich jak ten, o którym mowa, ze względu na wspomniane wcześniej wady.