Wzorce Projektowania Relacyjnych Baz Danych?

Wzorce projektowe są zwykle związane z projektowaniem obiektowym.
Czy istnieją wzorce projektowedo 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, procedury składowane, wyzwalacze itp...

Czy istnieje internetowe repozytorium takich szablonów, podobne do martinfowler.com ?


Przykłady problemów, które mogą rozwiąż:

  • przechowywanie danych hierarchicznych (np. pojedyncza tabela z typem vs wiele tabel z kluczem 1:1 i różnicami...)
  • przechowywanie danych o zmiennej strukturze (np. generic columns vs XML vs delimited column...)
  • Denormalizuj dane (jak to zrobić przy minimalnym wpływie, itp...)
Author: Sklivvz, 2008-09-28

10 answers

Jest książka z serii podpisów Martina Fowlera o nazwie Refaktoryzacja baz danych . Zawiera listę technik refaktoryzacji baz danych. Nie mogę powiedzieć, że tak często słyszałem listę wzorców baz danych.

Polecam również David C. Hay ' s Data Model Patterns oraz follow up A metadane Map, który opiera się na pierwszym i jest znacznie bardziej ambitny i intrygujący. Sama Przedmowa jest pouczająca.

Również świetne miejsce do szukania niektórych pre-canned database models is Len Silverston ' s Data Model Resource Book Series Volume 1 zawiera uniwersalne modele danych (pracownicy, konta, wysyłka, zakupy, itp.), Volume 2 zawiera branżowe modele danych (księgowość, Opieka zdrowotna, itp.), Volume 3 zawiera wzorce modeli danych.

Wreszcie, podczas gdy ta książka jest pozornie o UML i modelowaniu obiektowym, Peter Coad modelowanie w Kolorze za pomocą UML zapewnia "archetyp" napędzany proces modelowania encji zaczynając od założenia, że istnieją 4 podstawowe archetypy dowolnego modelu obiektu / danych

 124
Author: Michael Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-14 14:39:20

Oto link do Pana, który opracował kilkaset darmowych schematów baz danych.

Http://www.databaseanswers.org/data_models/

Być może, jeśli musisz szybko zbudować db, to da ci punkt wyjścia pod względem tabel i relacji w danym schemacie. Pamiętaj, że prawdopodobnie będziesz musiał zmodyfikować ten punkt początkowy. Uważam, że jest to bardzo przydatne.

Po drugie magazyn SQL Server ma okazjonalną kolumnę o nazwie " Modeler danych" który jest bardzo edukacyjny i często zawiera kompletne schematy dla danego systemu.

 125
Author: Thomas Wagner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-28 15:17:30

Wzorce projektowe nie są trywialnymi rozwiązaniami wielokrotnego użytku.

Wzorce projektowe są z definicji wielokrotnego użytku. Są wzorcami , które można wykryć w innych dobrych rozwiązaniach.

Wzór nie jest trywialnie wielokrotnego użytku. Możesz jednak wdrożyć swój projekt w dół zgodnie ze wzorem.

Wzorce projektowania relacyjnego obejmują takie rzeczy jak:

  1. Relacje jeden do wielu (master-detail, rodzic-dziecko) relacje za pomocą obcego klucz.

  2. Wiele do wielu relacji ze stołem mostowym.

  3. Opcjonalne relacje jeden do jednego zarządzane z Null w kolumnie FK.

  4. Gwiazda-schemat: wymiar i fakt, projekt OLAP.

  5. W pełni znormalizowany projekt OLTP.

  6. Wiele zindeksowanych kolumn wyszukiwania w wymiarze.

  7. "tabela wyszukiwania" zawierająca PK, opis i wartości kodu używane przez jedną lub więcej aplikacji. Po co mieć kod? I Nie wiem, ale kiedy trzeba ich użyć, jest to sposób na zarządzanie kodami.

  8. Uni-table. [Niektórzy nazywają to anty-wzorem; jest to wzór, czasami jest zły, czasami jest dobry.] Jest to Tabela z dużą ilością wstępnie połączonych rzeczy, które naruszają drugą i trzecią normalną formę.

  9. Tablica. Jest to tabela, która narusza pierwszą normalną formę poprzez umieszczenie tablicy lub sekwencji wartości w kolumnach.

  10. Baza danych mieszanych. To jest baza danych znormalizowany do przetwarzania transakcji, ale z wieloma dodatkowymi indeksami do raportowania i analizy. Nie rób tego . Ludzie i tak to robią, więc to nadal wzór.

Większość ludzi, którzy projektują bazy danych, może z łatwością odrzucić pół tuzina "to kolejny z nich"; są to wzorce projektowe, których używają regularnie.

I nie obejmuje to administracyjnych i operacyjnych wzorców użytkowania i zarządzania.

 40
Author: S.Lott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-20 19:20:23

Zobacz ten blog- programista baz danych .

Opisuje niektóre wzorce baz danych .

 19
Author: Edo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-10 12:45:54

Książki Joe Celko są doskonałe do tego rodzaju rzeczy, w szczególności "SQL dla Smarties". Ma kilka innowacyjnych rozwiązań typowych problemów, z których większość to wzorce projektowe wielokrotnego użytku.

Http://www.celko.com/books.htm

 15
Author: skaffman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-28 11:41:32

AskTom jest prawdopodobnie najbardziej pomocnym źródłem informacji na temat najlepszych praktyk w Oracle DBs. (Zwykle po prostu wpisuję "asktom" jako pierwsze słowo zapytania google na konkretny temat)

Myślę, że nie wypada mówić o wzorcach projektowych z relacyjnymi bazami danych. Relacyjne bazy danych są już zastosowaniem "wzorca projektowego" do problemu (problemem jest "jak reprezentować, przechowywać i pracować z danymi przy zachowaniu ich integralności" , a projekt jest model relacyjny). Inne podejścia (ogólnie uznane za przestarzałe) to modele nawigacyjne i hierarchiczne (i jestem nure wiele innych istnieje).

Mówiąc o tym, można rozważyć "Hurtownia danych" jako nieco oddzielny "wzór" lub podejście w projektowaniu baz danych. W szczególności możesz być zainteresowany przeczytaniem schematu Gwiazdy .

 6
Author: Galghamon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-10 09:19:17

Po wielu latach rozwoju bazy danych mogę powiedzieć, że jest kilka pytań, na które powinieneś odpowiedzieć zanim zaczniesz:

Pytania:

  • czy chcesz użyć w przyszłości innego DBMS? If yes then nie używa do specjalnych danych SQL z bieżącego DBMS. Usuń logikę w aplikacji.

Nie używa:

  • białe spacje w nazwach tabel i kolumn
  • znaki spoza Ascii w tabeli i kolumnie nazwy
  • wiązanie z konkretnymi małymi lub dużymi literami. I nigdy nie używaj 2 tabel lub kolumn, które różnią się tylko małymi i dużymi literami.
  • nie używa słów kluczowych SQL do nazw tabel lub kolumn, takich jak" FROM"," BETWEEN"," DELETE", itp

Rekomendacje:

  • Użyj NVARCHAR lub odpowiedników do obsługi unicode, wtedy nie masz problemów ze stronami kodowymi.
  • nadaj każdej kolumnie unikalną nazwę. Dzięki temu łatwiej jest wybrać kolumnę przy połączeniu. On bardzo trudne, jeśli każda tabela ma kolumnę " ID " lub "nazwa" lub "opis". Stosować XyzID i AbcID.
  • użyj pakietu zasobów lub równych dla złożonych wyrażeń SQL. Łatwiej jest przełączyć się na inny DBMS.
  • nie rzuca mocno na żaden typ danych. Inny DBMS nie może mieć tego typu danych. Na przykład dae Oracle nie ma MALEJINT tylko liczba.

Mam nadzieję, że to dobry punkt wyjścia.

 4
Author: Horcrux7,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-28 11:55:34

Twoje pytanie jest trochę niejasne, ale przypuszczam, że UPSERT można uznać za wzorzec projektowy. Dla języków, które nie implementują MERGE, istnieje wiele alternatyw do rozwiązania problemu (jeśli istnieje odpowiedni wiersz, UPDATE; else INSERT).

 1
Author: Sören Kuklau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:31

Zależy co masz na myśli przez wzorzec. Jeśli myślisz osoba / firma / transakcja / produkt i takie, to tak - istnieje wiele ogólnych schematów bazy danych już dostępne.

Jeśli myślisz o fabryce, Singleton... w takim razie nie-nie potrzebujesz żadnego z nich, ponieważ są zbyt niskie na programowanie DB.

Jeśli myślisz o nazwach obiektów bazodanowych, to jest to kategoria Konwencji, a nie design per se.

BTW, S. Lott, one-to-many and many-to-many związki nie są "wzorcami". Są podstawowym budulcem modelu relacyjnego.

 1
Author: Andrew not the Saint,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 04:12:35

Ta książka wygląda ciekawie

Title: Data Patterns
By: Microsoft Corporation
Publisher: Microsoft Press
Pub. Date: December 21, 2004
Print ISBN-13: 978-0-7356-2200-5
 0
Author: user212102,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-22 15:07:06