Podglądanie zależności obiektów bazodanowych – cz. I (drzewo zależności)

Nie zawsze jest tak wspaniale, że uczestniczymy w projekcie od etapu projektowania bazy danych, jej implementacji i wdrażania. Niejednokrotnie przychodzi nam zmierzyć się z istniejącym już projektem bazodanowym, który stanowi dla nas wielką niewiadomą. Do tego: brak osoby, która ma wiedzę biznesową, brak dokumentacji projektu, brak nawet opisu kolumn. Jak sobie z tym poradzić? Przede wszystkim nie wpadać w panikę 😉 A potem nie pozostaje nam nic lepszego jak przeglądanie zawartości tabel i domyślanie się, co się w nich znajduje, przyjmując nazwę tabeli jedynie jako wskazówkę, która nie zawsze jest właściwa… Podpowiedź mogą stanowić np. widoki czy procedury składowane, jednak nad wyraz pomocnym narzędziem jest sprawdzanie zależności między obiektami bazy danych. Spróbujmy zatem pobawić się w Sherlocka Holmesa 😉

W celu sprawdzenia zależności między obiektami bazy danych można skorzystać z GUI SSMS. Jako bazę wzorcową przyjmujemy AdventureWorksDW2012. Należy kliknąć na danym obiekcie bazodanowym kliknąć PPM i wybrać opcję View Dependencies, przyjmijmy, że interesuje nas tabela dbo.FactInternetSales.

Zostanie wyświetlone okno Object Dependencies, które posiada dwie opcje:

  • Objects that depend on wybrany obiekt – czyli obiekty, które zależne są od wybranego obiekty; zmiana w wybranym obiekcie może skutkować na wyświetlone obiekty.

    Na zrzucie widzimy, że od tabeli FactInternetSales zależne są: jedna tabela (FactInternetSalesReason) oraz jeden widok (vDMPrep), na którym polegają cztery widoki (vAssocSeqLineItems, vAssocSeqOrders, vTargetMail, vTimeSeries)
  • Objects on which wybrany obiekt depends – czyli obiekty, od których zależy wybrany obiekt; zmiana w wyświetlonych obiektach mogą wpływać na wybrany obiekt.

    Na zrzucie widzimy, że tabela FactInternetSales zależna jest od pięciu tabel (DimCurrency, DimCustomer, DimDate, DimProduct, DimPromotion). Dodatkowo można zauważyć, że tabela DimCustomer zależna jest od tabeli DimGeography a ona z kolei zależna jest od tabeli DimSalesTeritory. Ponadto tabela DimProduct zależna jest od tabeli DimProductSubcategory, a ona z kolei zależna jest od tabeli DimProductCategory.

Należy zwrócić uwagę, że zależności wyświetlane są w formie drzewa zależności. Widzimy zatem wzajemne powiązania pomiędzy obiektami i jak zmiana w jednym obiekcie może spowodować lawinowe zmiany w pozostałych obiektach bazy. Właściwa interpretacja drzewa zależności niezwykle pomaga w analizie zastanego projektu bazodanowego. W celu analizy zależności relacji miedzy obiektami można wykorzystać także widoki systemowe, o których będzie mowa w II części niniejszego wpisu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *