2010-07-08 1 views
2

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

TableX 
Columns: isMonday, BeginingHourMonday, EndHourMonday, isTuesday, BeginingHourTuesday, EndHourTuesday and so on... 

Это не-sql? Я не просил к personn, создавшей becaus мне стыдно: $

Bye.

+0

являются таблицами 'isMonday' и' isTuesday'? –

+0

Просьба подробно описать эту структуру. Каковы таблицы? Каков контекст и назначение этой таблицы в частности (например, журнал транзакций, отслеживание рабочего времени, описание периода времени)? Ответ на ваш вопрос во многом зависит от точной структуры и использования. –

ответ

1

Это называется календарь таблицы.

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

1

Это полностью ненормированные данные. не-sql вид. Мне просто интересно, почему месяц не включен. это может увеличить коэффициент де-нормировки.

1

Гидеон @ Брайан прав. Так что @iamgopal. И я тоже, когда говорю «это зависит от характера данных, которые моделируются и хранятся в базе данных».

Если это список дней с определенными атрибутами/свойствами для каждого дня, то да, я бы назвал его денормализованным - и 9 раз из 10 (или более), это, вероятно, так будет. (Я помню базу данных с 13 столбцами, по одному для каждого месяца в году и по одному для всего, а в конце года пользователь добавил еще 13 столбцов на следующий год. «Mr. Database», мы позвонили ему.)

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

И, конечно же, это может быть комбинация двух данных, которые первоначально были нормированы до одной строки в день, а затем преднамеренно денормализированы по соображениям производительности. Возможно, в 9 раз из 10 они нуждаются в информации за несколько недель, и анализ показал значительный прирост производительности, объединив эти данные в одну строку?

Как бы то ни было, без дополнительной информации об использовании и рациональности я занимаюсь сайтом @iamgopal и поддерживаю его.

0

Похож структурой для расписания данной недели.
Если нормировать, это может выглядеть

колонки: день, StartHour, endHour
Когда это превращается в сводную таблицу в Excel, вы будете иметь расписания вид структуры, которая хороша для входных экранов/(в отличие от создания представления с нормализованной структурой).

0

Глядя на тот стол. Я не вижу веских оснований для этого, даже по соображениям производительности.

Давайте посмотрим, если я изменю isMonday, isTuesday и т. Д. ID_Day Я все равно получаю такую ​​же скорость и логику. И если я изменю BeginingHourMonday на StartHour и EndHourMonday на EndHour, я все равно получаю тот же эффект.

У меня все еще есть день недели и время начала и окончания, и это основная идея, которую я получаю из таблицы struture. Может быть, я чего-то не вижу.

С уважением