Наша база данных является частью (специализированного) настольного приложения.
Основная цель - сохранить данные об определенных событиях .
События происходят каждые несколько минут.
Данные, собранные о событиях , часто изменяются с добавлением новых групп данных и заменой старых почти ежемесячно (данные поступают в определенные группы).
Я должен собрать базу данных для отслеживания событий. Первое, что можно сделать, - это просто иметь одну большую таблицу, где каждая строка является событием, и именно так выглядят наши данные, но это кажется нежелательным из-за наших постоянно меняющихся групп данных (то есть количество столбцов продолжайте расти постоянно, иначе мы будем постоянно иметь базу данных за эти месяцы, несовместимую с базой данных за последние месяцы - тьфу!). Из-за этого я веду к следующему, хотя это создает круговые ссылки. (Но, может быть, это глупая идея)
Создание таблиц, таких как
Таблица событий
Стол Группа Месяца 1
Стол Группа Месяца 2
...
Таблица событий имеет:
Первичный ключ, чей каскад удаления удаляет строки с внешними ключами, ссылающимися на него
Обнуляемый ключ foreighn для каждой таблицы группы данных
Каждая таблица группы данных имеет:
Первичный ключ, удаление которого каскадно обнуляет внешние ключи, ссылающиеся на него
Столбцы для данных в этой группе
Не обнуляемый внешний ключ обратно на событие
Это все еще оставляет вам растущую, изменяющуюся Таблицу событий (поскольку вам нужно добавлять новые столбцы внешнего ключа для каждой новой группы данных), но гораздо менее радикально. Однако он кажется более модульным, чем один гигантский стол. Это хорошее решение в этой ситуации? Если нет, то что?
Есть предложения?
P.S. Мы используем SQL Express или SQL Compact (в настоящее время мы экспериментируем с тем, который нам больше подходит)