Johny_Morfina napisał(a)
rozumiem ze mam robic joiny zamias podwojnych petli?
Tak. Korzyści chyba są oczywiste. Jeden select wykona się szybciej niż 100 selectów mimo tego, że dotyczą tych samych danych. Po drugie nie masz dwóch pętli tylko jedną.
Johny_Morfina napisał(a)
po co zatem w ogole dzielic baze na tabele skoro i tak pytajac sie o dane sklejam je w jedna calosc?
Po pierwsze dane trzymane w wielu tabelach się nie powtarzają. Np. masz tabelę kontrahentów oraz tabelę miast, w tabeli kontrahentów trzymasz tylko idmiasta w którym ma siedzibę kontrahent dzięki temu w tabeli kontrahentów nazwa miast nie powtarza się tyle razy ilu kontrahentów jest z danego miasta. Dzięki temu dane zajmują mniej miejsca. Gdybyś trzymał miasto w tabeli kontrahentów to z pewnością część kontrahentów miała by wpisane: 'Warszawa', 'WARSZAWA', 'Warszawka', 'Wa-wa' itp. dzięki powiązaniu po idmiasta wszyscy kontrahenci z Warszawy będą mieli wpisaną nazwę miasta identycznie tak jak w tabeli miasta np. 'Warszawa'.
Po drugie dzielenie danych na wiele tabel sprzyja bezpieczeństwu i spójności. Jeżeli masz w tabeli kontrahentów klucz obcy do tabeli miast to nie będziesz mógł skasować z tabeli miast - miasta z którego pochodzi choć jeden Twój kontrahent. Dzięki temu nigdy nie zdarzy się sytuacja, że nie wiesz skąd pochodzi Twój kontrahent. Bardziej obrazowy przypadek to taki, że masz tabelę z nagłówkami dokumentu (w której masz kto kupił, kiedy itd) oraz tabelę z linijkami dokumentu (w której masz co kupił i w jakiej ilości). Nie będziesz mógł skasować nagłówka dokumentu dopóki istnieje choć jedna linijka dla tego nagłówka. Dzięki temu nigdy nie zdarzy się sytuacja, że w bazie będą linijki bez nagłówka o których nie wiadomo którego dokumentu dotyczą. Nie zdarzy się też sytuacja w której Pani Basia pomyliła się przy wpisywaniu daty dokumencie i zmieniła tą datę dla trzech linijek ale zapomniała o czwartej. Jeżeli będzie zmieniała datę tylko w nagłówku to nie będzie tego musiała robić cztery razy tylko jeden raz.