Каков наилучший способ определения типа данных «ENUM» при создании таблицы в Oracle 10? - PullRequest
0 голосов
/ 19 сентября 2010

Например: я хочу тип данных с именем сезона (= {весна, лето, осень, зима}

1 Ответ

5 голосов
/ 19 сентября 2010
  1. Определить таблицу season, имеющую два столбца: season_id и season_name:

    CREATE TABLE "SEASON" (
       "SEASON_ID" NUMBER NOT NULL ENABLE, 
       "SEASON_NAME" VARCHAR2(6 BYTE) NOT NULL ENABLE, 
       CONSTRAINT "SEASON_PK" PRIMARY KEY ("SEASON_ID")
    )
    
  2. Добавьте столбец season_id в таблицу (таблицы), записи которых нуждаются в идентификации сезона, и создайте отношение внешнего ключа к таблице season

Следующими опциями являются ограничения CHECK, но они не подходят, если вы хотите использовать значения в более чем одной таблице, поскольку они не могут управляться централизованно. Триггеры также являются опцией, но в этом случае триггеры больше похожи на пушку для уничтожения комара по сравнению с ограничением CHECK ...

Что лучше?

Цитировать sql_mommy:

Лучше всего [отдельная таблица с отношением внешнего ключа].
Это единственное место для управления нужным типом, и оно гибкое, так что вы можете добавлять / вычитать значения или редактировать по мере необходимости. Это делает для хорошей индексации тоже. И в случае, если вы подумаете: «но содержимое этого перечисления никогда не нужно будет редактировать» - по моему опыту, ВСЕ типы данных в конечном итоге изменяются. Например, если у вас есть список месяцев, позже вы можете добавить различные сокращения месяцев или связанные с бизнесом ассоциации с этими месяцами. Использование реляционной структуры базы данных обеспечивает максимальную гибкость и простоту обслуживания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...