Я думаю, что вы делаете вещи для себя сложнее, чем вам нужно. Почему бы вам просто не определить таблицу следующим образом:
create table daily_views
( post_id int not null
, view_date date not null
, count int not null
, primary key (post_id, view_date)
, foreign key (post_id) references post(post_id)
)
Если у вас нет дочерней таблицы, которая ссылается на таблицу daily_views
, нет особого преимущества в том, чтобы иметь идентификатор автоинкремента на daily_views
. Фактически, вы бы просто потратили место на индекс, который менее полезен, чем естественный ключ, который равен post_id
и view_date
.
.
Нет смысла разбивать день, месяц и год на отдельные столбцы. Если вы храните дату в виде одного поля, это более эффективно, и вы можете легко агрегировать данные по любому диапазону дат, а не только по дням месяца, месяцам и годам.
Используя этот формат таблицы, вы оптимизируете используемое пространство и доступ к записям, что уменьшит ваши опасения по поводу производительности и масштабируемости. Что касается количества строк, которые вы генерируете, я не думаю, что вам нужно беспокоиться об этом. Многие базы данных имеют таблицы с миллионами строк. Вы просто хотите убедиться, что каждый ряд максимально компактен.