Какова наилучшая практика для хранения метаданных отдельных записей в базе данных?
Мне нужно хранить общие метаданные, такие как время создания и время последнего обновления для многих таблиц в моей базе данных. Я нашел несколько разных решений:
Храните метаданные прямо в таблицах.
Плюсы:
- Метаданные напрямую связаны с записями
- Для получения метаданных не требуется никаких объединений
Минусы:
- Требуется много повторяющихся столбцов (если не используется наследование)
- Метаданные и бизнес-данные не разделены
Создайте общую таблицу метаданных с помощью программных внешних клавиш, чтобы связать данные с правильными таблицами и записями.
Плюсы:
- Нет дублирования столбцов
- Метаданные отделены от бизнес-данных
Минусы:
- Нет прямых связей между метаданными и данными (FK не могут быть использованы)
- Соединения требуют дополнительного условия
Создайте отдельные таблицы метаданных для каждой таблицы, требующей метаданных.
Плюсы:
- Метаданные напрямую связаны с записями
- Метаданные отделены от бизнес-данных
Минусы:
- Требуется много дополнительных таблиц
- Требуется много повторяющихся столбцов (если не используется наследование)
Есть ли больше вариантов, плюсов или минусов, чем те, которые я упомянул здесь? И какова лучшая практика для хранения этих метаданных?
hstore
илиJSON
столбца может решить вашу проблему?