У меня есть вопрос моделирования DataWarehouse / звездообразной схемы.
У меня есть показания счетчика (факты) для разных мест (измерений). Каждое место имеет несколько организаций в разных ролях. Я хотел бы смоделировать это в схеме хранилища данных. Текущий план:
fact_meter_readings
timestamp,
location_id,
meter_reading (number)
dim_locations
location_id
name
dim_location_organisations
location_id
organisation_id
role_id
organisation_name
role_name
Unique key (location_id, organisation_id, role_id)
Последняя таблица, о которой идет речь. Хотя таблица имеет уникальное ограничение, уникальное ограничение не является общим для таблицы фактов, о которой я не совсем понимаю.
Я хочу использовать эту схему для ответа на такие вопросы, как Сумма метрического чтения, сгруппированного по организации, в которой они находятся в роли «оператор»
Например,
select
lo.organisation_name,
sum(meter_reading)
from fact_meter_readings m
inner join dim_location_organisations lo
on lo.location_id = m.location_id
where lo.role_id = xyz
group by lo.organisation_name
Есть ли здесь проблема, поскольку таблица измерений не имеет уникального ключа, который используется совместно с таблицей фактов? Очевидно, что запросы нужно обрабатывать осторожно, чтобы избежать двойного учета фактов.