Мне нужно хранить правила перехода на летнее время (летнее время) для разных регионов мира в базе данных. У меня уже есть способ хранения регионов и субрегионов (таким образом, решается вся проблема "половина Австралии" / Аризона / Навахо ), но мне интересно, какой будет самая эффективная схема чтобы сделать это. Два варианта, как я их вижу:
- Иметь таблицу, которая содержит уникальную одну строку для каждого года и региона, в которой указаны время начала и окончания летнего времени, а также конкретное смещение
- Иметь таблицу, в которой хранится формула и эффективный диапазон дат для каждого региона (эффективный диапазон требуется для таких регионов, как Израиль)
Преимуществом первого является гибкость, поскольку буквально возможно все . К сожалению, это также требует (а) больше места и, соответственно, (б) много работы для ввода данных. Второй вариант хорош тем, что одна строка может соответствовать одному региону на протяжении десятилетий, но также требует некоторого синтаксического анализатора и интерпретатора языка на прикладном уровне. Поскольку эта база данных будет использоваться несколькими различными приложениями, написанными на языках без мощных возможностей обработки текста, я бы предпочел избежать этого пути.
Я хотел бы просто использовать zoneinfo или что-то в этом роде, но, к сожалению, в данном случае это не вариант. Кроме того, я не могу нормализовать информацию о дате, часовом поясе и летнем времени должен быть в базе данных для удовлетворения определенных случаев использования.
Есть ли у кого-нибудь опыт создания чего-то подобного? Кроме того, есть ли у кого-нибудь блестящие варианты, которые я, возможно, пропустил?