Przejdź do głównej zawartości

Model danych to szkielet

Dostępne także w 28 językach

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

An older room opened up mid-renovation: its timber beams exposed, a new beam held on steel props, the furniture waiting under dust sheets.
Obraz wygenerowany przez AI

Moduł 2 z 7 w rozdziale Myśleć jak architekt danych, pierwszym rozdziale kursu Data Architect. Każdy moduł jest samodzielny. Wstecz: Myśleć jak architekt · Dalej: Test Odwracalności

Pytanie, na które odpowiada ten moduł: dlaczego model danych jest ważniejszy niż wszystko, co na nim zbudowano, i jak go ocenić?

Kiedy uczę architektury danych, wciąż wracam do jednego zdania: model danych to szkielet.

Model danych to szkielet systemu. Wszystko inne buduje się wokół niego i to on trzyma resztę ciała w całości. Patrząc na człowieka, nie widzisz jego kości, ale to one decydują, jak wysoko stoi, jak się porusza i co jest w stanie unieść.

Pomyśl o wszystkim, co budujemy we wdrożeniu Salesforce. Wokół modelu danych budujemy automatyzację. Piszemy pod niego Apex i Flow, które go odczytują i aktualizują. Budujemy integracje, które wysyłają do niego dane i je z niego pobierają. Tworzymy na nim raporty i analizy, a wokół niego projektujemy bezpieczeństwo. Coraz częściej budujemy też agentów AI, którzy muszą te dane rozumieć i na ich podstawie działać. Wszystko to zależy od struktury pod spodem.

Dlatego tak ważne jest, żeby od początku dobrze zaprojektować model danych. Kości można później zmienić. Ale to raczej będzie bolało.

Dobry model danych zaczyna się od prostego pytania: co biznes naprawdę musi odwzorować? Nie „jakie mamy obiekty Salesforce?”. I na pewno nie „co mogę szybko zbudować?”.

Najpierw próbujemy zrozumieć biznes. Co jest w nim ważne? Jak te rzeczy są ze sobą powiązane? Kto jest ich właścicielem? Jak zmieniają się w czasie? Co trzeba zapamiętać, a co jest wspólne dla różnych procesów biznesowych? Dopiero gdy to zrozumiemy, powinniśmy zacząć przekładać to na obiekty, pola i relacje.

Brzmi to oczywiście. W praktyce bardzo łatwo zrobić to odwrotnie. Ktoś widzi coś, co wygląda jak szansa sprzedaży, zgłoszenie albo zasób, i od razu zaczyna wokół tego projektować. Czasem to dokładnie właściwy ruch. Czasem próbujemy wcisnąć kwadratowy kołek w okrągły otwór, a kiedy wokół tej decyzji zbuduje się już dość dużo, wyciągnięcie kołka staje się bardzo kosztowne.

Oto pytanie, które słyszę bez przerwy. Firma klienta może mieć wiele punktów dostaw. Czy każdy punkt powinien być kontem, czy obiektem niestandardowym? Zanim odpowiesz, zauważ, co musisz najpierw wiedzieć: czym jest punkt dostaw dla tego biznesu i co się z nim dzieje. To właśnie modelowanie biznesu przed obiektami. (Moją odpowiedź podam w rozdziale 3.)

Kiedy patrzę na model danych, chcę, żeby przeszedł trzy testy: wspierał biznes, rósł razem z biznesem i działał wydajnie.

Wspierać. Model musi wspierać to, co biznes naprawdę próbuje osiągnąć. Jest wielka różnica między modelem, który technicznie potrafi przechować dane, a takim, który dobrze odwzorowuje biznes. Jeśli ciągle dodaję dziwne pola, specjalne flagi, skomplikowaną automatyzację i wyjątki, bo model nie do końca pasuje, zaczynam się zastanawiać, czy problem naprawdę leży w automatyzacji. Może to model jest zły. Dobry model powinien sprawiać, że biznes staje się łatwiejszy do zrozumienia, a nie trudniejszy.

Rosnąć. Mówiąc o wzroście, nie mam na myśli tylko większej liczby rekordów. Wolumen ma znaczenie: dziesięć tysięcy rekordów i sto milionów to zupełnie inne problemy. Ale firmy rosną też w złożoności. Dodają produkty, wchodzą na nowe rynki, przejmują inne firmy, zmieniają procesy, dodają kanały i podłączają nowe systemy. Odkrywają, że coś, co uważały za jedną rzecz, to w rzeczywistości pięć różnych rzeczy. Model, który pięknie działa dziś, może stać się pułapką, jeśli nie ma w nim miejsca na jutro. Dlatego wolę projekty, które rosną przez dodawanie, od projektów, które ciągle zmieniają to, co już istnieje. Dodanie czegoś nowego jest zwykle łatwiejsze niż przedefiniowanie czegoś, od czego zależą dziesiątki innych rzeczy.

Działać. Dane nie leżą bezczynnie. Zapisujemy je, wyszukujemy, odpytujemy, udostępniamy, raportujemy i integrujemy, a coraz częściej systemy AI pobierają je jako kontekst, zanim zaczną działać. Model może pięknie wyglądać na diagramie, a i tak być fatalny w eksploatacji. Projektujemy więc zarówno pod kątem tego, jak dane są przechowywane, jak i tego, jak będą używane.

I model musi działać dalej. Musi działać w skali: gdy rośnie liczba użytkowników, gdy rośnie wolumen danych, w realnych warunkach i w szczytach, w najbardziej obciążony dzień roku, a nie w przeciętny. I musi działać dalej, gdy wydarzy się coś nieoczekiwanego.

Wspierać. Rosnąć. Działać. Do tych trzech testów będziemy wracać przez cały kurs.

Wspierać, Rosnąć, Działać Model danych, fundament systemu, a pod nim trzy testy. Wspierać: czy pasuje do biznesu? Rosnąć: czy może rosnąć przez dodawanie, a nie zmienianie? Działać: czy wytrzymuje skalę i szczyty? Model danych fundament systemu Wspierać Czy pasuje do biznesu? Rosnąć Czy może rosnąć przez dodawanie, nie zmienianie? Działać Czy wytrzymuje skalę i szczyty? Wspierać. Rosnąć. Działać. Do tych trzech testów będziemy wracać. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Widziałem, jak modele danych idą w złą stronę na trzy sposoby.

Pierwszy to wybór złej rzeczy na samym początku. Używamy obiektu standardowego, bo wygląda na wystarczająco podobny, a potem latami dodajemy wyjątki, bo nigdy tak naprawdę nie pasował. To jest ten kwadratowy kołek.

Drugi to model zbyt płaski. Wszystko trafia do jednego obiektu i na początku wydaje się to cudownie proste. Potem biznes rośnie i odkrywamy, że niektóre z tych rzeczy mają własny cykl życia, mogą występować w wielu egzemplarzach, potrzebują własnych zabezpieczeń albo mają własne relacje. Nagle odwzorowujemy relację jeden-do-wielu polami Pole 1, Pole 2 i Pole 3 albo coraz bardziej skomplikowanymi flagami i automatyzacją. Model nie zostawił nam miejsca na wzrost.

Trzeci to błąd odwrotny: nadmierna normalizacja. Tworzymy elegancki diagram, obiekt za obiektem, każde pojęcie idealnie oddzielone. Technicznie piękne, w praktyce nieznośne. Użytkownicy z trudem to rozumieją, a układy stron i strony Lightning, z listą powiązanych rekordów za listą powiązanych rekordów, zaczynają sprawiać wrażenie bez dna. Zapytania się komplikują, automatyzacja przechodzi przez coraz więcej relacji, raportowanie staje się trudniejsze, a platforma wykonuje więcej pracy, żeby odpowiedzieć na zwykłe pytania biznesowe.

Co jest więc poprawne: płasko czy znormalizowanie? Nie ma na to wzoru. Masz w głowie obraz optymalnego modelu i rozumiesz kompromisy, gdy się od niego oddalasz. To jest sztuka architektury i wrócimy do niej w module 4 oraz w następnym rozdziale, w którym uczymy się modelować. Na razie zapamiętaj, że sama struktura jest decyzją architektoniczną.

Zbyt płasko, w sam raz, nadmierna normalizacja Trzy sposoby zamodelowania tych samych zatwierdzeń. Zbyt płasko: jedna tabela Szansa sprzedaży z polami Zatwierdzający 1, 2 i 3 oraz ich datami. W sam raz: konto ma szanse sprzedaży, a szansa sprzedaży ma zatwierdzenia, każde z osobą zatwierdzającą i datą. Nadmierna normalizacja: szansa sprzedaży rozbita na sześć powiązanych tabel, od Wniosku o zatwierdzenie i Kroku zatwierdzenia po Zatwierdzającego kroku, Rolę zatwierdzającego i Decyzję o zatwierdzeniu. ZBYT PŁASKO: JEDNA CHAOTYCZNA TABELA W SAM RAZ NADMIERNA NORMALIZACJA ma ma Szansa sprzedaży Kwota Etap Zatwierdzający 1 Data zatwierdzenia 1 Zatwierdzający 2 Data zatwierdzenia 2 Zatwierdzający 3 Data zatwierdzenia 3 Konto Szansa sprzedaży Zatwierdzenie Zatwierdzający Data zatwierdzenia Szansa sprzedaży Wniosek o zatwierdzenie Krok zatwierdzenia Zatwierdzający kroku Rola zatwierdzającego Decyzja o zatwierdzeniu Nie ma wzoru. Miej w głowie obraz optymalnego modelu i rozumiej kompromisy, gdy się od niego oddalasz. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Gdy system już działa, staję się bardzo ostrożny wobec fundamentalnych zmian w modelu danych.

Załóżmy, że pole tekstowe istnieje od lat i ktoś mówi: „Właściwie już tak tego nie używamy. Zmieńmy je na liczbę”. Brzmi jak zmiana pola. Ale co od tego pola zależy? Flow, Apex, raporty, integracje, potoki danych, aplikacje zewnętrzne, agenci AI. I co się stanie z danymi historycznymi? Sama platforma nie pozwoli zmienić typu pola, dopóki odwołuje się do niego kod lub Flow, co pokazuje, jak daleko sięga taka zmiana.

Czasem właściwą odpowiedzią nie jest przerabianie tego, co już istnieje. Zależnie od tego, jak poważna jest zmiana, wolę stworzyć coś nowego, przeprowadzić świadomą migrację i wycofać starą strukturę:

Dodawaj, zamiast przerabiać. Wycofuj, zamiast zaskakiwać.

Salesforce daje ci nawet sposób, żeby zapisać to w metadanych: Field Usage pola można ustawić na DeprecateCandidate, czyli „zaplanowane do wycofania i już nieużywane”. To oznacza pole dla każdego, kto czyta obiekt; nie ukrywa go, więc jego wycofanie nadal jest decyzją, którą musisz przeprowadzić.

Bo kiedy inne części architektury od czegoś zależą, zmiana jego znaczenia może być dużo groźniejsza niż zmiana jego nazwy. Najgorszy przypadek to pole, którego nazwa zostaje ta sama, a zawartość się zmienia: wszystko dalej w łańcuchu wciąż ufa nazwie.

Wycofuj, nie przerabiaj: zastępowanie pola Ta sama Dostawa pokazana trzy razy. Przed: pole Sztuki przechowywane jako tekst. W trakcie: Sztuki (tekst) jest przekreślone i oznaczone jako przestarzałe, a obok stoi nowe pole Liczba sztuk (liczba), oznaczone jako nowe, podczas gdy każdy flow, raport i integracja przechodzą na nie. Po: zostaje tylko Liczba sztuk (liczba). Dodawaj, zamiast przerabiać; wycofuj, zamiast zaskakiwać. PRZED W TRAKCIE PO dodaj nowe pole przenieś wszystkich odbiorców Dostawa Data dostawy Status Sztuki (tekst) Dostawa Data dostawy Status Sztuki (tekst) PRZESTARZAŁY Liczba sztuk (liczba) NOWY Dostawa Data dostawy Status Liczba sztuk (liczba) Dodawaj, zamiast przerabiać. Wycofuj, zamiast zaskakiwać. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Nawet coś tak prostego jak zaznaczenie pola wyboru Wymagane przy polu może stać się bombą zegarową. Jeśli masz już zebrane dane, część rekordów nie będzie miała tego pola wypełnionego. Potem, po dniach, tygodniach albo miesiącach, ktoś aktualizuje jeden z tych rekordów i zapis kończy się błędem z powodu wymaganego pola, a nikt nie zna tej wartości. Prosta zmiana, taka jak oznaczenie pola jako wymaganego, może mieć niezamierzone i opóźnione skutki. Do pól wymaganych i do tego, kiedy wartość jest naprawdę znana, wrócimy w rozdziale 3.

Poza egzaminem: AI też buduje na szkielecie. Poproś narzędzie AI o zbudowanie aplikacji, a w kilka minut wygeneruje obiekty, pola, Flow, Apex, komponenty i testy. Jeśli pierwotny model danych był zły, nie uniknęliśmy skutków złej decyzji; przyspieszyliśmy je, bo każda wygenerowana warstwa to kolejna rzecz zależna od tej struktury. Dlatego chcę, żeby model danych wygenerowany przez AI przeglądał architekt, człowiek, który go rozumie i za niego odpowiada. Moduł 7 rozwija ten temat.

W tym kursie będziemy rozmawiać o wielu technologiach: obiektach i relacjach, dużych wolumenach danych, zapytaniach, integracji, migracji, transakcjach, bezpieczeństwie, Data 360 i AI. Pod tym wszystkim leży model danych.

Jeśli model wspiera biznes, może rosnąć razem z nim i działa wydajnie przy tym, jak będziemy używać danych, zbudowaliśmy solidny fundament. Jeśli fundament będzie zły, wszystko później stanie się trudniejsze.

Model danych to szkielet. Architekci powinni być bardzo ostrożni, kiedy projektują szkielet. Zmiany w istniejących strukturach mogą mieć kaskadowe konsekwencje.

  • Czy model wspiera biznes, może z nim rosnąć i działa wydajnie przy tym, jak dane będą używane.
  • Czy pojęcie pasuje do obiektu standardowego, czy jest kwadratowym kołkiem.
  • Jak płaski albo jak znormalizowany ma być model i dlaczego.
  • Czy zmiana szkieletu powinna być dodaniem, migracją albo wycofaniem, a nie zmianą w miejscu.