Wprowadzenie
Bazy danych są narzędziem do usystymatyzowanego zbierania i zarządzania informacjami. Przechowują one dowolne dane np. informacje o zamówieniach, ocenach, kursach itd. Najprostszą bazą danych może być zapisana lista na kartce papieru, dokumencie tekstowym czy w arkuszu kalkukacyjnym. Kiedy ilość zapisanych informacji wzrasta, rosną takie ryzyka jak: niespójnoścość danych czy problem z zarządzeniem i czytaniem informacji. By obniżyć te ryzyka, w systemach informatycznych wykorzystuje się tzw. DBMS (Database Managment System), czyli oprogramowanie, które umożliwia użytkownikom definiowanie, tworzenie, utrzymywanie i kontrolę dostępu do bazy danych. Systemy DBMS można podzielić na dwa typy: relacyjny (SQL) oraz nierelacyjne (NoSQL). W ramach prowadzonego przedmiotu (tak jak wzkazuje jego nazwa), omówiony zostanie typ relacyjny.
Systemy relacyjne, organizują dane w wierszach i kolumnach szeregu tabel o ściśle określonej strukturze. Rdzeniem tych systemów jest strukturalny język zapytań - SQL (Structured Query Language). Relacyjne bazy danych cechują się wysoką wydajnością zapisu oraz odczytu, pod warunkiem dobrego zamodelowania struktury danych, zapytań SQL, skalowalności czy poprzez nałożenie tzw. indeksów. Na dzisiejszych laboratoriach nauczymy się poprawnego projektowania oraz modelowania struktury danych.
Terminologia
- Encja - jest to niezależna rzecz, miejsce czy obiekt. Przykładem encji może być informacja o książce (autor, tytuł, wydawnictwo)
- Tabela - nadają strukturę bazie danych. Składają się z krotek oraz atrybutów. Są one zbiorem encji. Atrybuty w tabeli określają nazwę danego pola oraz jego typ danych. Każda krotka powinna posiadać swój unikalny identyfikator czyli tzw. klucz główny. Tabele mogą posiadać również tzw. klucze obce, czyli informacje o relacji pomiędzy encją przeglądanej tabeli z identyfikatorem encji z innej tabeli.
- Krotka - wiersz/rekord w tabeli
- Atrybut - kolumna w tabeli
- Klucz główny (PK - Primary Key) - unikalny identyfikator każdej encji
- Klucz obcy (FK - Foreign Key) - identyfikator encji z innej tabeli z którą encja przeglądanej tabeli posiada relacje
- SQL - strukturalny, deklarytywny język zapytań. Służy on np. do wyszukiwania encji o danych parametrach w tabeli. Pomiędzy różnymi systemami DBMS, mogą występować małe różnice w języku
- DBMS - oprogramowanie, które umożliwia użytkownikom definiowanie, tworzenie, utrzymywanie i kontrolę dostępu do bazy danych. Systemami DBMS są np. PostgreSQL, MySQL, Microsoft SQL Server czy Oracle
Projektowanie oraz modelowanie bazy danych czyli diagram związków encji (ERD)
Diagramy związków encji, są rodzajem graficznego przedstawienia związku pomiędzy danymi encjami w projektowaniu systemów informatycznych. Diagramy ERD są podstawą formą dokumentacji struktury danych systemu bazodanowego.
Zasady projektowania
- Minimalizacja danych - należy rozumieć jako unikanie przechowywania niepotrzebnych danych
- Unikanie redundancji - należy unikać powielania tych samych danych i struktur danych w różnych tabelach
- Unikalne encje - każda encja powinna być niepowtarzalna i łączyć się z innymi encjami poprzez wykorzystanie kluczów obcych
- Dobrze zamodelowane encje - atrybuty każdej encji (kolumny) powinny mieć dobrany odpowiedni typ danych np. przechowane liczby powinny być typem numerycznym
- Umożliwienie dalszego rozwoju - struktura bazy danych powinna być otwarta na dalsze modyfikacje
- Podział na jak najmniejsze jednostki logiczne - nie powinno sie przechowywać w jednej kolumnie kilku informacji. Najpopularniejszym przykładem jest pole adresowe. Zamiast przechowywania w jednej kolumnie wszystkich informacji adresowych, powinniśmy rozbić dane na osobne pole jak np. ulica, miasto czy kraj
Modelowanie
Modelowanie bazy danych jest kluczowym rozwiązaniem do stworzenia kompleksowej bazy danych. Dzięki temu procesowi jesteśmy w stanie zminimalizować do zera ryzyko redundancji, zmniejsza wymagania dotyczące przechowywania (zwłaszcza kosztowe!) oraz umożliwia chociażby wydajne wyszukiwanie.
Przykładem diagramu ERD dla bazy danych wynajmu mieszkań:
Na dzisiejszych zajęciach wykorzystamy platformę draw.io. Aby przejść do modelowania diagramu ERD, należy wybrać przechowywanie na dysku, kliknąć przycisk “Create New Diagram” oraz z okna dialogowego wybrać opcję “Entity Relationship Diagram” z listy “Basic”. Po zapisaniu pliku na dysku, wyświetli nam się narzędzie do modelowania.
Zadania
Zadanie 1
Spójrz na poniższy diagram. Dlaczego poniższy diagram łamie zasady projektowania? Co należałoby w nim poprawić?
Zadanie 2
Na platformie Github utwórz na swoim koncie publiczne repozytorium pod nazwą: rbd_lab_tasks. Do repozytorium dodaj folder o nazwie lab01.
Zadanie 3
Dobierzcie się w zespoły. Za pomocą platformy draw.io zaprojektujcie diagram ERD w kontekście bazy danych dziekanatu/uczelni. Diagram powinien spełniać zasady projektowania oraz mieć zdefiniowane typy dla argumentów.
O to przykład typów, które powinniście wykorzystać:
- PK - klucz główny, powinien być zdefiniowany jako INT
- INT - integer, liczba całkowita
- VARCHAR(50) - ciąg znaków o długości wynoszącej 50
- DATETIME - data
- DOUBLE - liczba zmiennoprzecinkowa
- BOOL - logiczny typ danych - prawda/fałsz
Powstały diagram opublikuj w folderze lab01, w repozytorium, które stworzyłeś w poprzednim zadaniu. Powinny one zostać zapisane jako plik HTML.