Krzysztof Bokiej

Krzysztof Bokiej Software Engineer

Temat: Diagram E/R w UML?

Jarek Żeliński:
dobrze zaprojektowany system (oprogarmowanie) cechuje się, tym, ze zmiana domenowa (nowa stawka VAT, zmiana sposobu kontroli i naliczania wynagrodzenia i masa innych, sa implementowane we jednym miejscu. Jeżeli "logika biznesowa jest rozsmarowana po całym systemie) wprowadzanie podobnych zmian potrafi być kosztowniejsze od wytworzenia systemu.

I co do tego ma kontrola spójności na rdbms przy wykorzystaniu mechanizmów tej bazy? Nie musisz odpowiadać. Pytanie retoryczne.

Spójność dotyczy fizycznego porządku w danych i jego kontrolowania.
Do logiki aplikacji nic nie mam, ale ona nie może stać w sprzeczności ze spójnością, bo to niedopuszczalne.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Krzysztof Bokiej:
Jarek Żeliński:
dobrze zaprojektowany system (oprogarmowanie) cechuje się, tym, ze zmiana domenowa (nowa stawka VAT, zmiana sposobu kontroli i naliczania wynagrodzenia i masa innych, sa implementowane we jednym miejscu. Jeżeli "logika biznesowa jest rozsmarowana po całym systemie) wprowadzanie podobnych zmian potrafi być kosztowniejsze od wytworzenia systemu.

I co do tego ma kontrola spójności na rdbms przy wykorzystaniu mechanizmów tej bazy? Nie musisz odpowiadać. Pytanie retoryczne.

Spójność dotyczy fizycznego porządku w danych i jego kontrolowania.
Do logiki aplikacji nic nie mam, ale ona nie może stać w sprzeczności ze spójnością, bo to niedopuszczalne.

prosty życiowy przykład: masz magazyn i towary w nim, od czasu do czasu rezygnujesz z pewnych produktów (nie ma ich już w magazynie), w między czasie wymieniłeś moduł magazynowy (wraz z danymi czyli bazą) ale nadal masz moduł FK i historyczne faktury. Jak tu będzie budował kontrole spójności i co będziesz kontrolował? Firma ma historyczne faktury a na nich towary, których od dawna nie ma w ofercie i magazynach), system magazynowy (cały komponent) uległ wymianie na nowy w między czasie.... (wraz z baza danych tego co w magazynie :)))

co tera masz w Twojej bazie towarów (której??), czy w ogóle ją masz, i gdzie te stare produkty? Zwracam uwagę, że muszę (prawo!) mieć możliwość wydrukowania dowolnej historycznej faktury w stanie z dnia jej wystawienia.

To jeden z moich dawnych klientów zaczynający od pakietu ERP (FK, magazyny itp.) rozwinął się, postanowił zachować księgowość bo była dobra ale proste magazyny wymienił na odrębny system logistyczny (z obsługa magazynów). Jarek Żeliński edytował(a) ten post dnia 08.11.11 o godzinie 15:55
Krzysztof Bokiej

Krzysztof Bokiej Software Engineer

Temat: Diagram E/R w UML?

Jarek Żeliński:
prosty życiowy przykład: masz magazyn i towary w nim, od czasu do czasu rezygnujesz z pewnych produktów (nie ma ich już w magazynie), w między czasie wymieniłeś moduł magazynowy (wraz z danymi czyli bazą) ale nadal masz moduł FK i historyczne faktury. Jak tu będzie budował kontrole spójności i co będziesz kontrolował? Firma ma historyczne faktury a na nich towary, których od dawna nie ma w ofercie i magazynach), system magazynowy (cały komponent) uległ wymianie na nowy w między czasie.... (wraz z baza danych tego co w magazynie :)))

co tera masz w Twojej bazie towarów (której??), czy w ogóle ją masz, i gdzie te stare produkty? Zwracam uwagę, że muszę (prawo!) mieć możliwość wydrukowania dowolnej historycznej faktury w stanie z dnia jej wystawienia.

To jeden z moich dawnych klientów zaczynający od pakietu ERP (FK, magazyny itp.) rozwinął się, postanowił zachować księgowość bo była dobra ale proste magazyny wymienił na odrębny system logistyczny (z obsługa magazynów).

No przecież jak te moduły trzymają dane fizycznie gdzie indziej to nic nie poradzę contraintem. I wtedy właśnie nie ma wyjścia - musi to kontrolować aplikacja albo inne zewnętrzne systemy klasy MDM. To co piszesz to zupełnie inne problemy, niż to co ja chcę tu przekazać. I jak w ogóle ktoś tą kontrolę uwzględnia, to już jestem gotowy przyklasnąć.

Zacznijmy od utrzymania spójności w obrębie jednego modułu osadzonego na jednym rdbms. Bo rozspójnienie może już nastąpić na tym etapie. Bo się może zaraz okazać, że do zamówienia nie został przypisany żaden pracownik. Albo dodany towar ma zły opis, mimo, że właśnie go gdzieś aktualizowałeś. A to możesz osiągnąć w pewnym podstawowym zakresie ULTRA łatwo, z pudełka.

Ja już wymiękam ;-)Krzysztof Bokiej edytował(a) ten post dnia 08.11.11 o godzinie 16:35
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

No przecież jak te moduły trzymają dane fizycznie gdzie indziej to nic nie poradzę contraintem. I wtedy właśnie nie ma wyjścia - musi to kontrolować aplikacja albo inne zewnętrzne systemy klasy MDM. To co piszesz to zupełnie inne problemy, niż to co ja chcę tu przekazać. I jak w ogóle ktoś tą kontrolę uwzględnia, to już jestem gotowy przyklasnąć.

to jest tak: wymagania co do możliwości łatwego wprowadzania zmian powodują, że coraz częściej oprogramowanie to federacja takich niezależnych komponentów czy agregatów, w efekcie zastosowanie bazy relacyjnej w zasadzie nie tylko nie ma sensu ale też jest niemożliwe, pozostaje stosowanie niepowiązanych tablic łatwych do indywidualnego "stosowania", efekt to 100% logiki systemu w aplikacji bo nie ma innego wyjścia i to usiłuję "wyłuszczyć" a "wy" z uporem maniaka o tych więzach i constraintach, których nie da się tu użyć bo nie ma relacyjnej jednej znormalizowanej bazy.

I dalej: logikę systemu projektujemy diagramem klas a implementujemy w jakimś obiektowym języku. Dlatego modelowanie danych w UML jest bez sensu podobnie jak modelowanie z pomocą ERD danych dla aplikacji obiektowych...

a poniższe to tylko wypowiedzi z rodzaju "ale gdyby chodziło o dinozaura to on się odżywia....." dinozaury giną ... nie traćmy na nie czasu...
Zacznijmy od utrzymania spójności w obrębie jednego modułu osadzonego na jednym rdbms.

no to mówisz o jakimś prostym agregacie modelującym np. formularz wniosku o coś tam... gdzie to wypasiony relacyjny model?

Bo rozspójnienie może już nastąpić na tym etapie. Bo się może zaraz okazać, że do zamówienia nie został przypisany żaden pracownik.

a po co...jak trzeba, to wpisze dane pracownika w treści zamówienia.. i nic mi się nie "rozspójni"..
Albo dodany towar ma zły opis,

to autora opisu za wsiarz...
mimo, że właśnie go gdzieś aktualizowałeś.

aktualizowany towar nie powinien być widoczny w magazynie
A to możesz osiągnąć w pewnym podstawowym zakresie ULTRA łatwo, z pudełka.

i w każdym serwerze aplikacyjnym czy frameworku, ...

Ja już wymiękam ;-)

ja też.. odpadam... nie gadam o spójności bazy relacyjnej bo ich nie mam za bardzo kiedy używać, muszę logikę obsłużyć w aplikacji... jako że projektuję nowe systemy a nie konserwuje starych mało mam z takimi bazami do czynienia... i twierdzenie, że gdybym użył relacyjnej bazy to... to nie ma sensu bo relacyjna baza usztywnia cały system a tego nie chcemy...Jarek Żeliński edytował(a) ten post dnia 08.11.11 o godzinie 18:33
Łukasz Kurowski

Łukasz Kurowski Usque Ad Finem

Temat: Diagram E/R w UML?

Jarek Żeliński:
bezbłędny bełkot także?

Testy funkcjonalne mają to przecież wykazać, czy bełkot, czy nie...
Patrząc na zalety i wady korzystania z edytora i notatnika nie mam pojęcia, czemu komuś może zależeć na pisaniu w notatniku.

możliwe, że potrzebny jest sensowny tekst a nie ma dodatkowego budżetu na worda...

Nie ma na rdbms, czy narzędzie do modelowania ER? Jak to pierwsze to chyba nie podpada pod zakres tej rozmowy, a jak to drugie to nie strójmy sobie żartów. Pisarz nie ma budżetu na edytor tekstu? Do tego jest to wydatek jednorazowy, często mniejszy niż dniówka konsultanta. Jak dobrze poszukać jakaś wersja open source, czy trial też się znajdzie.
Nie wiem również, czemu ktoś twierdzi, że to daje takie same efekty w dziedzinie jakości ortografii i gramatyki.

znaczy się, że co - nie da się pisać bez błędów piórem na papierze?

Da się. Da się biegać tak szybko jak Bolt. Pewnie, że się da. Zadam pytania natury osobistej... Czy pracowałeś kiedyś z offshorem? Czy pracowałeś w nadgodzinach? Czy byłeś w kilku projektach na raz? Czy uczyłeś nowe osoby w projekcie/pracy?
Zróbcie niedowiarkowie eksperyment i skopiujcie z notatnika do edytora, czyli na jakiejś bazie bez więzów je załóżcie. Sprawdźcie ile podświetla na czerwono.

to zależy od autora tekstu :)

Oczywiście, że to zależy. Tylko czemu wszyscy się przed tym wzbraniają, skoro niektórym bardzo by się to przydało?
Co do testów to jakieś piramidalne nieporozumienie. Więzy stanowią test spójności danych, a nie test funkcjonalności. Tyle i nic więcej!

spójność danych to pojęcie rodem z baz relacyjnych... jakie "więzy" na bazę i spójność danych nałożysz w sytuacji gdy masz dwa systemy od dwóch producentów a w obu są dane o kontrahentach?

Ciśnie mi się na usta, że zabawa w system gdzie wszystkie dane są fajne i w jednej bazie relacyjnej to pikuś... se nieco bardziej wymagające środowiska... i warto o tym pamiętać

Zapewniam Cię, że specjaliści od hurtowni danych pamiętają o tym najbardziej :).
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Da się. Da się biegać tak szybko jak Bolt. Pewnie, że się da. Zadam pytania natury osobistej... Czy pracowałeś kiedyś z offshorem? Czy pracowałeś w nadgodzinach? Czy byłeś w kilku projektach na raz? Czy uczyłeś nowe osoby w projekcie/pracy?

robię to stale, off-shore to często tragedia projektowa. Pracuje zadaniowo więc nie wiem co to znaczy "nadgodziny"...

to zależy od autora tekstu :)

Oczywiście, że to zależy. Tylko czemu wszyscy się przed tym wzbraniają, skoro niektórym bardzo by się to przydało?

niektórym...
Ciśnie mi się na usta, że zabawa w system gdzie wszystkie dane są fajne i w jednej bazie relacyjnej to pikuś... se nieco bardziej wymagające środowiska... i warto o tym pamiętać

Zapewniam Cię, że specjaliści od hurtowni danych pamiętają o tym najbardziej :).

akurat w tych wierzę... ;)
Marek Kubiś

Marek Kubiś programista c#

Temat: Diagram E/R w UML?

Jarek Żeliński:
ja też.. odpadam...
Jako ten, który nie ma do czynienia na codzień z bazami, które obsługuja miliony transakcji na sekundę, podczytuję tylko sobie dyskusję i nie poczuwam się upoważnionym do wypowiadania się, ale kiedy po raz n-ty pojawia się pomieszanie z poplątaniem, więc też .. odpadam ... i pozwolę sobie na komentarz.
nie gadam o spójności bazy relacyjnej bo ich nie mam za bardzo kiedy używać, muszę logikę obsłużyć w aplikacji...
???????????????????? !!!!!!! ???????????? a to poniżej to jak jest realizowane?
dobrze zaprojektowany system (oprogarmowanie) cechuje się, tym, ze zmiana domenowa (nowa stawka VAT, zmiana sposobu kontroli i naliczania wynagrodzenia i masa innych, sa implementowane we jednym miejscu.
Przecież aby z tego skorzystać, to wszędzie tam gdzie jakaś dana jest potrzebna należy się do tego miejsca odwołać. Aby odczytać właściwą wartość należy system tak zdefiniować aby było coś, co wskaże tę konkretną pożądaną wartość, czyli jest to nic innego jak zaprojektowanie logicznej relacji, która będzie podstawą użytkowania takiej bazy. Już ta logiczna relacja czyni tę bazę relacyjną!

Implementacja bazy danych może oczywiście obejmować nie wszystkie constrainty, ale pewne musi, np: unikatowość pola klucza, aby wskazywać jednoznacznie to co ma być wskazane. Można darować sobie inkeksowanie tegoż, wskazywanie pól powiązanych z nim w innych tabelach i zależności czy to jeden-jeden albo jeden-do wielu, ale brak tegoż przełoży się na wydajność (jej brak), a nie kwalifikację, że to już baza nierelacyjna!

Nie zmieniajmy definicji, bo nikt nie będzie wiedział o czym mowa! Relacyjna baza danych - baza danych złożona z dwóch lub więcej tabel powiązanych ze sobą za pomocą relacji.

Czy w definicji jest coś co mówi, że klucze obce czynią bazę relacyjną? Nie! Relacyjność bo to domena logiki, która łączy tabele powiązane ze sobą w bazie. :-(

Podobnie jest z plikiem płaskim - jeżeli przechowuje dane, tzn. pełni funkcję bazy danych! :-(

To, że to jest to zwykły plik tekstowy czy binarny przechowujący typy rekordowe zdefiniowane na własne potrzeby przez programistę, nie ma nic do tego czy jest to baza danych czy nie jest, bo jest to baza danych tyle, że niestandardowa. Tu standardy wyznaczają ORACLE, MICROSOFT, .., i inni. Jak ktoś chce obsługiwać plik przechowywujący dane po swojemu, niech to robi. A jak jeszcze przekona klienta, że jest to równie dobre lub lepsze od standardów SQL, PL/SQL, to nawet na tym zarobi!
jako że projektuję nowe systemy a nie konserwuje starych mało mam z takimi bazami do czynienia... i twierdzenie, że gdybym użył relacyjnej bazy to... to nie ma sensu bo relacyjna baza usztywnia cały system a tego nie chcemy...
100% NIE! Wcześniej wypowiadając się z pozycji analityka stojącego na straży potrzeby spełniania wymagań klienta, itd. itp., w 100% z Pańskimi wypowiedziami się zgadzałem, ale teraz jako projektant, który jest osobą narzucającą już szczegółowe implementacyjne wymagania pisze Pan bzdury. :-( Przedstawione podejście to jedna z możliwości implementacji. Rozumiem, że z Pańskiego doświadczenia wyszło Panu, że tak jest najlepiej. Nie polemizuję.

Być może pozostawienie dotychczasowej struktury tabel archiwalnych i zdefiniowanie nowej struktury na nowe dane oraz implementacja logiki posługiwania się całością w aplikacji, gdzieś się sprawdziło. Można przekonywać że tak jest najlepiej i najnowocześniej, zgodnie z najnowszymi trendami w budowaniu aplikacji IT, jak ktoś ma takie przekonanie. Ale są też inne podejścia.

Można przecież to co było pozostawić bez zmian i do danych archiwalnych sięgać za pomocą starych aplikacji. Można też przecież zdefiniować całą bazę na nowo, nowocześnie i dopisać aplikację migracji, która nie tylko przepisze dane archiwalne ale także właściwie je przekonwertuje, tak aby można było z danych archiwalnych korzystać z wykorzystaniem nowej logiki biznesowej. Można .. . Można i jest to pochodną posiadanych pieniędzy, czasu, potrzeb, mozliwości intelektualnych, .. . ;-)

Co do nieszczęsnych więzów integralności i obiektowości. Wg. mnie nie jest tak, że ma się to wszystko nijak do relacyjności. To, że diagram E/R i UML to inne bajki to już było wielokrotnie. Ale w sprawie obiektowości, jak dla mnie, też mamy do czynienia z nieporozumieniem podobnym do tego tytułowego, bo nie paradygmat obiektowy jest tu najważniejszy. :-(

Jeżeli wyjść od użytkownika, to on np: przyjmuje i realizuje zamówienia klienta, przyjmuje i wydaje towar z magazynu, ewidencjonuje zakup, sprzedaż, .. i robi wieeeele innych rzeczy. Czy to są obiekty? Nie, to są zdarzenia.

Biznes reaguje więc na zdarzenia i jak dla mnie aplikacja biznesowa powinna najpierw być opisana w kategorii zdarzeń. Te zdarzenia oczywiście muszą "jakoś" być obsługiwane, do czegoś przypisane, tym bardziej, że towarzyszy im potrzeba zapamiętania jakieś ilości danych. Tym czymś jest obiekt.

Tym samym kolejny poziom logicznego opisu aplikacji, to poziom obiektów. Obiekty nie są oczywiście opisywane "od sasa do lasa" w kontekście zdarzeń, ale nie są to też opisy identyczne, bo i zdrzenia odwołują się do różnych obiektów, a i obiekty odwołują się do różnych zdarzeń.

Mając powyższe można przystąpić do realizacji, co przełoży się na jakąś logikę, i w aplikacji, i bazie. Szczegóły implementacyjne będą oczywiście różniły się w istotnych detalach od modelu obsługi zdarzeń, czy relacji wiążących obiekty, więc i nic dziwnego, że diagramy będą różne.

Jak zbudowana jest warstwa fizyczna zależy więc tak od wybranych narzędzi (konkretna baza, język programowania), jak i od logiki biznesowej. Wszak zdarzenia to nie tylko zdarzenia proste, ale także (przede wszystkim?), te w szczególności rozciągnięte w czasie.

Przekładając to na język praktyki wychodzi, że rejestrując w bazie nie zawsze dysponuje się wszystkimi danymi. Aby zapewnić spójność stosuje się więc podział tabel (ta obśmiana przez niektórych normalizacja), definiuje indeksy/klucze własne, a dla pól gdzie nie ma wszystkich danych w momencie ich wprowadzania, rezygnuje się często z kluczy obcych, przerzucając sprawdzenie tego powiązania na aplikację, bo jego założenie mogłoby nie pozwolić przejść użytkownikowi do następnego kroku. Ale brak tegoż klucza obcego nie upoważnia do olania wszystkich constraintów przysłowiowym "ciepłym moczem".

Ot perfekcyjna baza danych zapewne uczyniłyby aplikację nieżyciową z punktu widzenia użytkownika, więc zapewne także niezdolną do zaliczenia testu funkcjonalności u użytkownika ;-(, ale nie widzę u kolegów broniących potrzeby projektowania baz danych zgodnie z wykorzystaniem jak największej ilości wbudowanych w nie mechanizmów, negowania że odstępstwa od reguł są dopuszczalne. :-)

To tak z punktu widzenia rozumu, który się przypadkowo w przyrodzie przydażył. ;-)

konto usunięte

Temat: Diagram E/R w UML?

Marek Kubiś:
Jarek Żeliński:
ja też.. odpadam...
Jako ten, który nie ma do czynienia na codzień z bazami, które obsługuja miliony transakcji na sekundę, podczytuję tylko sobie dyskusję i nie poczuwam się upoważnionym do wypowiadania się, ale kiedy po raz n-ty pojawia się pomieszanie z poplątaniem, więc też .. odpadam ... i pozwolę sobie na komentarz.
nie gadam o spójności bazy relacyjnej bo ich nie mam za bardzo kiedy używać, muszę logikę obsłużyć w aplikacji...
???????????????????? !!!!!!! ???????????? a to poniżej to jak jest realizowane?
dobrze zaprojektowany system (oprogarmowanie) cechuje się, tym, ze zmiana domenowa (nowa stawka VAT, zmiana sposobu kontroli i naliczania wynagrodzenia i masa innych, sa implementowane we jednym miejscu.
Przecież aby z tego skorzystać, to wszędzie tam gdzie jakaś dana jest potrzebna należy się do tego miejsca odwołać. Aby odczytać właściwą wartość należy system tak zdefiniować aby było coś, co wskaże tę konkretną pożądaną wartość, czyli jest to nic innego jak zaprojektowanie logicznej relacji, która będzie podstawą użytkowania takiej bazy. Już ta logiczna relacja czyni tę bazę relacyjną!

Implementacja bazy danych może oczywiście obejmować nie wszystkie constrainty, ale pewne musi, np: unikatowość pola klucza, aby wskazywać jednoznacznie to co ma być wskazane. Można darować sobie inkeksowanie tegoż, wskazywanie pól powiązanych z nim w innych tabelach i zależności czy to jeden-jeden albo jeden-do wielu, ale brak tegoż przełoży się na wydajność (jej brak), a nie kwalifikację, że to już baza nierelacyjna!

Nie zmieniajmy definicji, bo nikt nie będzie wiedział o czym mowa! Relacyjna baza danych - baza danych złożona z dwóch lub więcej tabel powiązanych ze sobą za pomocą relacji.

Czy w definicji jest coś co mówi, że klucze obce czynią bazę relacyjną? Nie! Relacyjność bo to domena logiki, która łączy tabele powiązane ze sobą w bazie. :-(

Podobnie jest z plikiem płaskim - jeżeli przechowuje dane, tzn. pełni funkcję bazy danych! :-(

To, że to jest to zwykły plik tekstowy czy binarny przechowujący typy rekordowe zdefiniowane na własne potrzeby przez programistę, nie ma nic do tego czy jest to baza danych czy nie jest, bo jest to baza danych tyle, że niestandardowa. Tu standardy wyznaczają ORACLE, MICROSOFT, .., i inni. Jak ktoś chce obsługiwać plik przechowywujący dane po swojemu, niech to robi. A jak jeszcze przekona klienta, że jest to równie dobre lub lepsze od standardów SQL, PL/SQL, to nawet na tym zarobi!
jako że projektuję nowe systemy a nie konserwuje starych mało mam z takimi bazami do czynienia... i twierdzenie, że gdybym użył relacyjnej bazy to... to nie ma sensu bo relacyjna baza usztywnia cały system a tego nie chcemy...
100% NIE! Wcześniej wypowiadając się z pozycji analityka stojącego na straży potrzeby spełniania wymagań klienta, itd. itp., w 100% z Pańskimi wypowiedziami się zgadzałem, ale teraz jako projektant, który jest osobą narzucającą już szczegółowe implementacyjne wymagania pisze Pan bzdury. :-( Przedstawione podejście to jedna z możliwości implementacji. Rozumiem, że z Pańskiego doświadczenia wyszło Panu, że tak jest najlepiej. Nie polemizuję.

Być może pozostawienie dotychczasowej struktury tabel archiwalnych i zdefiniowanie nowej struktury na nowe dane oraz implementacja logiki posługiwania się całością w aplikacji, gdzieś się sprawdziło. Można przekonywać że tak jest najlepiej i najnowocześniej, zgodnie z najnowszymi trendami w budowaniu aplikacji IT, jak ktoś ma takie przekonanie. Ale są też inne podejścia.

Można przecież to co było pozostawić bez zmian i do danych archiwalnych sięgać za pomocą starych aplikacji. Można też przecież zdefiniować całą bazę na nowo, nowocześnie i dopisać aplikację migracji, która nie tylko przepisze dane archiwalne ale także właściwie je przekonwertuje, tak aby można było z danych archiwalnych korzystać z wykorzystaniem nowej logiki biznesowej. Można .. . Można i jest to pochodną posiadanych pieniędzy, czasu, potrzeb, mozliwości intelektualnych, .. . ;-)

Co do nieszczęsnych więzów integralności i obiektowości. Wg. mnie nie jest tak, że ma się to wszystko nijak do relacyjności. To, że diagram E/R i UML to inne bajki to już było wielokrotnie. Ale w sprawie obiektowości, jak dla mnie, też mamy do czynienia z nieporozumieniem podobnym do tego tytułowego, bo nie paradygmat obiektowy jest tu najważniejszy. :-(

Jeżeli wyjść od użytkownika, to on np: przyjmuje i realizuje zamówienia klienta, przyjmuje i wydaje towar z magazynu, ewidencjonuje zakup, sprzedaż, .. i robi wieeeele innych rzeczy. Czy to są obiekty? Nie, to są zdarzenia.

Biznes reaguje więc na zdarzenia i jak dla mnie aplikacja biznesowa powinna najpierw być opisana w kategorii zdarzeń. Te zdarzenia oczywiście muszą "jakoś" być obsługiwane, do czegoś przypisane, tym bardziej, że towarzyszy im potrzeba zapamiętania jakieś ilości danych. Tym czymś jest obiekt.

Tym samym kolejny poziom logicznego opisu aplikacji, to poziom obiektów. Obiekty nie są oczywiście opisywane "od sasa do lasa" w kontekście zdarzeń, ale nie są to też opisy identyczne, bo i zdrzenia odwołują się do różnych obiektów, a i obiekty odwołują się do różnych zdarzeń.

Mając powyższe można przystąpić do realizacji, co przełoży się na jakąś logikę, i w aplikacji, i bazie. Szczegóły implementacyjne będą oczywiście różniły się w istotnych detalach od modelu obsługi zdarzeń, czy relacji wiążących obiekty, więc i nic dziwnego, że diagramy będą różne.

Jak zbudowana jest warstwa fizyczna zależy więc tak od wybranych narzędzi (konkretna baza, język programowania), jak i od logiki biznesowej. Wszak zdarzenia to nie tylko zdarzenia proste, ale także (przede wszystkim?), te w szczególności rozciągnięte w czasie.

Przekładając to na język praktyki wychodzi, że rejestrując w bazie nie zawsze dysponuje się wszystkimi danymi. Aby zapewnić spójność stosuje się więc podział tabel (ta obśmiana przez niektórych normalizacja), definiuje indeksy/klucze własne, a dla pól gdzie nie ma wszystkich danych w momencie ich wprowadzania, rezygnuje się często z kluczy obcych, przerzucając sprawdzenie tego powiązania na aplikację, bo jego założenie mogłoby nie pozwolić przejść użytkownikowi do następnego kroku. Ale brak tegoż klucza obcego nie upoważnia do olania wszystkich constraintów przysłowiowym "ciepłym moczem".

Ot perfekcyjna baza danych zapewne uczyniłyby aplikację nieżyciową z punktu widzenia użytkownika, więc zapewne także niezdolną do zaliczenia testu funkcjonalności u użytkownika ;-(, ale nie widzę u kolegów broniących potrzeby projektowania baz danych zgodnie z wykorzystaniem jak największej ilości wbudowanych w nie mechanizmów, negowania że odstępstwa od reguł są dopuszczalne. :-)

To tak z punktu widzenia rozumu, który się przypadkowo w przyrodzie przydażył. ;-)


Hmmmm... tak jakieś 98 proc. z tego (powyzej) nie kąsam o co bangla...

Tak a`propos co ja na tej grupie robie?

;)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Marek Kubiś:
nie gadam o spójności bazy relacyjnej bo ich nie mam za bardzo kiedy używać, muszę logikę obsłużyć w aplikacji...
???????????????????? !!!!!!! ???????????? a to poniżej to jak jest realizowane?
dobrze zaprojektowany system (oprogarmowanie) cechuje się, tym, ze zmiana domenowa (nowa stawka VAT, zmiana sposobu kontroli i naliczania wynagrodzenia i masa innych, sa implementowane we jednym miejscu.
Przecież aby z tego skorzystać, to wszędzie tam gdzie jakaś dana jest potrzebna należy się do tego miejsca odwołać. Aby odczytać właściwą wartość należy system tak zdefiniować aby było coś, co wskaże tę konkretną pożądaną wartość, czyli jest to nic innego jak zaprojektowanie logicznej relacji, która będzie podstawą użytkowania takiej bazy. Już ta logiczna relacja czyni tę bazę relacyjną!

nie, do niczego nie muszę się odnosić, wystarczy konstruować faktury jako kompletne agregaty, bez żadnych "odnośników i relacji", nowe stawki VAT wprowadzam w miejscu (wzorzec obiektowy fabryka i startegia) gdzie są naliczane. Jedyną relacją "logiczną" jest to zarówno obiekt FakturaVAT jak i agregat zawarty w FabryceFaktur zawiera pojęcie stawki VAT ale nijak nie związane żadnymi "relacjami ani więzami".
Nie zmieniajmy definicji, bo nikt nie będzie wiedział o czym mowa! Relacyjna baza danych - baza danych złożona z dwóch lub więcej tabel powiązanych ze sobą za pomocą relacji.

o tym mówię, jeżeli więc mam dwie tabele nie powiązane ze sobą relacją ...
Podobnie jest z plikiem płaskim - jeżeli przechowuje dane, tzn. pełni funkcję bazy danych! :-(


owszem, ale już nie jest bazą danych relacyjna
jako że projektuję nowe systemy a nie konserwuje starych mało mam z takimi bazami do czynienia... i twierdzenie, że gdybym użył relacyjnej bazy to... to nie ma sensu bo relacyjna baza usztywnia cały system a tego nie chcemy...
100% NIE! Wcześniej wypowiadając się z pozycji analityka stojącego na straży potrzeby spełniania wymagań klienta, itd. itp., w 100% z Pańskimi wypowiedziami się zgadzałem, ale teraz jako projektant, który jest osobą narzucającą już szczegółowe implementacyjne wymagania pisze Pan bzdury. :-(

jest nie małe grono mające inne zdanie...
Przedstawione podejście to jedna z możliwości implementacji. Rozumiem, że z Pańskiego doświadczenia wyszło Panu, że tak jest najlepiej. Nie polemizuję.

problem w tym, że programiści potrafią zniszczyć projekt, tu krótki przykład:
http://it-consulting.pl/autoinstalator/wordpress/index...

dlatego stawiając wymagania czasami zabraniam w projekcie pewnych "dzialań"
Można przecież to co było pozostawić bez zmian i do danych archiwalnych sięgać za pomocą starych aplikacji.

ile takich "startych aplikacji" mam zostawić? po kilka takich zabiegach IT stanie się skansenem, użytkownik oczekuje pracy z jedną aplikacją a nie z jedną plus cztery skanseny...

Można też przecież zdefiniować całą bazę na nowo,

i potem migrować starą, i tak za każdym razem???

Co do nieszczęsnych więzów integralności i obiektowości. Wg. mnie nie jest tak, że ma się to wszystko nijak do relacyjności. To, że diagram E/R i UML to inne bajki to już było wielokrotnie. Ale w sprawie obiektowości, jak dla mnie, też mamy do czynienia z nieporozumieniem podobnym do tego tytułowego, bo nie paradygmat obiektowy jest tu najważniejszy. :-(

to się poważnie różnimy zdaniem,

Jeżeli wyjść od użytkownika, to on np: przyjmuje i realizuje zamówienia klienta, przyjmuje i wydaje towar z magazynu, ewidencjonuje zakup, sprzedaż, .. i robi wieeeele innych rzeczy. Czy to są obiekty? Nie, to są zdarzenia.

obiekty: zamówienie, faktura, towar, .... zdarzenie: wymagana nowa faktura.... itp..
Biznes reaguje więc na zdarzenia i jak dla mnie aplikacja biznesowa powinna najpierw być opisana w kategorii zdarzeń. Te zdarzenia oczywiście muszą "jakoś" być obsługiwane, do czegoś przypisane, tym bardziej, że towarzyszy im potrzeba zapamiętania jakieś ilości danych. Tym czymś jest obiekt.

zdarzenie wymagana faktura bez faktury jest co najmniej "ubogie"...

temat rzeka, proponuje lekturę o projektowaniu DDD...
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

[...]
Hmmmm... tak jakieś 98 proc. z tego (powyzej) nie kąsam o co bangla...

Tak a`propos co ja na tej grupie robie?

;)

i to jest powód by zakończyć tu rozmowę o paradygmatach...
od siebie mogę tylko spuentować:
- nie istnieje coś takiego jak diagram ER w UML
- baza danych to repozytorium a relacyjna baza danych to pewne specyficzne repozytorium

Co do zasady w strukturalnych metodach analizy i projektowania kluczowe terminy to dane i funkcje na tych danych, tu najczęściej dane są zarządzane w modelu relacyjnym. W metodach obiektowych pojęcie bazy danych jako takie nie istnieje, są za to różne metody implementacji utrwalania obiektów i system relacyjnych baz danych nie jest tu absolutnie uprzywilejowany.

Dyskusja o tym jak składować np. faktury to problem projektowy. Do mnie należy spełnianie wymagań zamawiającego i jak mi powie, że jednym z wymagań jest łatwe wprowadzanie przyszłych modyfikacji to nie mówię, że "to się tak nie da bo bazy danych ...." tylko projektuję system,który spełnia to wymaganie... co do zaś wydajności baz danych to jest to problem implementacyjny a nie analityczny czy nawet projektowy ...

ja w tym momencie podziękuję bo niestety zaczynam się powtarzać a to zły objaw :)
Łukasz Kurowski

Łukasz Kurowski Usque Ad Finem

Temat: Diagram E/R w UML?

Jarek Żeliński:
robię to stale, off-shore to często tragedia projektowa.

Często w zespole pracują jako developerzy lub testerzy. Jakie skutki? Ludzie po przejściach wiedzą.
Pracuje zadaniowo więc nie wiem co to znaczy "nadgodziny"...

Mityczny tryb zadaniowy :). Pora obalić jeden z mitów ;).
http://praca.gazetaprawna.pl/artykuly/446215,zadaniowy...

Co do nadgodzin, to nawet bardzo doświadczeni ludzie jak im przyjdzie pracować po 12h dziennie robią głupie błędy.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Łukasz Kurowski:
Jarek Żeliński:
robię to stale, off-shore to często tragedia projektowa.

Często w zespole pracują jako developerzy lub testerzy. Jakie skutki? Ludzie po przejściach wiedzą.

wole pracować z zespołem mającym jakieś wspólne osiągnięcia niż kilkoma ludźmi z łapanki. Nie mam nic przeciwko ludziom z łapanki tylko trzeba im dać kogoś kto ich ogarnie i ma jakąś koncepcję. Jeżeli jeszcze zespół programistów można obdzielić niezależną pracą (klasami, komponentami itp..) to nie znam nawet jednego przypadku by zespół analityków lub projektantów zrobił coś lepiej i taniej niż jeden analityk czy projektant (architekt itp.) ...

Moja koleżanka, bardzo dobry kierownik projektów mawia: dwie kobiety nie urodzą dziecka w 4,5 miesiąca, pewne rzeczy trwają i musi to być produkt jednej osoby z koncepcją.

Bywało, że ja dostawałem jako analityk wiodący (czy jakiś tam inny nadzór merytoryczny) np. zespół kilku analityków i wychodziło, że nauczenie ich pewnych wspólnych zasad (projekt musi być spójny) skoordynowanie efektów ich pracy, czasami poprawianie i pilnowanie spójności staje się pracą samą w sobie. W efekcie projekt sprowadza się to "oddawanie artefaktów na czas jaki wyznaczy PM bo faktury" a jego (projektu) produkty są objęte tajemnicą bo to taki bełkot, że wstyd się niejednej firmy IT przyznać do własnego dzieła. Ile razy podejmuje próby poznania autorów SIWZów i OPZów tyle razy się dowiaduję, ze "autor jest niejawny"... wstydzi się własnej pracy? Nie raz faktycznie powinien.
Pracuje zadaniowo więc nie wiem co to znaczy "nadgodziny"...

Mityczny tryb zadaniowy :). Pora obalić jeden z mitów ;).
http://praca.gazetaprawna.pl/artykuly/446215,zadaniowy...


To gazetowy bełkot, po drugie artykuł opisuje umowy o pracę. Ja zawieram umowy o dzieło a nie T&M. Tu kodeks cywilny jest prosty jak drut, odpowiedzialność także.
Co do nadgodzin, to nawet bardzo doświadczeni ludzie jak im przyjdzie pracować po 12h dziennie robią głupie błędy.

doświadczeni ludzie nie pracują po 12 godzin dziennie :) (nie tylko dlatego, że wiedzą, że to nie ma sensu)

konto usunięte

Temat: Diagram E/R w UML?

Jarek Żeliński:
co do zaś wydajności baz danych to jest to problem implementacyjny a nie analityczny czy nawet projektowy ...
To nie jest prawda. Projekt bazy danych w wielu przypadkach ma zasadnicze znaczenie dla wydajności. Z dokumentacji MS SQL Servera:

Adding indexes can help improve performance. However, their impact may be limited if your queries are inefficient because of poor table design that results in too many join operations or in inefficient join operations. Schema design is a key performance factor. It also provides information to the server that may be used to optimize query plans. Schema design is largely a tradeoff between good read performance and good write performance. Normalization helps write performance. Denormalization helps read performance.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Tomasz K.:
Jarek Żeliński:
co do zaś wydajności baz danych to jest to problem implementacyjny a nie analityczny czy nawet projektowy ...
To nie jest prawda. Projekt bazy danych w wielu przypadkach ma zasadnicze znaczenie dla wydajności. Z dokumentacji MS SQL Servera:

Projekt bazy danych ma zasadnicze znaczenie dla wydajności tej bazy a nie całego systemu...

dodam też, że na liście wymagań owa "wydajność" nieraz zajmuje dalekie miejsce na liście wymagań pozafunckjonanych, po drugie wydajność (jak i inne cechy jakościowe) w dobrym projekcie są wiązane indywidualnie z poszczególnymi przypadkami użycia a nie z całym systemem ogólnie. Dlatego nie raz rozpoczynanie projektu od analizy i projektowania relacyjnego modelu danych dla całego systemu jest po protu głupotą.. i wielu projektantów całkowicie odeszło od strukturalnych metod w tworzeniu systemów dla biznesu.. nie raz też słyszałem bardzo dobrą radę: optymalizować należy tylko to co wymaga optymalizacji a nie wszystko...Jarek Żeliński edytował(a) ten post dnia 09.11.11 o godzinie 10:40
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Mityczny tryb zadaniowy :). Pora obalić jeden z mitów ;).
http://praca.gazetaprawna.pl/artykuly/446215,zadaniowy...

Cytat:
W biurze nie ma przesłanek do stosowania zadaniowego czasu pracy
Pracownica jest zatrudniona na stanowisku referenta księgowego. Pracuje w godzinach 8.00 – 16.00. W ramach powierzonych obowiązków podlega ścisłemu kierownictwu naczelnika wydziału finansowego. W opisanej sytuacji nie zachodzi żadna z przesłanek uzasadniających zastosowanie systemu zadaniowego czasu pracy. Nie przemawia za tym ani rodzaj i organizacja pracy, gdyż pracownica nie układa swojego rozkładu czasu pracy samodzielnie, ani też miejsce świadczenia pracy, którą wykonuje ona pod kierownictwem przełożonego w siedzibie firmy.


dlatego zgodnie z kodeksem pracy, każdy kto pracuje pod jakimkolwiek kierownictwem w jakkolwiek ustalonych godzinach i pod nadzorem przełożonego i zużywając zasoby pracodawcy podlega pod kodeks pracy, nie ponosi żadnej odpowiedzialności i jest po prostu urzędnikiem. Jeżeli jest pracującym T&M programistą czy analitykiem "pod kierownictwem" PM'a czy szefa zespołu także...

ale to już totalny OT... chyba, że chodzi o pracę nad tymi diagramami :)Jarek Żeliński edytował(a) ten post dnia 09.11.11 o godzinie 10:48

konto usunięte

Temat: Diagram E/R w UML?

Wątpię. Widziałem już takie systemy nie raz. I nie dość, że rozwiązanie nie było bardziej wydajne jak tu próbowaliście pokazać, to jeszcze wiele prostych spraw jak unikalność i referencje były programowane niepotrzebnie w myśl nie wiem czego... A na koniec dnia i tak wychodziły kwiatki.

I też już bym chciał na tym zakończyć ;-)

Twoja opinia bazuje na wynikach pracy niekompetentnych ludzi.
Z fałszu można sobie implikować wszystko.
Hehe. Uznaj sobie za co chcesz ;-) Jak zrobię błąd w kodzie constraintu to najprawdopodobniej ujawni się on w momencie zakładania, albo przy pierwszych insertach. Więc jeszcze w czasie dewelopmentu.
Twój błąd pojawi się najprawdopodobniej dopiero na testach,

i tam powinien. testy to też "dewelopment".

Może ty użytkownikom dajesz do testowania rozgrzebany półprodukt. Ja przekazuję do testów gotowe rozwiązanie, aby sprawdzić, czy spełnia wszystkie wymagania.

Znowu. Czy ww. zespoły również oddawały użytkownikowi coś, co nie przeszło testów ?

Do testowana służą testerzy a nie użytkownicy.
Bo logika spójności danych (jak i cała domena) powinna być w jednym miejscu w systemie.

Rozsmarowanie jej po całym systemie prędzej czy później zacznie sprawiać problemy.

Na prawdę życzę powodzenia. Praktyka pokazuje, że w z kontrolą spójności na aplikacji bywa marnie. I zostawmy już to.

W ww. projektach / systemach to chyba wszystko wychodziło marnie.
plik tekstowy jest stabilny ...

A nie jest?

A plik tekstowy to program ? Plik tekstowy 'nie działa' więc jak może działać 'źle' (niestabilnie).
Kamil Stawiarski

Kamil Stawiarski Oracle Certified
Master | Oracle ACE

Temat: Diagram E/R w UML?

Jarek Żeliński:

Projekt bazy danych ma zasadnicze znaczenie dla wydajności tej bazy a nie całego systemu...

dodam też, że na liście wymagań owa "wydajność" nieraz zajmuje dalekie miejsce na liście wymagań pozafunckjonanych, po drugie wydajność (jak i inne cechy jakościowe) w dobrym projekcie są wiązane indywidualnie z poszczególnymi przypadkami użycia a nie z całym systemem ogólnie. Dlatego nie raz rozpoczynanie projektu od analizy i projektowania relacyjnego modelu danych dla całego systemu jest po protu głupotą.. i wielu projektantów całkowicie odeszło od strukturalnych metod w tworzeniu systemów dla biznesu.. nie raz też słyszałem bardzo dobrą radę: optymalizować należy tylko to co wymaga optymalizacji a nie wszystko...

Bardzo mnie cieszy, że takie jest podejście, bo dzięki temu mam cały czas zapełniony kalendarz zleceniami na prawie kwartał do przodu :)Kamil Stawiarski edytował(a) ten post dnia 09.11.11 o godzinie 12:01
Krzysztof Bokiej

Krzysztof Bokiej Software Engineer

Temat: Diagram E/R w UML?

Jakub Wojt:
Twoja opinia bazuje na wynikach pracy niekompetentnych ludzi.
Z fałszu można sobie implikować wszystko.

Nie chcę się już powtarzać. Prawdą, a nie fałszem jest to, że większość systemów z jakimi pracowałem (odpytywałem) ma problemy ze spójnością danych. Bo ludzie wymyślają koło na nowo.

I nie mówię, że (TEORETYCZNIE) nie stworzysz idealnie spójnego systemu na plikach tekstowych. Bo może TEORETYCZNIE się da. EOT.
Znowu. Czy ww. zespoły również oddawały użytkownikowi coś, co nie przeszło testów ?

Do testowana służą testerzy a nie użytkownicy.

Hehe. A Twoje opinie bazują na świecie idealnym. W moich projektach zdarza się, że testuje grupa wybranych do tego użytkowników.

Ale bez względu na fakt, czy testuje tester czy użytkownik-tester to testuje gotowe rozwiązanie! Bo co z tego, że dane testy wykona i będą zdane, jak ty swoim dewelopmentem w innym miejscu możesz wpłynąć na "zepsucie" danej funkcjonalności. Więc i tak trzeba wszystko testować jeszcze raz (testy regresyjne). No chyba, że masz testerów na etacie, co codziennie Ci te same testy klepią i dają Ci feedback co przestało działać. Wątpię...
A plik tekstowy to program ? Plik tekstowy 'nie działa' więc jak może działać 'źle' (niestabilnie).

Plik tekstowy w tym scenariuszu to kontener na dane. Czy Twoim zdaniem jako kontener na dane nie jest najbardziej stabilną rzeczą pod słońcem?Krzysztof Bokiej edytował(a) ten post dnia 09.11.11 o godzinie 12:28

konto usunięte

Temat: Diagram E/R w UML?

Jarek Żeliński:
Projekt bazy danych ma zasadnicze znaczenie dla wydajności tej bazy a nie całego systemu...
Spadek wydajności bazy danych implikuje spadek wydajności całego systemu.
dodam też, że na liście wymagań owa "wydajność" nieraz zajmuje dalekie miejsce na liście wymagań pozafunckjonanych
Jeśli klient akceptuje system, który działa wolno, to jego wybór.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Diagram E/R w UML?

Kamil Stawiarski:
Jarek Żeliński:

Projekt bazy danych ma zasadnicze znaczenie dla wydajności tej bazy a nie całego systemu...

dodam też, że na liście wymagań owa "wydajność" nieraz zajmuje dalekie miejsce na liście wymagań pozafunckjonanych, po drugie wydajność (jak i inne cechy jakościowe) w dobrym projekcie są wiązane indywidualnie z poszczególnymi przypadkami użycia a nie z całym systemem ogólnie. Dlatego nie raz rozpoczynanie projektu od analizy i projektowania relacyjnego modelu danych dla całego systemu jest po protu głupotą.. i wielu projektantów całkowicie odeszło od strukturalnych metod w tworzeniu systemów dla biznesu.. nie raz też słyszałem bardzo dobrą radę: optymalizować należy tylko to co wymaga optymalizacji a nie wszystko...

Bardzo mnie cieszy, że takie jest podejście, bo dzięki temu mam cały czas zapełniony kalendarz zleceniami na prawie kwartał do przodu :)

mnie też, ścieżka wygląda tak:
- najpierw ktoś totalnie coś psuje i uczy się
- potem przychodzi ktoś kto mówi, że baza danych jest najważniejsza i robi na prawdę dobrą bazę "pod system" (bo czy dobry system to już nie koniecznie)
- potem pojawia się projekt pod tytułem "integracja, nowy podsystem" itp. i baza zaczyna być głównym problemem, i nie mam na myśli wcale jej wydajności, bo przede mną był ktoś, kto ją faktycznie bardzo dobrze zoptymalizował i jest prędziutka.

Tak więc, nie raz mam wrażenie że moje kolejne kwartały są po Twoich...

Kolejność tych "kwartałów" podejrzeć, a tym samym zweryfikować to czy mój czy inny kwartał był pierwszy, w cyklach życia systemów ERP.... polecam IFS, Dynamix AX, SCALA, SAP i podobne. Jak widać cieszymy się obaj :)

Następna dyskusja:

Diagram E/R




Wyślij zaproszenie do