Projektowanie schematu magazynu danych

Ukończone

Podobnie jak wszystkie relacyjne bazy danych, magazyn danych zawiera tabele, w których są przechowywane dane, które chcesz analizować. Najczęściej te tabele są zorganizowane w schemacie zoptymalizowanym pod kątem modelowania wielowymiarowego, w którym miary liczbowe skojarzone ze zdarzeniami znanymi jako fakty mogą być agregowane przez atrybuty skojarzonych jednostek w wielu wymiarach. Na przykład miary skojarzone z zamówieniem sprzedaży (takie jak kwota zapłacona lub ilość uporządkowanych przedmiotów) mogą być agregowane według atrybutów daty, w której nastąpiła sprzedaż, klient, sklep itd.

Tabele w magazynie danych

Typowym wzorcem dla relacyjnych magazynów danych jest zdefiniowanie schematu zawierającego dwa rodzaje tabel: tabel wymiarów i tabel faktów .

Tabele wymiarów

Tabele wymiarów opisują jednostki biznesowe, takie jak produkty, osoby, miejsca i daty. Tabele wymiarów zawierają kolumny atrybutów jednostki. Na przykład jednostka klienta może mieć imię, nazwisko, adres e-mail i adres pocztowy (który może składać się z adresu ulicznego, miasta, kodu pocztowego i kraju lub regionu). Oprócz kolumn atrybutów tabela wymiarów zawiera unikatową kolumnę klucza, która unikatowo identyfikuje każdy wiersz w tabeli. W rzeczywistości często tabela wymiarów zawiera dwie kluczowe kolumny:

  • klucz zastępczy specyficzny dla magazynu danych i jednoznacznie identyfikuje każdy wiersz w tabeli wymiarów w magazynie danych — zwykle zwiększa liczbę całkowitą.
  • Klucz alternatywny, często klucz naturalny lub biznesowy używany do identyfikowania określonego wystąpienia jednostki w transakcyjnym systemie źródłowym, z którego pochodzi rekord jednostki , na przykład kod produktu lub identyfikator klienta.

Uwaga

Dlaczego mają dwa klucze? Istnieje kilka dobrych powodów:

  • Magazyn danych może zostać wypełniony danymi z wielu systemów źródłowych, co może prowadzić do ryzyka zduplikowania lub niezgodnych kluczy biznesowych.
  • Proste klucze liczbowe zwykle działają lepiej w zapytaniach, które łączą wiele tabel — typowy wzorzec w magazynach danych.
  • Atrybuty jednostek mogą ulec zmianie w czasie — na przykład klient może zmienić swój adres. Ponieważ magazyn danych jest używany do obsługi raportowania historycznego, warto zachować rekord dla każdego wystąpienia jednostki w wielu punktach w czasie; tak, aby na przykład zamówienia sprzedaży dla określonego klienta były liczone dla miasta, w którym mieszkały w momencie złożenia zamówienia. W takim przypadku wiele rekordów klientów będzie mieć ten sam klucz biznesowy skojarzony z klientem, ale różne klucze zastępcze dla każdego dyskretnego adresu, w którym klient mieszkał w różnym czasie.

Przykład tabeli wymiarów dla klienta może zawierać następujące dane:

CustomerKey CustomerAltKey Nazwisko Email Ulica City PostalCode CountryRegion
123 I-543 Navin Jones navin1@contoso.com 1 Główny St. Seattle 90000 Stany Zjednoczone
124 R-589 Mary Smith mary2@contoso.com 234 190th Ave Buffalo 50001 Stany Zjednoczone
125 I-321 Antoine Dubois antoine1@contoso.com 2 Rue Jolie Paryż 20098 Francja
126 I-543 Navin Jones navin1@contoso.com 24 125th Ave. Nowy Jork 50000 Stany Zjednoczone
... ... ... ... ... ... ... ...

Uwaga

Zwróć uwagę, że tabela zawiera dwa rekordy dla Navina Jonesa. Oba rekordy używają tego samego klucza alternatywnego, aby zidentyfikować tę osobę (I-543), ale każdy rekord ma inny klucz zastępczy. W tym celu można przypuszczać, że klient przeniósł się z Seattle do Nowego Jorku. Sprzedaż dokonana klientowi podczas pobytu w Seattle jest skojarzona z kluczem 123, podczas gdy zakupy dokonane po przeniesieniu do Nowego Jorku są rejestrowane w stosunku do rekordu 126.

Oprócz tabel wymiarów reprezentujących jednostki biznesowe często magazyn danych zawiera tabelę wymiarów reprezentującą czas. Ta tabela umożliwia analitykom danych agregowanie danych w odstępach czasu. W zależności od typu danych, które należy przeanalizować, najniższy stopień szczegółowości (określany jako ziarno) wymiaru czasu może reprezentować czasy (do godziny, sekundy, milisekund, nanosekundy, a nawet niższej) lub dat.

Przykład tabeli wymiarów czasu z ziarnem na poziomie daty może zawierać następujące dane:

DateKey DateAltKey DayOfWeek DayOfMonth Weekday Month Nazwa miesiąca Kwartał Rok
19990101 01-01-1999 6 1 Piątek 1 Styczeń 1 1999
... ... ... ... ... ... ... ... ...
20220101 01-01-2022 7 1 Sobota 1 Styczeń 1 2022
20220102 02-01-2022 1 2 Niedziela 1 Styczeń 1 2022
... ... ... ... ... ... ... ... ...
20301231 31-12-2030 3 31 Wtorek 12 grudzień 100 2030

Przedział czasu objęty rekordami w tabeli musi zawierać najwcześniejsze i najnowsze punkty w czasie dla wszystkich skojarzonych zdarzeń zarejestrowanych w powiązanej tabeli faktów. Zazwyczaj istnieje rekord dla każdego interwału z odpowiednim ziarnem między.

Tabele faktów

Tabele faktów przechowują szczegóły obserwacji lub zdarzeń; na przykład zamówienia sprzedaży, salda zapasów, kursy wymiany lub zarejestrowane temperatury. Tabela faktów zawiera kolumny dla wartości liczbowych, które mogą być agregowane według wymiarów. Oprócz kolumn liczbowych tabela faktów zawiera kolumny kluczy odwołujące się do unikatowych kluczy w powiązanych tabelach wymiarów.

Na przykład tabela faktów zawierająca szczegóły zamówień sprzedaży może zawierać następujące dane:

OrderDateKey CustomerKey StoreKey ProductKey (Klucz produktu) OrderNo LineItemNo Ilość UnitPrice Podatek ItemTotal
20220101 123 5 701 1001 1 2 2,50 0.50 5.50
20220101 123 5 765 1001 2 1 2.00 0,20 2,20
20220102 125 2 723 1002 1 1 4,99 0,49 5.48
20220103 126 1 823 1003 1 1 7.99 0.80 8.79
... ... ... ... ... ... ... ... ... ...

Kolumny klucza wymiaru tabeli faktów określają jego ziarno. Na przykład tabela faktów zamówień sprzedaży zawiera klucze dat, klientów, sklepów i produktów. Zamówienie może zawierać wiele produktów, więc ziarno reprezentuje pozycje liniowe dla poszczególnych produktów sprzedawanych w sklepach klientom w określonych dniach.

Projekty schematów magazynu danych

W większości transakcyjnych baz danych używanych w aplikacjach biznesowych dane są znormalizowane w celu zmniejszenia duplikacji. Jednak w magazynie danych dane wymiarów są zwykle deznormalizowane , aby zmniejszyć liczbę sprzężeń wymaganych do wykonywania zapytań dotyczących danych.

Często magazyn danych jest zorganizowany jako schemat gwiazdy , w którym tabela faktów jest bezpośrednio powiązana z tabelami wymiarów, jak pokazano w tym przykładzie:

A diagram showing a star schema.]

Atrybuty jednostki mogą służyć do agregowania miar w tabelach faktów na wielu poziomach hierarchicznych — na przykład w celu znalezienia całkowitego przychodu ze sprzedaży według kraju lub regionu, miasta, kodu pocztowego lub pojedynczego klienta. Atrybuty dla każdego poziomu mogą być przechowywane w tej samej tabeli wymiarów. Jeśli jednak jednostka ma dużą liczbę poziomów atrybutów hierarchicznych lub gdy niektóre atrybuty mogą być współużytkowane przez wiele wymiarów (na przykład zarówno klienci, jak i magazyny mają adres geograficzny), warto zastosować pewną normalizację do tabel wymiarów i utworzyć schemat płatka śniegu, jak pokazano w poniższym przykładzie:

A diagram showing a snowflake schema.

W tym przypadku tabela DimProduct została znormalizowana w celu utworzenia oddzielnych tabel wymiarów dla kategorii produktów i dostawców, a tabela DimGeography została dodana w celu reprezentowania atrybutów geograficznych zarówno dla klientów, jak i sklepów. Każdy wiersz w tabeli DimProduct zawiera wartości klucza dla odpowiednich wierszy w tabelach DimCategory i DimSupplier, a każdy wiersz w tabelach DimCustomer i DimStore zawiera wartość klucza dla odpowiedniego wiersza w tabeli DimGeography.