Aktywne Wpisy

wqeqwfsafasdfasd +189
Treść przeznaczona dla osób powyżej 18 roku życia...

johnshepard2000 +26
O co chodzi pecetowcom? Widzieliście kiedyś konsolowców, którzy w jakiś sposób wyszydzają albo obrażają osoby grające na PC? rumun nazywa konsolowców zwierzętami, bo grają w 30 fps (co z tego, że to pojedyncze przypadki i praktycznie każda nowa gra działa w 60 fps), tamae coś pier*oli, że zbliża się koniec konsol i normalni ludzie, którzy nie są fanboyami nie kupią PS6 tylko PC.
Serio, jaki oni mają problem? XD Bazowe PS5 kosztuje
Serio, jaki oni mają problem? XD Bazowe PS5 kosztuje
źródło: temp_file3555590857943706689
Pobierz




Chodzi o kompletne zaoranie bazy #sql ( #mssql ), która jest kompletnie nieznormalizowana (ok. 250 tabel, z czego większość śmieciowych, a ważne też są powalone, w praktyce zero PK, a tym bardziej FK czy indeksów) i postawienie jej od nowa, ze znomralizowanymi tabelami. Mam do tego celu serwer testowy, na którym mogę robić wszystko (procedury, SSIS, SSRS) bez obawy o zepsucie czegoś, co na razie działa na tym "potworku". O ile schemat sobie powoli rysuję i ogarniam 1NF, 2NF, 3NF, (...) tak pojawia się pytanie jak dobrze rozegrać jeden z problemów.
Przyjmijmy, że mam tabelę ze wszystkimi zamówieniami stworzonymi przez klientów. Numer klienta jest schowany pod ID z tabeli, przyjmijmy, dbo.CustomerMaster, które jest FK z przytoczonej wcześniej tabeli (ID to PK IDENTITY w CustomerMaster). Więc, żeby wiersz miał sens, klient musi mieć swój odnośnik w tabeli CustomerMaster. Klientów rozróżniamy pod numerem i krajem pochodzenia (ten sam numer może być przypisany do innego kraju i być kompletnie innym klientem). I teraz pytanie jak dobrze rozegrać wrzucanie danych do tabeli z zamówieniami. Dane są brane z zewnętrznego serwera ERP.
Mój pomysł, którego nawet nie próbowałem jeszcze, tylko istnieje w głowie:
1. Pobranie nowych zamówień do tabeli dbo.StagCustomerOrders
2. Sprawdzenie czy wiersze z kolumn CustomerNo i Country mają swoje odpowiedniki w CustomerMaster.
3a. Jeśli mają, wrzucaj dane do dbo.CustomerOrders, z ID zamiast kolumn CustomerNo i Country.
3b. Jeśli nie mają to... puszczaj SELECTa z takimi wierszami i pobieraj do CustomerMaster dane dla nich z zewnętrznego serwera ERP i dopiero potem wrzucaj linie zamówień do CustomerOrders we własnej bazie (?)
Pytaniem jest, czy punkt 3b. jest poprawnym rozwiązaniem czy można (trzeba?) to inaczej zrobić? A może cały pomysł jest o kant rzyci rozbić i powinienem się wstydzić?
Nie chcę pobierać za każdym razem całej tabeli bo to są miliony wierszy i obciążenie dla zewnętrznego serwera ERP. Plus zależy mi na prędkości ( ͡° ͜ʖ ͡°)
#naukaprogramowania #kiciochpyta #bazydanych
Ale chętnie się dowiem jak byś to widział :)
Chcę na razie osiągnąć coś takiego jak w obrazku.
Dane są pobierane z zewnętrznego serwera, gdzie są osobne tabele do klientów i osobne do zamówień, ale nie mają unikalnych kluczy jednokolumnowych, tylko można je łączyć właśnie po numerze klienta i kraju.
PS. Tak,
źródło: comment_tYRYPDtIpugvdJlNI6mucN0Dy6A6HUrm.jpg
Pobierzhttps://www.wykop.pl/wpis/29213361/
Jak działa OPENROWSET na łączeniach pomiędzy bazami?
Jeśli dobrze rozumiem Twój pomysł, to najpierw sprawdzam jakie są nowe zamówienia na zewnętrznym serwerze, próbuję połączyć to z moją lokalną tabelą klientów i jeśli czegoś nie ma, to najpierw pobieram brakujące dane z zewnętrznego serwera do tabeli Master, a potem pobieram jeszcze raz zamówienia do tabeli Orders?
Może głupie pytania, ale ciągle się uczę, jak pewnie każdy, i lepiej dopytać niż zrobić źle (。◕‿‿◕。)
Nie wiem jak duza jest tabela ktora chcesz sciagac i czy chcesz sciagac przyrsot czy cala tabele? Tez zalezy ile razy dziennie ma to by replikowane itd
Ogólnie raz chcę ściągnąć za ostatnie trzy lata, a potem tylko dorzucać nowe wiersze, lub te co się zmieniły (w tabeli źródłowej są odpowiednie kolumny z datami stworzenia i zmiany)
@kodyak: