Wstęp do relacyjnych baz danych Jan Bartoszek
Agenda 1. 2. 3. 4. 5. 6. 7. Po co i dlaczego? Bazy danych & DBMS Relacje i powiązania Redundancja i jak jej uniknąć Diagramy ERD SQL Podsumowanie
Czym są są bazy danych? Sensu largo: zbiór danych połączonych określoną regułą Sensu stricto: zbiór danych zapisanych cyfrowo, gromadzonych zgodnie z zasadami przyjętymi dla danego systemu komputerowego
Systemy zarządzania bazami danych (DBMS) *5 najpopularniejszych systemów DBMS: https://db-engines.com/en/ranking
Relacyjne bazy danych Bazy danych, w których dane zorganizowane są w relacje Relacja - pojęcie z zakresu matematyki, oznaczające dowolny podzbiór iloczynu kartezjańskiego skończonej liczby zbiorów Intuicyjnie łatwe do zobrazowania w formie tabeli
Baza danych - sklep płytowy
Baza danych - sklep płytowy
Baza danych - sklep płytowy Klucz podstawowy (Primary key)
Baza danych - sklep płytowy
Baza danych - sklep płytowy
Baza danych - sklep płytowy RED U NDA NCJ A...
Redundancja Zjawisko nadmiarowości danych Prowadzi do niepotrzebnego zwiększenia rozmiarów bazy Może prowadzić do zaburzenia spójności danych (insert, delete, update anomalies) Eliminowana w procesie normalizacji
Entity-Relationship Diagram (ERD) Diagram przedstawiający graficzną reprezentację zależności zachodzących między tabelami Używany w procesie projektowania architektury baz danych Występuje w kilku rodzajach notacji (Crow's Foot, UML, Chen)
Baza danych - sklep płytowy 2.0 Klucz obcy (Foreign key)
Baza danych - sklep płytowy 2.0
Baza danych - sklep płytowy 2.0 *Grafika: https://www.lucidchart.com/pages/er-diagram-symbols-and-meaning#top-info
Structured Query Language (SQL) Język wykorzystywany w komunikacji z bazami danych Używany przez zdecydowaną większość DBMS Podstawową jednostką operacyjną jest zapytanie (kwerenda) Pozwala na tworzenie baz danych, tabel, użytkowników, nadawanie im uprawnień i dostępów. Z jego pomocą można również dokonywać operacji na tabelach: pobierać, wstawiać, modyfikować i usuwać dane
Zapytanie SELECT Pobierz dane Skąd? Z jakiej tabeli? (może być kilka) SELECT * FROM table; jakie? (gwiazdka oznacza wszystko, mogą być wskazane kolumny)
SELECT * FROM produkt;
SELECT * FROM produkt WHERE cena < 99;
SELECT * FROM produkt WHERE cena < 99; AND wykonawca = James Brown ;
SELECT * FROM produkt WHERE cena BETWEEN 70 AND 99 ORDER BY cena DESC;
SELECT zamówienie_detal.zamówienie_id, zamówienie_detal.id AS detal_id, produkt.wykonawca, produkt.album FROM zamówienie_detal JOIN produkt ON zamówienie_detal.produkt_id = produkt.id WHERE zamówienie_id = 3; Łączone tabele Kolumny do wyświetlenia Łączone tabele Wskazanie referencji Dodatkowy warunek
SELECT zamówienie_detal.zamówienie_id, zamówienie_detal.id AS detal_id, produkt.wykonawca, produkt.album FROM zamówienie_detal JOIN produkt ON zamówienie_detal.produkt_id = produkt.id WHERE zamówienie_id = 3;
Wprowadzanie, usuwanie i modyfikacja danych INSERT INTO table (column1, column2...) VALUES (value1, value2...); DELETE FROM table WHERE ; UPDATE table SET column1 = value1, column2 = value2 WHERE... ;
Co dają nam relacyjne bazy danych? Niski margines błędu Spójną strukturę Możliwość operowania na danych przez wiele osób naraz Ograniczenie rozmiaru bazy Szybkość i łatwość modyfikacji Bezpieczeństwo
Materiały Ogólnie o bazach danych: https://www.youtube.com/watch?v=99jai24zd24&t=2960s O normalizacji : Pasja Informatyki: Studytonight https://www.youtube.com/watch?v=xotyrdt9szi&list=pllglmw7jt-ntr1ory9o2mgsommx2w8fb3 O diagramach ERD: Lucidchart https://www.youtube.com/watch?v=qpdhbuyk7kk
Materiały O SQL W3Schools https://www.w3schools.com/sql/default.asp SQLZoo (ćwiczenia) http://sqlzoo.net/ O różnicach między PostgreSQL a MongoDB: Lorenz Stadler https://www.youtube.com/watch?time_continue=472&v=em7hzkwvtq8
Dziękuję Jan Bartoszek bartoszek.jan@gmail.com