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