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