В целом я бы сказал, что один рекорд в месяц является более общим решением.
Важная проблема заключается в том, является ли «информация» логически всегда единственным полем. Если в месяц действительно имеется несколько данных, или, если это вообще возможно, что в будущем будет, чем положить их в одну таблицу, станет серьезной болью.
Другой вопрос, что вы будете делать с этими данными. Вы не говорите, что такое «информация», поэтому просто для обсуждения давайте предположим, что это «продажи за месяц». Вы когда-нибудь захотите сказать: «В какие месяцы у нас было более 1 000 000 долларов в продажах?» ? С одной записью в месяц это простой запрос: «выберите год, месяц с продаж, где month_sales> 1000000». Теперь попробуйте сделать это с помощью таблицы за год. «выберите год,« Янв »из year_sales, где jan_sales> 1000000 union select year, 'Feb' from year_sales, где feb_sales> 1000000 union select year, 'Mar' from year_sales, где mar_sales> 1000000 union ..." и т. д. Или, может быть, d prefer "select year, case when jan_sales> 1000000 then 'Jan = yes' else 'Jan = no', case when feb_sales> 1000000 then 'Feb = yes' else 'Feb = no' ... для оставшихся месяцев .. . from year_sales, где jan_sales> 1000000 или feb_sales> 1000000 или mar_sales> 1000000 ... "Yuck.
Имея много небольших записей, это не столько больший ресурс, сколько меньше, но больших записей. Да, общее количество дискового пространства, безусловно, будет больше из-за накладных расходов на запись, а поиск индексов будет несколько медленнее, потому что индекс будет больше. Но разница, вероятно, будет незначительной, и, откровенно говоря, в производительности базы данных есть так много факторов, которые трудно предсказать.
Но я должен признать, что я столкнулся с очень похожими проблемами и пошел другим путем: мне нужен набор флагов для каждого дня недели, говоря: «Вы работаете в этот день». Я боролся с тем, создавать ли отдельную таблицу с одной записью в день, но в итоге я поставил семь полей в одну запись. Я думаю, что никогда не будет дополнительных данных за каждый день без каких-либо радикальных изменений в дизайне, и у меня нет оснований когда-либо хотеть смотреть только на один день. Дни используются для расчета расписания и назначения сроков, поэтому я не могу себе представить, в контексте этого приложения, когда-либо желающих сказать «дайте мне всех людей, которые работают во вторник».Но я с готовностью представляю одни и те же данные в другом приложении, используемом именно с этим вопросом.
+1, если каждый месяц нужен второй фрагмент информации. – ceejayoz