Temat: Diagram E/R w UML?
Jarek Żeliński:
super przykład, realia biznesowe są jednak takie, że faktur ręcznie wystawia się kilka, może kilkadziesiąt dziennie, najwolniejszy system będzie i tak szybszy od człowieka, jak jakaś firma wystawia tysiące faktur to problem tkwi i trak w szybkości druku a nie szybkości komputera...
to tak jak byś mnie przekonywał, że bolid F1 jest lepszy od mojego roweru, tylko że ja jeżdżę po mieście zaś specyfika warunków pozwalających zaistnieć przewadze jaką ma F1 to najwyżej kilkadziesiąt torów na świecie.
Problem u wielu "bazodanowców" widze taki, że zapominają o realiach biznesowych i zamiast dać system wystarczający usiłują dać "najlepszy" w ich mniemaniu.
pozostałem przykłady jak wyżej
Po pierwsze, przykład był po to, żeby Ci udowodnić, że normalizacja to szybszy zapis. Bo zupełnie bezpodstawnie to kwestionowałeś. Chociaż pewnie i tak nigdy tego nie sprawdzisz w praktyce ;-)
Po drugie mogę Ci wymyślić masę innych przykładów. Na przykład wyobraź sobie, że w bazie Goldenline oprócz treści Twojego postu dopisywane są od razu wszystkie Twoje dane łącznie z tymi z CV... Potem możemy przejść do systemów transakcyjnych banków i domów maklerskich, gdzie do Twojego zlecenia dodawane są dziesiątki niepotrzebnych w momencie transakcji atrybutów i ma miejsce 100% redundancji.
Po trzecie, mi chodzi tylko o to, że jak już decydujesz się na bazę jako repozytorium, to dlaczego nie skorzystać z zestawu narzędzi do kontroli spójności. Tylko zamiast tego pisać własne. Bo jak nie potrzebujesz specjalnych funkcjonalności bazy danych, to po co ją wybrałeś? Więc mnie tak na prawdę nie interesuje czy w Twojej aplikacji zapisujesz do xml, csv czy bazy. O spójność musisz zadbać, a baza daje Ci z pudełka sporo prostych narzędzi.
Po czwarte, fakt, że stosowana jest denormalizacja nie oznacza, że wszystko ładowane jest do jednej ogromnej tabeli - bo to najczęściej jest BEZ SENSU. Czyli cały czas potrzebne jest kontrolowanie referencji i unikalności. A to doskonale potrafi robić każdy relacyjny silnik bazy danych. A nawet jak robisz to na aplikacji to obniża to wydajność, więc nie róbcie z tego zarzutu.
mówimy o logice (relacje) jaka ma papier bo na fakturze jest numer zamówienia... bo to sytuacja w której skojarzę fakturę z zamówieniem bez żadnej bazy SQL coś tam...
Nie rozumiem. Logiczna relacja istnieje w teorii. Twoim obowiązkiem jako projektanta jest zapewnić, żeby istnienie tej relacji nastąpiło też w praktyce. Co z tego, że ja mam jakiś numer zamówienia na fakturze jak się okaże, że fizycznie dla tego numeru nie ma żadnych danych... Bo jakiś tester tego nie przetestował.
Swoja drogą ta dyskusja bardzo przypomina mi analogiczną dyskusję dotyczącą constraintów na hurtowni. Jeżeli i tak ETL steruje ładowaniem i zakładamy, że robi to poprawnie, to po co jeszcze więzy na bazie.
no bo po co
Bo z PRAKTYKI wiem, że jaki by ETL dobry nie był, to się potem może okazać, że są jakieś błędy implementacyjne, albo w źródle są śmieci, itd. I jakbyś kiedyś sprzątał taki system po rozspójnieniu, to następnym razem byś tą jedną linijkę SQLa dołożył dla każdej tabeli... Bo ograniczyłoby Ci to sporo problemów.
szesnaście zamków w drzwiach może tylko pomóc w bezpieczeństwei tylko po co...
Dla mnie constrainty na bazie to od jakiegoś czasu pierwszy zamek. A kolejne piętnaście to zakładają ludzie, którzy chcą testować referencje testerami i wymyślają koło na nowo badając unikalność w aplikacji (z różnym skutkiem), a nie na bazie, skoro wcześniej się na bazę z jakiegoś powodu zdecydowali.
Skoro wielu twierdzi, że można sobie pozwolić na zdenormalizowany model danych (z czym się zgadzam), to i na więzy sobie można pozwolić. Więc kula w płot ;-)
problem w tym, że denormalizacja poprawia wydajność... a dodatkowe więzy (logika obciążająca procesor) ją pogarszają
Denormalizacja obniża wydajność zapisu. Constrainty też obniżają wydajność zapisu. Wiec co to za argument? Poza tym to wszystko by miało sens, jakbyście zrezygnowali w ogóle z kontroli spójności. Bo jeżeli ty badasz unikalność i klucze obce na aplikacji, to chyba też obniżasz wydajność, czy nie? A jeżeli uważasz, że kontrola spójności jest niepotrzebna, to mi w ogóle ręce opadają.
Powtórzę. Jak się zdecydowałeś na repozytorium w postaci bazy danych, to korzystaj z dobrodziejstw tej bazy danych. A nie wymyślaj koło na nowo.