Wprowadzenie do projektowania i wykorzystania baz danych Katarzyna Klessa
` Informacje organizacyjne 1. Dyżury: środa 8:30-9:30, piątek 11:30-12:00 pokój / room 312aB Coll. Novum 2. Warunki zaliczenia przedmiotu: semestr I - test zaliczeniowy zaliczony do końca sesji zimowej semestr II - wykonanie ćwiczeń zaliczeniowych i egzamin końcowy (egz. cz. teoretyczna i praktyczna, z wykorzystaniem komputera) 2
` Od czego nie zacznie się ten kurs? 1. Teoria zbiorów jako podstawa teorii baz danych. 2. Pojęcia często spotykane we wprowadzeniu do baz danych: - algebra relacji (i jej działania, np. suma, przecięcie, przekrój) - struktury danych (atrybuty, krotki/rekordy, relacje/tabele...) - zależności funkcyjne - klucze i nadklucze - procedury...... i wiele innych ważnych zagadnień, do których: 3
` Od czego nie zacznie się ten kurs? 1. Teoria zbiorów jako podstawa teorii baz danych. 2. Pojęcia często spotykane we wprowadzeniu do baz danych: - algebra relacji (i jej działania, np. suma, przecięcie, przekrój) - struktury danych (atrybuty, krotki/rekordy, relacje/tabele...) - zależności funkcyjne - klucze i nadklucze - procedury...... i wiele innych ważnych zagadnień, do których wrócimy nieco później 4
Czy zbiór plików umieszczonych w folderze to baza danych? 5
Czy zbiór plików umieszczonych w folderze to baza danych? Jeśli pojęcie danych' to dla naspo po prostu prostu jakikolwiek zbi Jeśli pojęcie 'baza'baza danych' to dla nas zbiór danych, to namożemy powyższe odpowiedzieć pytanie danych,jakikolwiek to na powyższe pytanie - 'tak' możemy odpowiedzieć - 'tak' Ograniczenia - brak powiązań między poszczególnymi plikami - Ograniczenia - brak powiązań między poszczególnymi trudności w sortowaniu względuzena różnenakryteria, plikami, trudności wze sortowaniu względu różne trudnośc we współpracy, gdy dane są edytowane przez kryteria, trudności we współpracy, gdy dane są różne osoby (kt przez różne (kto zmienione?) edytuje, który plik, edytuje,edytowane który plik, kiedy, coosoby zostało kiedy, co zostało zmienione?) Systemy wspomagające pracę na zbiorach plików, np. Git http://git-scm.com/ - darmowy hosting dla Git, np. https://github.com/, https://bitbucket.org/ 6
Czy zbiór plików umieszczonych w folderze to baza danych? - Systemy wspomagające na zbiorach plików, np. Git, zbi Jeśli pojęcie 'baza danych' topracę dla nas po prostu jakikolwiek dla Git: danych,http://git-scm.com/; to na powyższedarmowy pytaniehosting możemy odpowiedzieć - 'tak' https://bitbucket.org/ albo https://github.com/ Ograniczenia - brak powiązań między poszczególnymi plikami trudności w sortowaniu względupracujące na różnenakryteria, - Opcje wbudowaneze w programy zbiorach trudnośc plików we współpracy, gdy sądotyczące edytowane przez(.antw) różne osoby (kt - Annotation Prodane - opcje workspace pracę na zbiorach plików zmienione?) i operacje zbiorowe na edytuje,ułatwiają który plik, kiedy, co zostało nich, a także - w ograniczony sposób - połączeń/relacji Systemy wspomagające pracę na zbiorach plików, np.między Git nimi http://git-scm.com/ - darmowy hosting dla Git, np. https://github.com/, https://bitbucket.org/ 7
Czy arkusz kalkulacyjny to baza danych? 8
Czy zbiór plików umieszczonych w folderze to baza danych? Jeśli pojęcie 'baza danych' to dla nas po prostu jakikolwiek zbi danych, to na powyższe pytanie możemy odpowiedzieć - 'tak' Ograniczenia - brak powiązań między poszczególnymi plikami trudności w sortowaniu ze względu na różne kryteria, trudnośc we współpracy, gdy dane są edytowane przez różne osoby (kt edytuje, który plik, kiedy, co zostało zmienione?) Systemy wspomagające pracę na zbiorach plików, np. Git http://git-scm.com/ - darmowy hosting dla Git, np. https://github.com/, https://bitbucket.org/ 9
Czy arkusz kalkulacyjny to baza danych? Podobnie jak zbiór plików w folderze, arkusz kalkulacyjny może pełnić funkcję dość prostej bazy danych W arkuszach kalkulacyjnych możemy do pewnego stopnia i stosunkowo łatwo kontrolować dane (w tym przypadku zawartość komórek), możemy m.in.: napisać formuły, stworzyć makro przetwarzające dane, tworzyć tabele przestawne itp. Nadal jednak ta forma przechowywania danych nie daje możliwości pełnego wykorzystania powiązań między danymi, ani jednoczesnej pracy wielu osób na tych samych danych itp. 10
Warto - nie warto - trzeba? Czy / kiedy warto szukać czegoś więcej niż zwykły zbiór plików czy arkusz kalkulacyjny? - kiedy mamy 1 osobę pracującą nad 1 tekstem? - kiedy mamy 1 osobę i wiele danych? - kiedy mamy dużo osób i średnią ilość danych? - kiedy mamy dużo osób i bardzo dużo danych? - kiedy różne osoby pracują z różnych miejsc, zdalnie? 11
Warto - nie warto - trzeba? Czy / kiedy warto szukać czegoś więcej niż zwykły zbiór plików czy arkusz kalkulacyjny? - kiedy mamy 1 osobę pracującą nad 1 tekstem - nie warto - kiedy mamy 1 osobę i wiele danych - warto - kiedy mamy dużo osób i średnią ilość danych - warto - kiedy mamy dużo osób i bardzo dużo danych - trzeba - kiedy różne osoby pracują z różnych miejsc, zdalnie - warto czasem trzeba - zależnie od ilości danych (np. za stroną internetową z danymi stoi zwykle baza danych) 12
Relacyjna baza danych - i relacyjny model rzeczywistości Relacyjna baza danych oparta jest na tzw relacyjnym modelu rzeczywistości: ma odzwierciedlać pewien fragment rzeczywistości, jej elementów oraz powiązań między nimi - zob. np. strukturę bazy słownika obok. 13
Relacyjna baza danych - i relacyjny model rzeczywistości Bazy relacyjne składają się z wielu powiązanych ze sobą tabel. 14
Jak to działa? - architektura klient - serwer 15
Jak to działa? - przykład z praktyki Leksykalna baza danych Speechlabs.ASR - SSMS - Lexicon Editor Corpus MINI - zarządzanie anotacją nagrań mowy i gestów 16
17
Relacyjna baza danych - i relacyjny model rzeczywistości Projektując bazę bierzemy pod uwagę m.in. informacje: - jakie elementy chcemy umieścić w bazie - rozmiar tych elementów - typ tych elementów (teksty krótkie, długie, liczby - np. pojedyncze wyrazy, ich tłumaczenia, transkrypcje, krótkie teksty, zbiory danych osobowych, czy np. anotacje nagrań?) - jakie są powiązania między różnymi tabelami? - czy jakieś elementy mogą zostać puste? 18
Jak nauczyć się rozmawiać z bazą danych? 1. Przede wszystkim trzeba ją mieć - instalacja (SSMS - SQL Server Management Studio). 2. Trzeba poznać język obcy - T-SQL lub jeśli jesteśmy leniwi, to SQL 3. Z bazą relacyjną można komunikować się różnymi kanałami - bezpośrednie zapytania (SQL) - za pośrednictwem program(ów) do zarządzania / edycji danych (które wykonają polecenia SQL w naszym imieniu) - lokalnie, przez Internet 19
SQL - nomenklatura Jak mówi staropolskie przysłowie, w bazach danych nie używamy znaków diakrytycznych, np. polskich ó, ż i in., ponieważ piszemy po angielsku... Używamy tylko znaków alfanumerycznych, czyli liter i cyfr. 20
SQL - nomenklatura ORACLE W bazach ORACLE stosujemy tylko wielkie litery, odstępy między wyrazami zastępujemy podkreślnikiem. Tak więc tabela zawierająca dane studentów nazywa się STUDENT. Tabela zawierająca oceny studentów nazywa się STUDENT_NOTE. Klucz główny w tabeli piszemy dodając do nazwy tabli ID, czyli dla tabeli STUDENT będzie to STUDENT_ID. 21
SQL - nomenklatura SQL Server W bazach SQL Server stosujemy notację Camel, czyli stosujemy nazwy gdzie każdy wyraz zaczyna się wielką literą. Tak więc tabela zawierająca dane studentów nazywa się Student. Tabela zawierająca oceny studentów nazywa się StudentNote. Klucz główny piszemy dodając do nazwy tabeli ID, czyli dla tabeli Student będzie to StudentID. 22
SQL - nomenklatura MySQL W MySQL utarł się zwyczaj pisania nazw małą literą i oddzielania słów podkreślnikiem. Tak więc tabela zawierająca studentów nazywa się student. Tabela zawierająca oceny studentów nazywa się student_note. Klucz główny piszemy dodająć do nazwy tabeli id, czyli dla tabeli student będzie to student_id (niektóre frameworki wymagają, aby klucz zawsze nazywał się tylko id). 23
SQL - nomenklatura Nazwy tabel zawsze piszemy w liczbie pojedynczej (chociaż niektóre frameworki bazujące na MySQL każą notować w liczbie mnogiej, czyli students i students_notes). W bazach MySQL panuje największy chaos w kwestii nazewnictwa. Mimo pewnych ustalonych standardów, można stwierdzić, że każdy robi tam po swojemu:) 24
Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego zwykle nie będę musiał/a robić ręcznie INSERT - Dodanie czegoś do tabeli SELECT - Wyświetlenie UPDATE - Zmodyfikowanie czegoś w tabeli DELETE - Usunięcie z tabeli, czyli Ratunku, nie ma cofnij! DROP - Usunięcie tabeli, czyli Ratunku, wyrzuciłem/am wszystko! 25
Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego zwykle nie będę musiał/a robić ręcznie INSERT - Dodanie czegoś do tabeli SELECT - Wyświetlenie UPDATE - Zmodyfikowanie czegoś w tabeli DELETE - Usunięcie z tabeli, czyli Ratunku, nie ma cofnij! DROP - Usunięcie tabeli, czyli Ratunku, wyrzuciłem/am wszystko! Kopie bezpieczeństwa 26
Polecenie CREATE - w praktyce rzadkie, choć kluczowe 27
Polecenie CREATE - dostępne typy Tworzymy tabelę o nazwie TABELA z 3 kolumnami: TabelaID, Kolumna2, Kolumna3. Polecenie CONSTRAINT tworzy ograniczenia w tabelach. W tym przypadku stworzyliśmy ograniczenie PRIMARY KEY (Klucz główny) na kolumnie TabelaID. Od tej pory nie może się powtórzyć wartość w kolumnie TabelaID, czyli nie będzie nigdy dwóch wierszy o tej samej wartości TabelaID. Dzięki temu możemy użyć tej kolumny jako unikatowego identyfikatora wiersza. SQL Server pokazuje nam wtedy przy tej kolumnie kluczyk. 28
Polecenie CREATE - dostępne typy int liczba naturalna varchar tekst o określonej maksymalnej długości char pole tekstowe o ściśle określonej długości, czyli wyraz noga dla char(10) zapamiętany zostanie jako noga gdzie _ oznacza spację. Pole typu char ma stałą długość. float liczba rzeczywista, 308 cyfr real liczba rzeczywista, 38 cyfr decimal liczba o określonej liczbie miejsc po przecinku, np. decimal(4,2) oznacza liczbę o długości 4 (wliczając miejsca po przecinku) i 2 miejscach po przecinku, czyli można zapisać 23,23 ale nie można 234,32 ponieważ ma długość 5. 29
Polecenie CREATE - przykład 1. 30
Polecenie CREATE - wynik zapytania z przykładu 1. 31
Polecenie CREATE - przykład 2. Jeśli po typie kolumny dodamy IDENTITY(1,1), to automatycznie przy dodawaniu wiersza będzie w tej kolumnie dodawany kolejny numer. IDENTITY dodajemy tylko dla kolumn typu liczbowego. SQL Server sam zadba o wstawianie wartości tego pola i nie można już ręcznie go edytować. 32
Polecenie CREATE - przykład 2. - All inclusive: PRIMARY KEY i IDENTITY 33
Powtórka (1) 1. Z czego składają się relacyjne bazy danych i jakie są ich najważniejsze cechy? - z tabel, - najważniejsza cecha relacyjnych baz danych to fakt, iż przechowywane są w nich informacje zarówno o danych jak i o powiązaniach/relacjach między nimi 2. Nomenklatura w języku SQL stosowanych w ORACLE, SQL Server i w MySQL. ORACLE - tylko wielkie litery w nazwach, podkreśliniki między wyrazami, klucz główny nazywamy np. STUDENT_ID SQL Server - notacja Camel, początek każdego wyrazu wielka litera, klucz główny nazywamy np. StudentID MySQL - największa dowolność, zwykle małe litery i podkreślniki w nazwach, klucz główny np. student_id 34
Powtórka (2) 3. Do czego służy tzw. klucz główny PRIMARY KEY, jak jest on oznaczany w SQL Serverze? - dzięki zastosowaniu PRIMARY KEY możemy użyć wybranej kolumny jako unikatowego identyfikatora wiersza, - SQL Server pokazuje nam wtedy przy tej kolumnie kluczyk. 4. Najczęstsze typy danych dostępne w SQL Server. Jak oznaczana jest wartość 'pusta' (brak danych)? - np: int, varchar, char,float, real, decimal, - wartość pustą oznaczana jest: NULL. 35
Zapytanie SELECT - wstęp Zapytanie SELECT zawiera często elementy wymienione niżej. Prosimy bazę danych o informacje, mówiąc jej: 1. Które kolumny chcemy zobaczyć? 2. Z jakiej tabeli? 3. Które wiersze? 4. Czy pogrupować dane? 5. Posortujmy alfabetycznie! 36
Zapytanie SELECT - składnia 37
Zapytanie SELECT - składnia Polecenia języka SQL to SELECT, TOP, FROM, AS, GROUP BY, ORDER BY. Liczba to liczba naturalna dodatnia, czyli np. 1,100, 1000, 13422 itd. Kolumny należy podać jako listę kolumn, gdzie każda kolumna jest oddzielona przecinkiem, np.: Kolumna1, Kolumna2 Kulumna3. Tabela oznacza nazwę tabeli (lub kilku tabel), z których chcemy czytać dane. 38
Baza 'Test' - z tej bazy wybieramy informacje. Program 'Database Helper' 39
Zapytanie SELECT - lista kolumn. Przykład 0. - podobno prościej się nie da:) Wynik: Wynik Wyni k: 40
Zapytanie SELECT - lista kolumn. Przykład 1. - wybór jednej kolumny Wynik: 41
Zapytanie SELECT - lista kolumn. Przykład 2. - wybór kilku kolumn Wynik: 42
Zapytanie SELECT - lista kolumn. Przykład 3. - poglądowe ograniczenie wyników Wynik: 43
Zapytanie SELECT - lista kolumn. Przykład 5. - połączenie dwóch kolumn Pobieramy z tabeli Student kolumny LastName i FirstName. Dodatkowo pomiędzy nimi dodajemy ciąg znaków (string) ze spacją. Dzięki temu w wyniku mamy 1 kolumnę, zamiast 2. Jest to wygodne gdy w aplikacji wyświetlamy nazwisko i chcemy mieć je razem z imieniem w tabeli. Taka kolumna nie posiada nazwy (No column name; zob. niżej). Wynik: 44
Zapytanie SELECT - lista kolumn. Przykład 4. - nadajemy nazwę połączonej kolumnie Kolumna utworzona z połączenia dwóch kolumn ma teraz nową nazwę. Używamy do tego słowa kluczowego AS (od: 'alias') zaraz za taką kolumną i potem piszemy nową nazwę kolumny. Wynik: 45
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe Na liście kolumn można używać funkcji, które umożliwiają nam manipulację zawartością kolumny. Są to m.in. funkcje szczególnie przydatne w obróbce danych tekstowych w językowych bazach danych takie jak: LEN, LEFT, RIGHT, REVERSE, LOWER, UPPER, LTRIM, RTRIM, REPLACE, SUBSTRING, STUFF, FORMAT 46
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: LEN LEN - liczba znaków zawartości komórki. Wynik: 47
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: LEFT, RIGHT LEFT, RIGHT - zwraca określoną liczbę znaków licząc od lewej lub od prawej, czyli np. 3 pierwsze literki lub 3 ostatnie. Wynik: 48
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: REVERSE REVERSE - odwraca kolejność liter w tekście w komórce tabeli. - Pytanie: do czego może być przydatna ta funkcja? Wynik: 49
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: LOWER, UPPER Aby zapytanie zwróciło nam także nazwy kolumn, należy dodać alias, np. odpowiednio: AS Male i AS Duze Lower, Upper - zamieniają wszystkie litery w wyniku selekcji na małe albo na wielkie. Wynik: 50
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: LTRIM, RTRIM Wynik: 51
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: REPLACE Wynik: Wynik: 52
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: SUBSTRING Wynik: 53
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: STUFF Wynik: 54
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: FORMAT FORMAT Formatowanie liczb, dat, walut zależnie od zastosowania. 55
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: FORMAT FORMAT Formatowanie liczb, dat, walut zależnie od zastosowania. 56
Zapytanie SELECT - lista kolumn. KLOCKI LEGO :) Wynik: 57
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: CONVERT i CAST 58
Zapytanie SELECT - lista kolumn. Przykład 6. - funkcje tekstowe: CONVERT i CAST 59
Dziękuję za uwagę!