Во-первых, я бы бросил вызов желанию разделить ваши данные по одной таблице за дату. Вместо этого я бы предложил просто иметь столбец в вашей таблице с именем effective_date
или аналогичный.
С точки зрения подсчета ссылок на filepaths
, это может быть выполнено несколькими способами, но для обеспечения инкапсуляции кода я бы рекомендовал один из следующих двух подходов ...
1. API хранимых процедур
Убедившись, что все операции INSERT, UPDATE и DELETE обрабатываются с помощью хранимых процедур, вы также можете инкапсулировать приращение и уменьшение счетчика ссылок на filepaths
. Пользователю / логину не требуется доступ к таблицам для операций записи, вместо этого они просто используют хранимую процедуру.
2. Триггеры
Для каждой таблицы events
можно создать триггер для инкапсуляции кода приращения и уменьшения счетчика ссылок. Всякий раз, когда содержимое таблицы изменяется, триггер запускает и распространяет последствия вашей бизнес-логики.
Многие люди уклоняются от триггеров, поскольку чувствуют, что они спрятаны, и могут иметь сложные взаимодействия при чрезмерном использовании. Я, однако, думаю, что они чрезвычайно полезны.
В любом случае все НАМНОГО упрощается, если иметь только одну таблицу, а не несколько таблиц.
Кроме того, большинство шаблонов SQL Design не учитывают «удаление таблицы» как действие «Бизнес как обычно». Создание или удаление таблиц, на мой взгляд, должно рассматриваться как изменение дизайна, а не как обработка данных.