Wzory projektowe są zwykle związane z projektowaniem obiektowym.
Czy istnieją wzorce projektowe do tworzenia i programowania relacyjnych baz danych ?
Wiele problemów z pewnością musi mieć rozwiązania wielokrotnego użytku.
Przykłady obejmują wzorce do projektowania tabel, procedur przechowywanych, wyzwalaczy itp.
Czy istnieje internetowe repozytorium takich wzorców, podobne do martinfowler.com ?
Przykłady problemów, które mogą rozwiązać wzorce:
- Przechowywanie danych hierarchicznych (np. Pojedyncza tabela typu i wiele tabel z kluczem 1: 1 i różnicami ...)
- Przechowywanie danych o zmiennej strukturze (np. Kolumny ogólne vs xml vs kolumna rozdzielana ...)
- Denormalizuj dane (jak to zrobić przy minimalnym wpływie itp.)
design-patterns
database-design
rdbms
Sklivvz
źródło
źródło
Odpowiedzi:
W serii podpisów Martina Fowlera jest książka o nazwie Refaktoryzacja baz danych . Zawiera listę technik refaktoryzacji baz danych. Nie mogę powiedzieć, że tyle słyszałem listę wzorców baz danych.
Gorąco poleciłbym również wzorce modelu danych Davida C. Haya oraz kontynuację mapy metadanych, która opiera się na pierwszej i jest o wiele bardziej ambitna i intrygująca. Przedmowa sama w sobie jest oświecająca.
Świetnym miejscem do poszukiwania niektórych wstępnie konserwowanych modeli baz danych jest także seria danych Len Lenstona, seria danych 1, zawiera uniwersalne modele danych (pracownicy, konta, wysyłka, zakupy itp.). Tom 2 zawiera modele danych specyficzne dla branży (księgowość, opieka zdrowotna itp.), tom 3 zawiera wzorce modeli danych.
Wreszcie, chociaż ta książka pozornie dotyczy UML i modelowania obiektów, Modelowanie Petera Coada w kolorze z UML zapewnia proces modelowania jednostek oparty na „archetypach”, wychodząc z założenia, że istnieją 4 podstawowe archetypy dowolnego modelu obiektów / danych
źródło
Wzory projektowe nie są trywialnymi rozwiązaniami wielokrotnego użytku.
Wzory projektowe są z definicji wielokrotnego użytku. Są to wzorce, które można wykryć w innych dobrych rozwiązaniach.
Wzór nie nadaje się do wielokrotnego użytku. Możesz jednak zaimplementować swój projekt puchowy zgodnie ze wzorem.
Wzorce projektowania relacyjnego obejmują między innymi:
Relacje jeden do wielu (główny-detal, rodzic-dziecko) za pomocą klucza obcego.
Relacje wiele do wielu z tabelą pomostową.
Opcjonalne relacje jeden do jednego zarządzane za pomocą NULL w kolumnie FK.
Star-Schema: Dimension and Fact, OLAP design.
W pełni znormalizowany projekt OLTP.
Wiele indeksowanych kolumn wyszukiwania w wymiarze.
„Tabela odnośników”, która zawiera PK, opis i wartości kodowe wykorzystywane przez jedną lub więcej aplikacji. Dlaczego warto mieć kod? Nie wiem, ale kiedy trzeba ich użyć, jest to sposób na zarządzanie kodami.
Uni-table. [Niektórzy nazywają to anty-wzorem; to wzór, czasem zły, czasem dobry.] To jest stół z dużą ilością wstępnie połączonych rzeczy, które naruszają drugą i trzecią normalną formę.
Tabela tablic. Jest to tabela, która narusza pierwszą normalną formę, mając tablicę lub sekwencję wartości w kolumnach.
Baza danych o mieszanym zastosowaniu. Jest to baza danych znormalizowana do przetwarzania transakcji, ale z wieloma dodatkowymi indeksami do raportowania i analiz. To jest anty-wzór - nie rób tego. Ludzie i tak to robią, więc to wciąż wzór.
Większość ludzi, którzy projektują bazy danych, może łatwo wyrzucić pół tuzina „To kolejny z nich”; są to wzorce projektowe, których używają regularnie.
Nie obejmuje to administracyjnych i operacyjnych wzorców użytkowania i zarządzania.
źródło
AskTom jest prawdopodobnie najbardziej pomocnym źródłem najlepszych praktyk dotyczących baz danych Oracle. (Zazwyczaj po prostu wpisuję „asktom” jako pierwsze słowo zapytania Google na określony temat)
Nie sądzę, że naprawdę właściwe jest mówienie o wzorcach projektowych w relacyjnych bazach danych. Relacyjne bazy danych już stosują „wzorzec projektowy” do problemu (problemem jest „jak reprezentować, przechowywać i pracować z danymi przy zachowaniu ich integralności”, a projekt jest modelem relacyjnym). Innymi aplikacjami (ogólnie uważanymi za przestarzałe) są modele nawigacyjne i hierarchiczne (i jestem pewien, że istnieje wiele innych).
Powiedziawszy to, możesz rozważyć „hurtownię danych” jako nieco odrębny „wzorzec” lub podejście do projektowania baz danych. W szczególności możesz być zainteresowany czytaniem o schemacie Star .
źródło
Po wielu latach rozwoju bazy danych mogę powiedzieć, że nie ma żadnych przejść i kilka pytań, na które należy odpowiedzieć przed rozpoczęciem:
pytania:
Nie używa:
rekomendacje:
Mam nadzieję, że to dobry punkt wyjścia.
źródło
Twoje pytanie jest nieco niejasne, ale przypuszczam, że
UPSERT
można je uznać za wzór projektowy. W przypadku języków, które nie wdrażająMERGE
, szereg alternatywnych rozwiązań, aby rozwiązać ten problem (jeżeli odpowiednie wiersze istniejeUPDATE
, w przeciwnym razieINSERT
) występują.źródło
Zależy, co rozumiesz przez wzorzec. Jeśli myślisz Osoba / Firma / Transakcja / Produkt i tak, to tak - istnieje już wiele ogólnych schematów baz danych.
Jeśli myślisz o Factory, Singleton ... to nie - nie potrzebujesz żadnego z nich, ponieważ są one zbyt niskie do programowania DB.
Jeśli myślisz o nazewnictwie obiektów bazy danych, to należy do kategorii konwencji, a nie projektu jako takiego.
BTW, S.Lott, relacje jeden do wielu i wiele do wielu nie są „wzorami”. Są to podstawowe elementy składowe modelu relacyjnego.
źródło