Dies ist, um den Teil zu beantworten:
Ich habe versucht zu verstehen, ob Dimensionstabellen auch Faktentabellen sein können oder nicht.
Die kurze Antwort (INMO) lautet Nein. Dies liegt daran, dass die beiden Tabellentypen aus unterschiedlichen Gründen erstellt werden. Aus Sicht des Datenbankdesigns kann eine Dimensionstabelle jedoch eine übergeordnete Tabelle haben, während die Faktentabelle immer eine Dimensionstabelle (oder mehr) als übergeordnetes Element hat. Faktentabellen können auch aggregiert werden, während Dimensionstabellen nicht aggregiert werden. Ein weiterer Grund ist, dass Faktentabellen nicht an Ort und Stelle aktualisiert werden sollen, während Dimensionstabellen in einigen Fällen an Ort und Stelle aktualisiert werden könnten.
Mehr Details:
Fakten- und Dimensionstabellen werden in einem sogenannten Sternschema angezeigt. Ein Hauptzweck des Sternschemas besteht darin, einen komplexen normalisierten Satz von Tabellen zu vereinfachen und Daten (möglicherweise aus verschiedenen Systemen) in einer Datenbankstruktur zu konsolidieren, die auf sehr effiziente Weise abgefragt werden kann.
In seiner einfachsten Form enthält es eine Faktentabelle (Beispiel: StoreSales) und eine oder mehrere Dimensionstabellen. Jedem Dimensionseintrag sind 0,1 oder mehr Faktentabellen zugeordnet (Beispiel für Dimensionstabellen: Geografie, Artikel, Lieferant, Kunde, Zeit usw.). Es wäre auch gültig, wenn die Dimension ein übergeordnetes Element hätte. In diesem Fall ist das Modell vom Typ "Schneeflocke". Designer versuchen jedoch, diese Art von Design zu vermeiden, da dies zu mehr Verknüpfungen führt, die die Leistung beeinträchtigen. Im Beispiel von StoreSales kann die Geografiedimension aus den Spalten bestehen (GeoID, ContenentName, CountryName, StateProvName, CityName, StartDate, EndDate).
In einem Snow Flakes-Modell könnten Sie zwei normalisierte Tabellen für Geoinformationen haben, nämlich: Inhaltstabelle, Landestabelle.
Auf Star Schema finden Sie zahlreiche Beispiele. Schauen Sie sich dies auch an, um eine alternative Ansicht des Sternschemamodells Inmon vs. Kimball zu sehen . Kimbal hat ein gutes Forum, das Sie vielleicht auch hier ansehen möchten: Kimball Forum .
Bearbeiten: Um einen Kommentar zu Beispielen für 4NF zu beantworten:
- Beispiel für eine Faktentabelle, die gegen 4NF verstößt:
Verkaufsfaktor (ID, BranchID, SalesPersonID, ItemID, Amount, TimeID)
- Beispiel für eine Faktentabelle, die nicht gegen 4NF verstößt:
AggregatedSales (BranchID, TotalAmount)
Hier ist die Beziehung in 4NF
Das letzte Beispiel ist eher ungewöhnlich.