Я создаю хранилище данных бедного человека, используя СУБД. Я определил ключевые атрибуты, которые будут записаны как:
- sex (true/false)
- демографическая классификация (A, B, C и т.д.)
- место рождения
- дата рождения
- вес (записывается ежедневно): факт, который записывается
Мои требования состоят в том, чтобы иметь возможность запускать запросы "OLAP", которые позволяют мне:
- 'slice and dice'
- "сверлить вверх/вниз" данные и
- в целом, иметь возможность просматривать данные с разных точек зрения.
После прочтения этой области, общий консенсус, похоже, заключается в том, что это лучше всего реализовать с использованием таблиц измерений, а не нормализованных таблиц.
Предполагая, что это утверждение верно (т.е. решение лучше всего реализуется с использованием таблиц фактов и измерений), я хотел бы получить некоторую помощь в разработке этих таблиц.
"Естественные" (или очевидные) размеры:
- Размер даты
- Географическое расположение
У кого есть иерархические атрибуты. Однако я борюсь с тем, как моделировать следующие поля:
- sex (true/false)
- демографическая классификация (A, B, C и т.д.)
Причина, по которой я борюсь с этими полями, заключается в следующем:
- У них нет очевидных иерархических атрибутов, которые будут способствовать агрегации (AFAIA), которые предполагают, что они должны находиться в таблице фактов.
- Они в основном статичны или очень редко меняются - что предполагает, что они должны быть в таблице измерений.
Может быть, эвристика, которую я использую выше, слишком груба?
Я приведу несколько примеров того типа анализа, который я хотел бы провести в хранилище данных - надеюсь, что это прояснит ситуацию.
Я хотел бы обобщить и проанализировать данные по полу и демографической классификации - например, Ответьте на вопросы:
- Как мужские и женские весы сравниваются по разным демографическим классификациям?
- Какая демографическая классификация (мужчины и женщины) показывает наибольшее увеличение веса в этом квартале.
и др.
Может ли кто-нибудь уточнить, являются ли секс и демографическая классификация частью таблицы фактов, или являются ли они (как я подозреваю) размерными таблицами.?
Также, считая, что они являются таблицами измерений, может ли кто-нибудь описать структуры таблиц (т.е. поля)?
"Очевидная" схема:
CREATE TABLE sex_type (is_male int);
CREATE TABLE demographic_category (id int, name varchar(4));
может быть неправильным.