Esto es para responder la parte:
Estaba tratando de entender si las tablas de dimensiones también pueden ser tablas de hechos o no.
La respuesta corta (INMO) es No. Eso se debe a que los 2 tipos de tablas se crean por diferentes razones. Sin embargo, desde la perspectiva del diseño de una base de datos, una tabla de dimensiones podría tener una tabla principal como el caso de la tabla de hechos, que siempre tiene una tabla de dimensiones (o más) como principal. Además, las tablas de hechos se pueden agregar, mientras que las tablas de dimensiones no se agregan. Otra razón es que se supone que las tablas de hechos no deben actualizarse en su lugar, mientras que las tablas de Dimension se pueden actualizar en algunos casos.
Más detalles:
Las tablas de hechos y dimensiones aparecen en lo que comúnmente se conoce como esquema en estrella. Un propósito principal del esquema en estrella es simplificar un conjunto complejo de tablas normalizadas y consolidar datos (posiblemente de diferentes sistemas) en una estructura de base de datos que se pueda consultar de una manera muy eficiente.
En su forma más simple, contiene una tabla de hechos (Ejemplo: StoreSales) y una o más tablas de dimensiones. Cada entrada de Dimensión tiene 0,1 o más tablas de hechos asociadas (Ejemplo de tablas de dimensión: Geografía, Artículo, Proveedor, Cliente, Hora, etc.). También sería válido que la dimensión tuviera un padre, en cuyo caso el modelo es del tipo "Snow Flake". Sin embargo, los diseñadores intentan evitar este tipo de diseño, ya que provoca más uniones que un rendimiento lento. En el ejemplo de StoreSales, la dimensión Geografía podría estar compuesta por las columnas (GeoID, ContenentName, CountryName, StateProvName, CityName, StartDate, EndDate)
En un modelo de Snow Flakes, podría tener 2 tablas normalizadas para la información geográfica, a saber: Tabla de contenido, Tabla de países.
Puede encontrar muchos ejemplos en Star Schema. Además, consulte esto para ver una vista alternativa del modelo de esquema en estrella Inmon vs. Kimball . Kimbal tiene un buen foro que quizás también quieras visitar aquí: Foro de Kimball .
Editar: Para responder a un comentario sobre ejemplos de 4NF:
- Ejemplo de una tabla de hechos que viola 4NF:
Hecho de ventas (ID, BranchID, SalesPersonID, ItemID, Amount, TimeID)
- Ejemplo de una tabla de hechos que no viola 4NF:
Ventas agregadas (BranchID, TotalAmount)
Aquí la relación está en 4NF
El último ejemplo es bastante poco común.