Не для кого надеюсь не секрет, что являюсь "активным" программистом. Опыт, конечно, не пропьешь, но часто задаюсь вопросами оптимизации тех или иных решений, хотя и существующие работают не плохо. Поэтому те, кто не сталкивался с проектированием баз данных (созданием таблиц) и ничего не программировал, могут сразу не читать этот пост дальше.
Дано
(
Read more... )
Comments 16
Reply
Если я правильно понял задачу.
Зачем, кстати, по два поля на каждый кейс?
Reply
( ... )
Reply
Как вы сохраните информацию о том, что повторять 16 сенбября каждого 2-го года?
Reply
Reply
Для полного описания еженедельных повторений достаточно байта, а ежемесячных 32 битного слова.
Например повторение по вторникам и средам будет выглядеть как
00000110
выделение делается сравнением поля с маской.
Например маска вторника выглядит как
00000010
Тогда операция побитного "и" покажет имеет ли место событие во вторник.
В языках программирования обычно есть операция "побитного и"? судя по гуглу некоторые версии SQL в явном виде поддерживают тип BitString и операции с ним.
Для MS SQL это можно сделать, например операцией WHERE ((Поле \ Маска) mod 2) = 1,
Reply
Кстати, можно сделать еще поле NOT (например, я хочу во все дни месяца, кроме 10 числа)
Reply
Но весомый минус - это производительность.
При больших объемах повторяемых объектов обрабатывать их очень будет сложно.
Reply
Reply
Reply
Leave a comment