Znaczenie diagramów ER

10

Jestem studentem i rozwijam kilka projektów w ramach mojej uczelni.

Opracowując bazę danych dla jednego z projektów, natrafiliśmy na sytuację, w której zastanawialiśmy się, czy ERD jest konieczna, czy nie. W tej chwili nie każdy z nas zgadza się najpierw na opracowanie ERD, a następnie na podstawie bazy danych.

Większość osób woli werbalne tworzenie bazy danych w locie zgodnie z systemem bezpośrednio wymaganym na papierze.

Teraz ściśle przestrzegam zasad bazy danych. Myślę, że bazę danych należy opracowywać wyłącznie na podstawie ERD. Chcę tylko wiedzieć, co następuje:

  • Czy przemysł przestrzega tych zasad?
  • Czy po prostu marnuję czas na opracowanie ERD?
  • Jakie są korzyści z opracowania ERD?
trapaank
źródło
Diagram ER / EER pokazuje wzajemne powiązania między bytami, a także powiększa funkcjonalistów systemu.
Jeśli potrzebujesz bezpłatnego narzędzia do tworzenia ERD dla SQL Server ... Informacje można znaleźć tutaj ... facebook.com/DataModelerTool lub tutaj ... plus.google.com/108968161662966473138
Carter Medlin
IMHO, ERD nie wychwytuje wszystkiego, co ważne - zmiany relacji w czasie, wielkość transakcji, dziedziczenie w systemach modelowanych obiektowo, „staje się” relacjami itp. W szczególności, ERD wyróżnia wszystkie czasowniki, pozostawiając duże luki w projekcie bazy danych. Wyobraź sobie, że czytasz powieść złożoną wyłącznie z rzeczowników. Uważam, że są to użyteczne narzędzia, ale z pewnością nie krytyczne, najlepiej narysowane na grzankach serwetek po miłym obiedzie.
pojo-guy

Odpowiedzi:

13

Proste i proste, pomyśl o opracowaniu bazy danych bez ERD jako o budowie domu bez planu budowy. Może to być wykonalne, ponieważ uważasz, że wystarczy położyć cegłę jeden na drugim, aby coś zbudować, jednak w chwili, gdy ktoś bierze odpowiedzialność za projekt, istnieje ryzyko katastrofy.

Z mojego doświadczenia nie skorzystasz dużo na ERD, chyba że użyjesz ich w połączeniu z narzędziami CASE (ERWin, MySQL Workbench itp.), Które dodatkowo umożliwią wykonanie naprawdę pomocnych operacji, takich jak inżynieria do przodu i do tyłu. Nawet bez tych funkcji posiadanie scentralizowanego schematu kompletnej bazy danych jest przydatne, ponieważ czasami ograniczenia zaimplementowane w samej bazie danych nie wystarczą, aby opowiedzieć pełną historię o relacjach między poszczególnymi jednostkami bazy danych.

Oto przykład dotyczący MySQL, który, jak być może wiesz, implementuje kilka wewnętrznych silników pamięci, w szczególności MyISAM i InnoDB. Istnieją między nimi znaczne różnice, z których jedna jest najważniejsza, ponieważ MyISAM nie obsługuje ograniczeń. Pomimo tego MyISAM jest intensywnie wykorzystywany w aplikacjach internetowych, co oznacza, że ​​logika relacyjna musi zostać zaimplementowana albo przez logikę biznesową (kod aplikacji), albo w inny sposób. Problem polega na tym, że podczas przekazywania inżynierii ERD za pomocą tabel (encji) MyISAM MySQL po cichu zignoruje ograniczenia określone przez ERD i powstanie baza danych, która nie identyfikuje jasno natury relacji między eniami. Innymi słowy, po opracowaniu układu bazy danych twórcy kodu nie mogą zaimplementować prawidłowej logiki biznesowej bez ERD.

brezanac
źródło
1
Jeśli przejdziemy do końca z twoim porównaniem „planu budowy”, musimy zbudować system i nigdy nie możemy go zmienić, chyba że będziemy musieli zburzyć całość. To nie zadziała w dynamicznym środowisku.
AK
1
„Plan budowy” nie ma na celu utrwalenia procesu rozwoju ani samego projektu, ale zawsze zapewnia przegląd stanu, w jakim znajduje się obecny projekt. W rzeczywistości nikt nie powstrzymuje nikogo przed dodawaniem nowych bytów lub relacji (stąd wprowadzanie zmian w planie), ale inni też muszą wiedzieć o tych zmianach.
brezanac
5

ERD są naprawdę fajne, aby mieć jasny obraz struktury bazy danych. Oprócz tego, że jest ważnym artefaktem dokumentu dla twojego projektu, ułatwia także implementację zapytań, zwłaszcza połączeń między tabelami. Wyobraź sobie, jak miło jest mieć konfigurację z dwoma monitorami, po lewej stronie masz ERD, a po prawej edytor zapytań. Możesz wyraźnie zobaczyć relacje między tabelami i na tej podstawie pisać zapytania. Jeśli projekt bazy danych jest dość prosty, a twój projekt go nie wymaga, być może bez niego można żyć.

gsb
źródło
4

ERD pozwoli Ci zaoszczędzić znacznie więcej czasu, niż myślisz. Jeśli robisz wszystko w locie, utkniesz, gdy chcesz wygenerować tabele połączeń.

Jeśli kilka lat później natkniesz się na bazę danych bez ERD, musisz poświęcić dużo czasu, aby zobaczyć, co dzieje się w twoim projekcie.

Mam firmę i projektujemy ERD, nigdy nie myśl o bazie danych bez ERD. (W rzeczywistości jest to mój osobisty eksperyment)

ALH
źródło
4

ERD były kiedyś głównym nurtem. IMO są teraz mniej więcej opcjonalne.

Obecnie niektóre bardzo udane zespoły wcale nie przejmują się ERD, ale zapewniają doskonałe systemy: solidne, wydajne i łatwe w utrzymaniu na dłuższą metę. Jest to szczególnie prawdziwe w rozwoju Agile, kiedy zaczynamy od małego, z minimalistycznym zestawem narzędzi.

ERD są oczywiście dobrym sposobem komunikacji, ale w żadnym wypadku nie jedynym, ani najlepszym w każdych okolicznościach. Niektóre zespoły preferują inne sposoby dokumentacji i komunikacji.

W tej branży nie ma ogólnych reguł.

AK
źródło
+1, ale jakie inne sposoby dokumentacji i komunikacji są wykorzystywane w odniesieniu do baz danych?
miracle173
@ miracle173 Dobra książka to: „Zwinne zasady, wzorce i praktyki w języku C #”. Lubię też artykuły na temat rozwoju napędzanego zachowaniem autorstwa Dana Northa na stronie dannorth.net
AK
1
Co masz na myśli some teams prefer other ways? Myślę, że mogło to skończyć się dużą ilością głosów „w dół”, jeśli został opublikowany jako odpowiedź na Stackoverflow!
Pmpr
2

Ważne jest zaprojektowanie przed napisaniem kodu produkcyjnego. Ważne jest również, aby prototypować; ludzie z baz danych opracowują prototypy pisząc SQL. (Pamiętasz, co Fred Brooks powiedział o prototypach?)

Języki graficzne, których ER jest tylko jednym, nie okazały się bardzo dobre w przechwytywaniu całej semantyki bazy danych w sposób łatwy i łatwy do zrozumienia.

Nie okazały się również bardzo skutecznymi narzędziami komunikacji, z wyjątkiem między programistami. Ale przy projektowaniu baz danych kluczowa komunikacja nie jest między programistami; między programistami a ekspertami od domen (między programistami a przedsiębiorcami).

Modelowanie ról obiektowych (ORM) ma język graficzny, ale opiera się na „faktach” (prostych zdaniach). Ludzie biznesu mogą dość łatwo zweryfikować fakty. Ludzie biznesu nie mogą łatwo zweryfikować diagramu ER lub diagramu ORM.

Mike Sherrill „Cat Recall”
źródło
1
+1, ale czy knujesz liczby lub opracowania, które potwierdzają twoje twierdzenia na temat problemów z komunikacją przy użyciu języków graficznych?
miracle173
Nie jestem pracownikiem naukowym, więc nie śledzę ściśle badań. Język graficzny, który nie przechwytuje całej semantyki bazy danych (na przykład ERD), oczywiście nie może przekazać całej semantyki; to część badań Terry'ego Halpina. Jeśli chodzi o komunikację z ekspertami w dziedzinie, tak naprawdę nie potrzebujesz do tego badań. Wystarczy spróbować wyjaśnić schemat ER ekspertowi w dziedzinie, który ma jedynie wykształcenie 8. klasy. Następnie porównaj to doświadczenie z próbą wyjaśnienia zdania „Każdy adres ma jeden i tylko jeden kod pocztowy”. Zdanie wygrywa za każdym razem.
Mike Sherrill „Cat Recall”