У меня есть вопрос о моделировании схемы DataWarehouse / star.
У меня есть показания счетчиков (факты) для разных мест (размеров). В каждом месте есть несколько организаций с разными ролями. Я хотел бы смоделировать это в схеме хранилища данных. Текущий план:
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)
Последняя таблица - это та самая, о которой идет речь. Несмотря на то, что таблица имеет уникальное ограничение, уникальное ограничение не передается в таблицу фактов, о чем я не знаю.
Я хочу использовать эту схему, чтобы ответить на такие вопросы, как суммировать meter_reading, сгруппированную по организациям, где они находятся в роли "оператора"
e.g.
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
Есть ли здесь какие-либо проблемы, поскольку таблица измерений не имеет уникального ключа, который используется совместно с таблицей фактов? Очевидно, что запросы нужно будет обрабатывать осторожно, чтобы избежать двойного подсчета фактов.