2010-03-24 7 views
0

Большинство сайтов фиксируют дату (например, дату рождения) как единое целое (например, через управление календарем) или вместо этого в виде отдельных полей (дата, месяц, год).Представление даты в пользовательском интерфейсе

  1. Есть ли какие-либо преимущества при отображении их в виде отдельных полей?
  2. Являются ли они представлены в базе данных как тип данных DATE или как отдельные поля.

Я просто пытаюсь понять профи & минусы представления поля даты.

ответ

2

Никогда не разбивайте дату на отдельную базу данных полей. Это вещь: дата. Он находится в базе данных как одно поле даты.

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

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

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

Кроме того, части даты (в частности, месяц и день) имеют такие сложные отношения (от 28 до 31 дня в месяц, основанные на кажущихся случайными правилами), которые вы никогда не хотите пытаться выполнить арифметику даты в своем собственном прикладном программном обеспечении. Используйте библиотеки. Используйте библиотеки баз данных.

Дисплей пользовательского интерфейса может иметь отдельные поля, чтобы сделать его «проще» для пользователей. [Лично я нахожу много полей, чтобы быть много визуального беспорядка.] Но в базе данных не должно быть отдельных полей.

+0

Я согласен с частью проверки, которой становится трудно управлять, если они управляются отдельно – Sam

+1

@Samuel: не «трудно»: «невозможно». Расчеты по дате действительно трудно получить. Вычисление вычислений даты вне методов данных БД настолько сложно, что я предпочитаю называть это «невозможным». –

2

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

+0

Даже если мне нужно найти все даты рождения в мае месяце, не было бы возможным, если вы выполняете запрос в комбинированном поле даты? – Sam

+0

оцените ваши входы на мой комментарий – Sam

+0

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

1

Легче скопировать код, если вы сделаете это как отдельные поля. Но определенно лучше сделать их как единое целое - лучший пользовательский интерфейс.

Вы можете использовать любое представление в БД. Я лично, вероятно, объединил бы их в одну дату, так что все связанные данные были бы инкапсулированы как можно меньше единицы.

Все, что вам нужно проверить (например, пример дня рождения), можно легко сделать, когда оно хранится как одно поле даты.

Смежные вопросы