Как смоделировать ограничение для нескольких строк (для хранилища метаданных)
Предисловие: я знаю о дизайне снежинок, я часто создавал базы данных с этим.
Сейчас я экспериментирую с "мета-дизайном", который позволяет клиентам гибко настраивать несколько кубов фактов с несколькими измерениями.
Один из подходов означает создание своего рода "базы метаданных", то есть центральных таблиц для фактов, измерений, деревьев, моделей, а затем объединение их всех.
Таблица фактов будет выглядеть так:
FACTKEY FACTVALUE
89231 12.5$
89232 13.9$
Затем FACTKEY будет связан с моделью и ее размерами, например: (упрощенно - конечная база данных будет иметь искусственные ключи)
FACTKEY MODELKEY DIMKEY DIMVALKEY
89231 OPEX Country Czech
89231 OPEX Account Sales
89231 OPEX Product Bananas
"Модель" определяет, какие размеры будут использоваться. Это определено в другой таблице.
Проблема: как создать ограничение, которое гарантирует, что для определенной модели (например, "OPEX") всегда будет ровно 3 строки для каждого факта - одна для страны, одна для учетной записи, одна для продукта?