У меня есть таблица клиентов с информацией о наших клиентах (ID, логин, имя, контактная информация, разные параметры, столбец TS и т.д., ~ 15 столбцов, ~ несколько сотен клиентов).
Теперь нам нужно отправлять ежедневные обновления нашим крупнейшим клиентам (< 10% от всех клиентов). И мне нужно сохранить временную метку последнего обновления, которое было отправлено клиенту, поэтому в следующий раз я отправлю только новые обновления (я имею в виду обновления в строках порядка с TS больше, чем хранимые TS).
Если я добавлю новый столбец "LastUpdatesSentTS" в таблицу клиентов, то, как я понимаю, он будет соответствовать правилам нормализации (если нет, укажите ссылку, которая докажет, что она нарушит нормализацию).
Но, как я также знаю, с точки зрения физической базы данных лучше создать новую таблицу с двумя столбцами [CustomerID, LastUpdatesSentTS], потому что только менее 10% клиентов будут иметь эту информацию TS. Я имею в виду, что если я добавлю столбец в таблицу Customers - большинство клиентов будут иметь нуль в этой колонке. Кроме того, если я создам отдельную новую таблицу, возможно, будет лучше сбросить булевский столбец "SendUpdates" из таблицы клиентов (потому что я смогу понять, какие клиенты нуждаются в обновлениях, которые нужно отправить, присоединив таблицу клиентов к новой таблице). Кроме того, в этом случае я боюсь, что через несколько лет у меня будет куча очень маленьких таблиц, когда все это может быть в таблице клиентов (без нарушения нормализации, как я понимаю).
Простыми словами, я вижу 2 возможных дизайна таблиц:
1)
Table customers:
[CustomerID, Name, ..., SendUpdates, LastUpdatesSentTS]
2)
Table customers:
[CustomerID, Name, ...]
Table customer_updates_sending:
[CustomerID, LastUpdatesSentTS]
Как вы думаете?