Это ответ на часть:
Я пытался понять, могут ли таблицы измерений быть таблицей фактов или нет?
Короткий ответ (INMO): нет, потому что 2 типа таблиц создаются по разным причинам. Однако с точки зрения проектирования базы данных таблица измерений может иметь родительскую таблицу, как в случае с таблицей фактов, которая всегда имеет таблицу измерений (или несколько) в качестве родительской. Кроме того, таблицы фактов могут быть агрегированы, тогда как таблицы измерений не агрегированы. Другая причина заключается в том, что таблицы фактов не должны обновляться на месте, тогда как таблицы измерений в некоторых случаях могут обновляться на месте.
Подробнее:
Таблицы фактов и измерений отображаются в так называемой звездообразной схеме. Основная цель звездообразной схемы - упростить сложный нормализованный набор таблиц и объединить данные (возможно, из разных систем) в одну структуру базы данных, которую можно запрашивать очень эффективно.
В своей простейшей форме он содержит таблицу фактов (пример: StoreSales) и одну или несколько таблиц измерений. С каждой записью измерения связано не менее 0,1 таблицы фактов (пример таблиц измерений: география, позиция, поставщик, клиент, время и т. Д.). Допустимо также, чтобы у измерения был родитель, и в этом случае модель имеет тип "Snow Flake". Однако дизайнеры стараются избегать такого дизайна, поскольку он вызывает большее количество соединений, что снижает производительность. В примере StoreSales измерение "География" может состоять из столбцов (GeoID, ContenentName, CountryName, StateProvName, CityName, StartDate, EndDate)
В модели Snow Flakes у вас может быть 2 нормализованных таблицы для геоинформации, а именно: Content Table, Country Table.
Вы можете найти множество примеров на Star Schema. Кроме того, проверьте это, чтобы увидеть альтернативный взгляд на модель звездной схемы Инмон против Кимбалла . У Кимбала есть хороший форум, вы также можете посетить здесь: Форум Кимбалла .
Изменить: чтобы ответить на комментарий о примерах для 4NF:
- Пример таблицы фактов, нарушающей 4НФ:
Факт продаж (ID, BranchID, SalesPersonID, ItemID, Amount, TimeID)
- Пример таблицы фактов, не нарушающей 4НФ:
AggregatedSales (BranchID, TotalAmount)
Здесь соотношение находится в 4НФ
Последний пример довольно необычный.