3. Normalizacja schematu bazy danych
Transkrypt
3. Normalizacja schematu bazy danych
Spis treści 1. Paradygmaty programowania obiektowego.....................................................................................2 1.1 Paradygmat programowania......................................................................................................2 1.2 Paradygmaty programowania obiektowego...............................................................................2 2. Arytmetyka stało- i zmiennoprzecinkowa........................................................................................3 2.1 Arytmetyka stałoprzecinkowa....................................................................................................3 2.1.1 Typ......................................................................................................................................3 2.1.2 Działania............................................................................................................................3 2.2 Arytmetyka zmiennoprzecinkowa.............................................................................................4 2.2.1 Typ......................................................................................................................................4 2.2.2 Działania............................................................................................................................4 3. Normalizacja schematu bazy danych..............................................................................................5 3.1 Definicja.....................................................................................................................................5 3.2 Cele............................................................................................................................................5 3.3 Postacie normalne......................................................................................................................5 4. Model warstwowy TCP/IP...............................................................................................................6 4.1 Definicja.....................................................................................................................................6 4.2 Warstwy.....................................................................................................................................6 5. Ocena złożoności algorytmów.........................................................................................................7 5.1 Definicja.....................................................................................................................................7 5.2 Notacja dużego O.......................................................................................................................7 6. Język UML w projektowaniu oprogramowania...............................................................................8 6.1 Definicja.....................................................................................................................................8 6.2 Diagram klas..............................................................................................................................8 6.3 Diagram obiektów......................................................................................................................8 6.4 Diagram przypadków użycia.....................................................................................................8 6.5 Diagram aktywności..................................................................................................................9 6.6 Diagram automatów stanów......................................................................................................9 6.7 Diagram sekwencji....................................................................................................................9 7. Generowanie realistycznych obrazów scen 3-D za pomocą metody śledzenia promieni..............10 7.1 Definicja...................................................................................................................................10 7.2 Zasada działania.......................................................................................................................10 8. Mechanizmy systemu operacyjnego wspomagające synchronizację procesów.............................11 8.1 Synchronizacja – definicja.......................................................................................................11 8.2 Semafor....................................................................................................................................11 8.3 Mutex.......................................................................................................................................11 8.4 Monitor....................................................................................................................................11 9. Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA................................................12 9.1 Definicja – PLD.......................................................................................................................12 9.2 CPLD.......................................................................................................................................12 9.3 FPGA.......................................................................................................................................12 10. Optyczne nośniki informacji........................................................................................................13 10.1 Definicja.................................................................................................................................13 10.2 Kody kreskowe......................................................................................................................13 10.3 Płyty CD/DVD/BD................................................................................................................13 1/13 1. Paradygmaty programowania obiektowego 1.1 Paradygmat programowania Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego. W programowaniu obiektowym jest on traktowany jako zbiór współpracujących ze sobą obiektów. Sposób patrzenia na przepływ danych. 1.2 Paradygmaty programowania obiektowego Abstrakcja • każdy obiekt w systemie przedstawiony jest jako pewien abstrakcyjny model – może on wykonywać różne czynności • użytkownika nie interesuje jak wykonywane czynności, on tylko korzysta z wyjścia • nie ujawnione jest w jaki sposób zaimplementowane są jego cechy Hermetyzacja • innymi słowy ukrywanie implementacji (enkapsulacja) • obiekt może zmieniać swój stan jedynie poprzez własne metody wewnętrzne • obiekty komunikują się ze sobą za pomocą własnych zdefiniowanych interfejsów • uodpornienie modelu przed błędami • realizacja za pomocą metod i atrybutów prywatnych Dziedziczenie • tworzenie specjalizowanych obiektów na podstawie bardziej ogólnych • nie jest wymagana redefinicja wszystkich funkcjonalności tylko tych, których nie ma obiekt ogólniejszy • powstają grupy obiektów (klasy) oraz grupy klas (drzewa) • celem jest efektywniejsze wykorzystanie istniejących funkcjonalności (napisanego kodu) Polimorfizm • polega na wykorzystywaniu różnych danych w jednolity sposób lub jednego typu danych na różne sposoby. • celem polimorfizmu jest przeniesienie decyzji szczegółów wykonania na system, nie programistę (kompilator i czas wykonania) • ze względu na czas decyzji polimorfizm dzieli się na statyczny (decyzja podjęta podczas kompilacji) i dynamiczny (podczas wykonania) • na przykład podczas wykonywania metody x.run() program musi zdecydować, którą metodę powinien uruchomić bazując na typie obiektu. 2/13 2. Arytmetyka stało- i zmiennoprzecinkowa 2.1 Arytmetyka stałoprzecinkowa 2.1.1 Typ • do zapisu liczby stałoprzecinkowej przeznaczona jest z góry określona liczba bitów • pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności • Dla liczby stałoprzecinkowej o ustalonej liczbie bitów: im więcej bitów przeznaczymy na część ułamkową, tym większa precyzja liczby i mniejszy zakres • dokładność i jest równa wadze najmniej znaczącego bitu części ułamkowej 2.1.2 Działania Dodawanie/odejmowanie • dodawanie liczb systemem słupkowym – liczba jedna pod drugą z zachowaniem pozycji cyfr o tych samych wagach • dla wyniku dwucyfrowego – przeniesienia • przeniesienie w systemie naturalnym – jeżeli równe zero to nastąpiło przepełnienie i wynik można zakodować na k+1 bitach • przeniesienie w systemie uzupełnieniowym U2 – jeśli wartości przeniesień na pozycjach k-1 i k są równe wynik jest poprawny; w przeciwnym wypadku wystąpiło przepełnienie • odejmowanie – dodawanie liczby przeciwnej (odjętej od zera) Mnożenie • system naturalny – mnożenie mnożnej kolejnymi cyframi mnożnika, dodanie kolejnych sum częściowych po przesuwaniu w prawo • system uzupełnieniowy – tak jak w naturalnym; kiedy mnożnik jest ujemny (wartość na pozycji k-1 jest równa 1) niezbędna jest korekcja mnożenia Dzielenie • Wykonując działania systemie pozycyjnym iloraz możemy obliczyć z dowolną dokładnością, metodą kolejnych przybliżeń. Wartość każdej reszty musi być mniejsza od dzielnika. • W odróżnieniu od mnożenia i dodawania, wynik dzielenia jest zawsze przybliżony. • Nie ma żadnej gwarancji, że dla danych dzielnej X oraz dzielnika D istnieje taka liczba Q, że X = Q*D. Można za to zawsze znaleźć liczby Q i R, zwane ilorazem i resztą takie, że X = Q*D+R. 3/13 2.2 Arytmetyka zmiennoprzecinkowa 2.2.1 Typ • • • • • liczby rzeczywiste o dużym zakresie każda liczba przedstawiona jako trójka β (podstawa) M (mantysa) E (wykładnik) standard IEEE754 bity ochrony i zaokrąglenia – G, R, X liczba znormalizowana – liczba z przedziału <1, β) 2.2.2 Działania Dodawanie/odejmowanie • wymaga wyrównania wykładników (mniejszego do większego) • denormalizacja jednego z operandów, dodanie/odjęcie mantys, normalizacja wyniku F1+F2 = M1BE1 + M2BE2 = ( M1 + M2*B-(E1-E2) ) BE1 • Nadmiar lub niedomiar może wystąpić dopiero podczas normalizacji wyniku Mnożenie/dzielenie • mnożenie – przemnożenie mantys, dodanie wykładników, normalizacja wyniku • mnożenie – podzielenie mantys, odjęcie wykładników, normalizacja wyniku • ograniczona wartość wykładnika – prawdopodobieństwo wystąpienia nadmiaru lub niedomiaru 4/13 3. Normalizacja schematu bazy danych 3.1 Definicja • • • Normalizacja jest to proces projektowania bazy danych mający na celu eliminację powtarzających się danych w relacyjnej bazie danych. Nie ingeruje ona w ich treść, a jedynie w strukturę ich przechowywania Najczęściej sprowadza się to do rozbijania większych encji na mniejsze bez utraty danych w nich zawartych. Polega on na porównywaniu schematu bazy danych z kolejnymi postaciami normalnymi do których schemat ma zostać sprowadzony 3.2 Cele • unikanie redundancji, czyli powtarzających się pól z identycznymi wartościami • zachowanie spójności danych; trzymanie danych w jednym miejscu • unikanie anomalii występujących podczas takich operacji jak wstawianie, modyfikacja (zmiana jednych atrybutów może wymagać zmiany innych), czy usuwanie rekordów (usuwanie zbędnych informacji może usunąć przydatne); bezpieczeństwo BD 3.3 Postacie normalne 1. postać normalna – 1NF • wymaga by każda składowa każdej z krotek w encjach schematu bazy danych była atomowa, czyli nie dawała się podzielić na mniejsze części (w zależności od sposobu użycia danych) • każda baza danych stworzona zgodnie z relacyjnym modelem danych spełnia ten warunek, tym samym jest znormalizowana do 1NF 2. postać normalna – 2NF • schemat musi być zgodny z 1NF oraz każdy atrybut X, który nie jest kluczem zależy funkcyjnie od klucza (a nie od podzbioru atrybutów stanowiących klucz) – po wyznaczeniu wszystkich zależności funkcyjnych • krotki tabeli nie powinny zależeć od niczego innego niż klucz podstawowy encji 3. postać normalna – 3NF • spełnione założenia 2NF • każdy atrybut jest bezpośrednio zależny od klucza głównego • usunięcie (utworzenie osobnej encji) pół niezwiązanych z kluczem głównym Pomimo wielu zalet często należy zrezygnować z kolejnego poziomu normalizacji. Wynika to z tego, że w przypadku dużych baz znacznie zwiększa się czas każdej z operacji oraz, że rzeczywiste potrzeby często różnią się od podejścia teoretycznego 5/13 4. Model warstwowy TCP/IP 4.1 Definicja • Model warstwowy – podział zagadnienia sieciowego dla zapewnienia współpracy urządzeń, technologii i oprogramowania • model TCP/IP jako model protokołów - opisuje funkcje, które występują na każdej z warstw w ramach zestawu TCP/IP. • uważany za model sieci Internet • model TCP/IP jest otwartym standardem 4.2 Warstwy • Warstwa aplikacji • • reprezentacja danych dla użytkownika przesyłanie danych pomiędzy aplikacjami FTP (wymiana plików), dostarczanie danych do odpowiednich aplikacji komunikacja pomiędzy różnymi urządzeniami w różnych sieciach TCP (połączeniowy, niezawodny) SMTP (poczta), DNS (nazwy sieciowe), Warstwa transportowa • Warstwa Internetu • • określanie najlepszej trasy dla pakietu IP (bezpołączeniowy, prosty, bez przetwarzanie datagramów kontroli przepływu) ICMP zawierających adresy IP • Technologie – Ethernet, WiFi, kontroluje urządzenia fizyczne i media tworzące sieć Token Ring komunikacja między poszczególnymi węzłami Warstwa dostępu do sieci • 6/13 UDP (bezpołączeniowy, szybszy) 5. Ocena złożoności algorytmów 5.1 Definicja • Złożoność algorytmu jest to miara ilości zasobów potrzebnych do rozwiązania problemu o określonym rozmiarze. • ilość potrzebnych zasobów różni się w zależności od danych wejściowych z zakresu danego zagadnienia - im większe rozmiary danych wejściowych tym więcej zasobów jest koniecznych do wykonania danych obliczeń. • Zdarza się również ze dla takiej samej wielkości instancji potrzebne zasoby są diametralnie różne • Złożoność algorytmu jest funkcją rozmiaru danych wejściowych. • Złożoności dzielimy na: ◦ pamięciowe – ile miejsca na dysku bądź pamięci RAM potrzebuje algorytm aby się wykonać ◦ czasowe – ile podstawowych operacji musi wykonać algorytm aby rozwiązać zadany problem; pomiar rzeczywistego czasu procesora jest mało użyteczny (użyta implementacja, kompilator, maszyna) • Złożoności ze względu na skrajne przypadki danych wejściowych można podzielić na: ◦ przeciętne (średnie) – wartość oczekiwana wykorzystywanych zasobów ◦ optymistyczne (najlepszy przypadek) – najmniej zasobów, najmniej operacji ◦ pesymistyczne (najgorszy przypadek) – najwięcej zasobów, najwięcej operacji 5.2 Notacja dużego O Podczas oceny złożoności algorytmu istotny jest tak naprawdę rząd wielkości a nie dokładna wartość i to jak zmienia się ta liczba wraz ze zmianą rozmiaru instancji problemu. Złożoność algorytmu wyrażamy za pomocą notacji dużego O. • O(1) - złożoność „rzędu 1" - liczba operacji wykonywanych przez algorytm jest w przybliżeniu niezależna od rozmiaru problemu. • O(logN) - złożoność logarytmiczna - liczba operacji rośnie proporcjonalnie do logarytmu z rozmiaru problemu. • O(N) - złożoność „rzędu N" zwana złożonością liniowa - liczba wykonywanych przez algorytm operacji jest w przybliżeniu proporcjonalna do rozmiaru problemu. • O(NlogN) -złożoność „rzędu N logN" - liczba operacji jest proporcjonalna do iloczynu rozmiaru problemu i jego logarytmu • O(N2) - złożoność kwadratowa - liczba operacji rośnie proporcjonalnie do kwadratu rozmiaru problemu. • O(N!) - złożoność rzędu N silnia" - liczba operacji wzrasta proporcjonalnie do silni rozmiaru problemu 7/13 6. Język UML w projektowaniu oprogramowania. 6.1 Definicja • UML – Unified Modeling Language – sposób formalnego opisu modelu reprezentującego projekt informatyczny • UML służy do projektowania systemu w sposób obrazowy, a później opracowywanie implementacji poszczególnych metod • zaletą jest oszczędność czasu w fazie produkcji oraz zmniejszenie ryzyka przepisywania kodu • stworzony model jest niezwykle przyjazny i czytelny • możliwość całkiem skutecznego projektowania wstępnego na kartce 6.2 Diagram klas • Diagram opisujący strukturę projektu • definicja klasy – nazwa klasy, atrybuty, metody (wraz z zaznaczonym zasięgiem) • ukazuje powiązania między klasami w projekcie • relacje – definiują oraz opisują współpracę między klasami – powiązanie (podobne do tego z baz danych), dziedziczenie, zawieranie (jedna klasa zawiera drugą, ale osobno mogą współistnieć) 6.3 Diagram obiektów • Role spełniane przez poszczególne instancje danej klasy • uszczegółowienie diagramu klas • określenie obiektu i typu do jakiego należy oraz określenie stanu działania (początkowy) 6.4 Diagram przypadków użycia • Prezentacja wymagań stawianych przed projektem • pokazanie interakcji między funkcjonalnościami systemu a użytkownikiem • składa się z: ◦ Aktora – użytkownik prowadzący interakcję z systemem, ale sam do niego nie należy ◦ Przypadek użycia – reprezentacja konkretnej funkcjonalności; bez prezentowania szczegółów 8/13 6.5 Diagram aktywności • Opis działania całego systemu lub podsystemu • składa się z: ◦ początek i koniec działania systemu ◦ operacje i instrukcje warunkowe 6.6 Diagram automatów stanów • Opis działania konkretnego obiektu • składa się z: ◦ początek i koniec działania systemu ◦ stan – status obiektu lub wykonywana przez niego funkcjonalność ◦ relacje – opis działań pod, wpływem których obiekt przechodzi w inny stan • relacje można zdefiniować na wyjściu lub na wejściu stanu 6.7 Diagram sekwencji • Prezentacja współpracy między obiektami i przesyłane między nimi komunikaty • sekwencja zdarzeń, które są w odpowiedniej kolejności • możliwe jest umieszczenie Aktora • składa się z: ◦ obiektów biorących udział w danej sekwencji ◦ strzałki pokazujące przesyłane między obiektami komunikaty – komunikaty można odsyłać do obiektu wysyłającego oraz wysyłać komunikaty sam do siebie ◦ strzałki przerywane – przesyłanie lub zwracanie pewnych danych 9/13 7. Generowanie realistycznych obrazów scen 3-D za pomocą metody śledzenia promieni. 7.1 Definicja • symulacja zachowania światła w realnym świecie • promień światła, zanim dotrze do oka obserwatora, może po drodze odbijać się od wielu obiektów, zmieniając przy tym kierunek • ray tracing korzysta z modeli oświetlenia – Ponga lub Lamberta 7.2 Zasada działania • śledzenie zaczynamy od oka obserwatora • obiekty na scenie trójwymiarowej są wykonane z różnych materiałów, które mogą pochłaniać fale światła o określonej długości, a odbijać inne • jeżeli promień trafi w pewien obiekt, możemy obliczyć kolor tego promienia, korzystając z modelu oświetlenia, np. modelu Phonga. Możemy wtedy śledzić też kolejne promienie – odbity i załamany • jeżeli promień nie trafi w żaden obiekt, przyjmujemy pewien ustalony kolor takiego promienia, zazwyczaj kolor tła • wysoki koszt obliczeniowym – dla każdego piksela wynikowego obrazu należy przeprowadzić całą procedurę śledzenia promieni. Możliwe są równoległe obliczenia dla każdego piksela lub nawet dla każdego promienia • model oświetlenia Phonga pozwala obliczyć kolor wybranego punktu na powierzchni trójwymiarowego obiektu • trzy składowe światła w modelu Ponga – ambientowa (światło otoczenia), rozproszona (podstawowy kolor obiektu) i odbita (efekt połysku) • Model Phonga dopuszcza również tzw. tłumienie atmosferyczne czyli spadek natężenia światła wraz z rosnącą odległością od obserwatora • model Lamberta – model światła rozproszonego • prawo Lamberta – natężenie światła rozproszonego jest wprost proporcjonalne do kosinusa kąta pomiędzywektorem normalnym do powierzchni, a promieniem pochodzącym od źródła światła 10/13 8. Mechanizmy systemu operacyjnego wspomagające synchronizację procesów. 8.1 Synchronizacja – definicja • Problem ustalenia kolejności działania procesów, które ze sobą współpracują • współdzielenie danych – atomizacja zadań, czyli tylko jeden proces w danej chwili może modyfikować współdzielone dane (problem sekcji krytycznej) • wyniki działań – dane wyjściowe z jednego procesu mogą być danymi wejściowymi drugiego; drugi może wykorzystać tylko dopiero obliczone dane (konieczność synchronizacji) • zasoby – procesy wykorzystują wspólną pulę zasobów, którą pobierają i zwalniają 8.2 Semafor • Chroniona zmienna lub abstrakcyjny typ danych; zmienna całkowita >= 0; wartość początkowa • zasada działania opiera się na sygnalizowaniu pracy procesu co pozwala na współpracę między procesami • operacje: ◦ P – opuszczanie – blokowanie procesu ◦ V – podnoszenie – odblokowanie procesu • rodzaje: ◦ binarny – true (V) lub false (P) ◦ zliczający – zbiór liczb nieujemnych; licznik dostępnych zasobów 8.3 Mutex • Szczególny rodzaj semaforów binarnych • stany – zablokowany (wykorzystywanie zasobów) lub odblokowany (zwolnienie zasobów) • mutex przypisany do danego zadania – tylko zadanie, które blokuje mutex może go odblokować • blokowanie rekurencyjne – określa ile razy zadanie posiadające mutex wykonało na nim blokowanie – możliwe kilkakrotne zgłaszanie dostępu do zasobu 8.4 Monitor • Obiekt, który może być bezpiecznie używany przez kilka wątków • dostęp do danej metody w danym czasie ma tylko jeden wątek; kolejka FIFO • metody są chronione mutexami • bezpieczniejsze rozwiązanie sekcji krytycznej (wspólnych zasobów) 11/13 9. Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA. 9.1 Definicja – PLD • Układy programowalne – w odróżnieniu od ASIC (dedykowane układy do konkretnych urządzeń, programowalne tylko raz) • programowanie za pomocą języka Verilog lub VHDL • opis działań w sposób behawioralny • narzędzie syntezy przekształca opis behawioralny w konkretną realizację sprzętową • układy programowalne dają możliwość stworzenia dowolnego układu • są wolniejsze i mają większy pobór mocy niż układy ASIC • Realizowanie funkcji logicznych • programowanie polega na zestawieniu poszczególnych bitów, by realizowane były projektowane funkcje • zestaw wejść/wyjść do układu 9.2 CPLD • • • • Składają się ze złożonych matryc funkcji AND i OR hierarchiczna budowa oparta o makrokomórki bloki funkcyjne – zbiory makrokomórek; mogą być wymieniane informacje między nimi pojedyncza makrokomórka realizuje prostą operację logiczną – bloki funkcyjne mogę realizować operacji wielu zmiennych 9.3 FPGA • Matryce funkcyjne zastąpione przez LUT (Look Up Table) • LUT – pamięć z wprowadzanych danych produkuje odpowiedni wynik • makrokomórki – układy logiczne • bloki funkcyjne CLB – kilka LUTów; realizacja większych funkcji • programowalne są również połączenia między blokami • na obrzeżach CLB znajdują się programowalne bloki IOB (input output blocks) 12/13 10. Optyczne nośniki informacji. 10.1 Definicja • Nośniki informacji, które do zapisu lub odczytu używają wiązki świetlnej (np. laserowa) • układ zapisujący/odczytujący nie ma bezpośredniego kontaktu z powierzchnią nośnika – zapewnia to większą trwałość nośnika 10.2 Kody kreskowe • Kody drukowane na różnych powierzchniach • używane do identyfikowania towarów • odczyt za pomocą czujników (skanerów) – rozróżniają pola jasne i ciemne • EAN – kod kreskowy używany w Europie (wersja 13 cyfrowa) ◦ 12 cyfr danych + 1 cyfra kontrolna ◦ Budowa: ▪ kod systemowy – zazwyczaj kod kraju w jakim zarejestrowany jest produkt ▪ kod producenta ▪ kod produktu ▪ cyfra kontrolna ◦ kodowanie za pomocą 0 (pole jasne) i 1 (pole ciemne) ◦ symbole 7 bitowe dla każdej cyfry 10.3 Płyty CD/DVD/BD • Płaskie okrągłe krążki – warstwy: ◦ poliwęglan ◦ warstwa zapisywalna ◦ warstwa refleksyjna ◦ poliwęglan ochronny ◦ drukowalna etykieta • zapisywanie danych w sposób spiralny • laser do zapisu/odczytu o różnej długości fali • im więcej danych można zapisać tym długość fali mniejsza – dane gęściej zapisywane • CD – 790 nm, DVD – 640 nm, BD – 405 nm • dane zapisane przez pity (wgłębienia – 0) i landy (pola – 1) • wielkość zapisywanych danych – kilkaset MB – kilkaset GB (16-warstwowe płyty BD – 400 GB) 13/13