Мы храним данные о винной базе данных в нашей базе данных. Винтаж вина может быть номером или строка, такая как Non-Vintage.Лучший способ хранения поля базы данных, которое потенциально может быть числом или строкой
2010 означает, что виноград были собраны в 2010 году
невинтажных означает, что виноград собирают по неизвестному периоду времени.
Сначала мы решили сохранить это поле как строку, так как 2010 и Non-Vintage являются потенциально строковыми. Однако нам нужно иметь возможность сортировать годы или выполнять некоторую арифметику (т. Е. Год> 2010).
Мы рассматриваем как:
- Хранить данные, как номер и «Non-Vintage» будет назначены 0. Однако, мы должны были бы обеспечить странные валидации везде в приложении для обработки 0 стоимость.
- Сохраните год как номер и укажите логическое поле «non_vintage» для не-марочных вин.
Данные, вытащенные из базы данных, будут доставлены на front-end AngularJS через API. Код Javascript должен будет анализировать и использовать год в разных точках ... т. Е. «Показать мне все вина, где год> 2010».
У кого-нибудь есть мысли, по которым лучше и почему?
Когда вы говорите (выполняете какую-либо арифметику), вы приводите пример сравнительного оператора ... реальный вопрос: делаете ли вы какую-либо РЕАЛЬНУЮ арифметику? (т.е. +, -, *,/или хуже: дата "математика")? – Ditto
@ Ditto обновил мой вопрос с более подходящей информацией. И не сумасшедшая математика ... просто какое-то сравнение вроде «в этом году больше, чем в этом году» –