В базе данных Вы использовали бы поле даты или поля года и месяца, если Вам только требуются год и месяц?

Добавить свойство Имена к элементу вашего члена:

Item itemMembers = doc.replaceItemValue("Members", members);
itemMembers.setNames(true);

Преобразует записи членов в действительные значения Имен, которые могут обрабатываться Domino для прав доступа.

8
задан Jonathan Leffler 11 March 2009 в 02:34
поделиться

10 ответов

Используйте поле даты. Начиная с полей даты поддержки SQL исходно, его легкое для фильтрации для определенных дат при помощи оператора Where.

Эти 2 поля имеют преимущество того, чтобы быть некоторыми что быстрее [...]

Ваш Запрос Select не является Вашим узким местом, таким образом, Вы не должны волноваться об этом. Удобочитаемость и прагматическая программа более важны, чем "воспринятое узкое место".

19
ответ дан 5 December 2019 в 06:10
поделиться

Я использовал бы поле даты, даже если Вам только требуются год и месяц, Вы ничего не теряете путем сбора всех данных. Как общепринятая практика я всегда собираю все данные, когда когда-либо возможно.

1
ответ дан 5 December 2019 в 06:10
поделиться

Я использовал бы отдельные столбцы, главным образом потому что это будет допускать лучшее использование индексов. Например, я не думаю, что индекс на седле даты и времени поможет, если Вы будете просто обеспокоены данными с данного месяца (не год).

1
ответ дан 5 December 2019 в 06:10
поделиться

Если нет преимущество реального исполнения хранения года и месяца отдельно, я придерживался бы даты. Относительно индексации, если имеют Вас два столбца, необходимо будет создать индекс на комбинации столбцов, а не один для столбца даты. Дата будет преобразована внутренне в длинное значение, таким образом, требуемое пространство памяти не будет действительно проблемой.

Кроме того, думайте о возможной боли обслуживания с двумя полями. У Вас были бы поля на два дб, возможно два поля на объекте или потребности создавать/анализировать месяц и год к/от дб. Сохраните это простым с датой и позвольте DB отслеживать Вашу целостность данных.

Я работаю с данными как Вы описанный - даты истечения срока, где день всегда является прошлым днем месяца, таким образом, нам только требуются месяц и год. Мы храним их как дату.

1
ответ дан 5 December 2019 в 06:10
поделиться

Хотя не сразу использования Вам, IBM Informix Динамический Сервер поддерживает тип:

DATETIME YEAR TO MONTH

Это хранит точно, что Вы хотите - год и месяц. Это имеет свое использование. Семейство ДАТ И ВРЕМЕН типов включает много других типов, которые иногда имеют их использование - и некоторые, которые имеют предельную полезность, при этом каноническим примером является МЕСЯЦ ДАТЫ И ВРЕМЕНИ К МИНУТЕ. (Оборотная сторона типа является подробными нотациями, должен был управлять им, но существует много операций, которые могут быть сделаны на любых из типов ДАТЫ И ВРЕМЕНИ.)

Во многих DBMS можно поместить ограничения на столбцы, поэтому если бы Вы идете с подходом на два столбца, Вы поместили бы a CHECK(month_column BETWEEN 1 AND 12) ограничение на столбец, чтобы гарантировать, что пользователь не поместил недопустимое значение в таблицу. Вы могли бы даже применить ограничение на столбец года также.

Кроме того, некоторый DBMS позволяют Вам создавать пользовательские типы, и тип месяца года довольно прост, когда они идут. Детали зависят от DBMS, конечно.

1
ответ дан 5 December 2019 в 06:10
поделиться

Я сохранил бы столбец даты и времени и два вычисляемых столбца с месяцем и годом (индексированными, конечно). Имейте мой пирог и съешьте его также :)

1
ответ дан 5 December 2019 в 06:10
поделиться

Если Вы будете ожидать запросы формы, "дай мне все строки в июле, независимо от года", то их будет немного легче записать с отдельными столбцами месяца и года. Отдельный индекс для столбца месяца должен сделать это мгновенным.

Иначе я пошел бы для единственного столбца даты: простая, понятая, встроенная проверка и работа математических функций даты. Ваше единственное беспокойство - то, что кто-то плохо знакомый с дизайном задастся вопросом, почему все всегда происходит на первом из месяца.

Существует еще одна причина использовать отдельные столбцы месяца и года, с которыми я столкнулся: когда месяц не известен. Я использовал это для приложений, которые позволяют предстоящему событию быть "когда-то в 2009". В этом случае использование ПУСТОГО УКАЗАТЕЛЯ в столбце месяца решает проблему приятно. Нет никакого простого способа сделать это со столбцом типа даты, если Вы не придумываете некоторый ужасный взлом как средства 2-го января, месяц неизвестен.

1
ответ дан 5 December 2019 в 06:10
поделиться

Думайте об этом этот путь: Однажды кто-то приедет к Вам с требованием для улучшения приложения со способностью к не, только сохраняют год и месяц, но также и день. Вы затем добавили бы дополнительный столбец в течение дня? И затем, следующая вещь, они могли бы хотеть, чтобы Вы также сэкономили время.

Как легкий это должно было бы улучшить функциональность, если у Вас есть отдельные столбцы в течение года/месяца/дня? Если у Вас есть единственный столбец даты?

Я пошел бы для столбца даты поэтому одного.

1
ответ дан 5 December 2019 в 06:10
поделиться

Если бы Вы собираетесь выполнить много операций в день поле затем, я разорвал бы его в отдельные столбцы и соглашение с подтверждением правильности данных или в ограничении таблицы или в DAL.

Например, создавая отчеты по продажам днем, месяц, год намного более эффективен, когда поля разделяются. Так как причина - это, Вы не должны использовать функции даты и времени для разрывания даты группировки.

Если это будет что-то как день рождения, где я мог бы запросить на нем время от времени затем, я не буду волноваться об этом и просто оставлять его в поле даты.

1
ответ дан 5 December 2019 в 06:10
поделиться

Вероятно, не потому что самый маленький тип данных datetime в SQL Server (Microsoft) smalldatetime который 4 байта длиной. При необходимости только в месяце и году затем, Вам нужны 1 байт в течение месяца и 2 байта в течение года.

0
ответ дан 5 December 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: