В большинстве проектов есть какие-то данные, которые по существу статичны между версиями и хорошо подходят для использования в качестве перечисления, такие как статусы, типы транзакций, коды ошибок и т.д. Например, ради, я просто использую общий список состояний
public enum Status {
ACTIVE(10, "Active");
EXPIRED(11, "Expired");
/* other statuses... */
/* constructors, getters, etc. */
}
Я хотел бы знать, что другие делают с точки зрения сохранения данных, подобных этим. Я вижу несколько вариантов, каждый из которых имеет некоторые очевидные преимущества и недостатки:
- Сохранять возможные статусы в таблице состояния и сохранять все возможные объекты домена состояния, кэшированные для использования во всем приложении.
- Используйте только перечисление и не сохраняйте список доступных статусов, создавая согласованность данных святой войны между мной и моим администратором базы данных
- Сохранять статусы и поддерживать перечисление в коде, но не связывать их вместе, создавая дублированные данные.
Моим преимуществом является второй вариант, хотя мой администратор баз данных утверждает, что нашим конечным пользователям может потребоваться доступ к необработанным данным для создания отчетов, а не к сохранению статусов приведет к неполной модели данных (контр-аргумент: это можно решить с документацией).
Существует ли соглашение, которое большинство людей здесь используют? Каковы опыты людей с каждым и есть ли другие альтернативы?
Edit:
Подумав об этом некоторое время, моя настоящая упорная борьба связана с обработкой значений id, привязанных к статусам в базе данных. Эти значения будут вставлены в качестве данных по умолчанию при установке приложения. На этом этапе у них будут идентификаторы, которые можно использовать в качестве внешних ключей в других таблицах. Я чувствую, что мой код должен знать об этих идентификаторах, чтобы я мог легко получить статусные объекты и назначить их другим объектам. Что мне делать с этим? Я мог бы добавить еще одно поле, например "код", чтобы посмотреть на вещи, или просто посмотреть статусы по имени, что нехорошо.