W tym kursie postaram się opisać podstawy bazy danych. Opiszę podstawowe definicje oraz przedstawię przykład prostej bazy danych. Jeżeli trafiłeś na ten kurs to zapewne jesteś początkującym w bazach danych i sql. W tym kursie pokażę definicje kluczowych i podstawowych elementów bazy danych, opiszę czym jest:
- Tabela
- Kolumna
- Rekord
- Relacja
- Klucz główny
- Klucz obcy
Wszystko pokażę na konkretnym przykładzie podstawowej bazy danych. W kolejnych kursach bazę tą będziemy wykorzystywać i rozszerzać o nowe elementy.
Ten kurs jest częścią cyklu Kurs SQL
Zapisz się na autorskie Szkolenie SQL
Definicje i podstawy
Najważniejszym zadaniem baz danych jest przechowywanie danych. Dane te są przechowywane w podstawowej strukturze jaką jest tabela (ang. table lub ang. relation). Tabela to miejsce, w którym przechowywane są wszystkie dane, bez tabel nie byłoby zbyt dużego zastosowania dla relacyjnych baz danych. Tabela składa się z kolumn(atrybutów) które definiują jakie dane będą przechowywane. Natomiast same dane przechowywane są w wierszach(rekordy lub krotki). Co jest czym pokazuje poniższy schemat:
Baza Danych – Przykład
Aby lepie wyobrazić sobie co jest czym i jak jest ze sobą powiązane spróbujmy zaprojektować bazę danych dla realnego przykładu. Jako, że lubię pizzę pomyślałem o bazie danych dla pizzerii.
Nie zastanawiając się zbytnio baza danych pizzerii powinna przechowywać dane:
- Klientów którzy mają atrybuty:
- Imię
- Nazwisko
- Pizza:
- Nazwa
- Rozmiar
- Cena
- Zamówienia:
- Data zamówienia
- Adres
Przykład
Spróbujemy więc w pierwszej kolejności zaprojektować tabele excelową która przechowywać będzie wszystkie te informacje. Ja ją sobie wymyśliłem tak jak na poniższym obrazku oraz wpisałem przykładowe dane żeby móc lepiej ją sobie wyobrazić:
Tak jak w excelu tak i w bazie danych to co widzimy powyżej to tabela w której przechowywane są zorganizowane dane. Dane poukładane są zgodnie z ich kategoryzacją czyli kolumną oraz zgrupowane są w wiersze.
Baza Danych – Relacje
Idąc dalej gdy popatrzymy na przykładową tabelę wydaje się, że zawiera ona wszystkie niezbędne dane jednak w pewnych momentach może być ona problematyczna. Rozważmy przykład: Co by się stało gdyby Pani o Anna Zaradna zmieniła nazwisko na Zaradna-Nowak? W tej sytuacji musielibyśmy znaleźć wszystkie Anny Zaradne i zmienić im wartość na Zaradna-Nowak. Zgodnie z powyższą definicją tabeli musielibyśmy zmienić cztery rekordy. Podzielmy więc naszą tabelę tak aby każda osoba była innym wpisem w osobnej tabeli:
Na powyższym schemacie mamy już wydzieloną sekcję dotyczącą klienta. Jednak w tym momencie nie wiemy którą pizzę oraz które zamówienie dotyczy którego klienta. Dlatego też musimy wprowadzić identyfikatory dzięki którym będziemy mogli skojarzyć obie tabele ze sobą. Jeden identyfikator ID w tabeli z klientami oraz ID_KLIENTA w tabeli zamówień i pizzy jak poniżej:
Na powyższym przykładzie widzimy dodanie obu kolumn dzięki który możemy stwierdzić kto dokonał zamówienia. W tym momencie chciałbym wytłumaczyć trzy bardzo ważne pojęcia w relacyjnych bazach danych:
- Klucz główny (ang. Primary Key) – to kolumna (czasami kilka kolumn) która w jednoznaczny sposób definiuje każdy wiersz danej tabeli. Klucz główny musi zawierać wartości unikalne i nie może zawierać wartości pustych(null). W przykładzie pizzerii kluczem głównym jest kolumna ID w tabeli Klienci. Często wykorzystywanym skrótem Primary Key jest “PK“.
- Klucz obcy (ang. Foreign Key) – to kolumna (czasami kilka kolumn) która pokazuje powiązanie do innej tabeli. Klucz obcy wskazuje na klucz główny innej tabeli. W przykładzie kluczem obcym jest ID_KLIENTA w tabeli zamówienia ponieważ wskazuje bezpośrednio na kolumnę ID tabeli Klient. Często wykorzystywanym skrótem Foreign Key jest “FK“.
- Powiązanie (ang. Relationship) – to powiązanie między dwiema tabelami relacyjnych baz danych, gdy jedna tabela ma klucz obcy, który odwołuje się do klucza podstawowego drugiej tabeli. Powiązania pozwalają relacyjnym bazom danych dzielić i przechowywać dane w różnych tabelach, jednocześnie łącząc różne elementy danych.
Istnieje kilka podstawowych typów relacji/powiązań:
- Relacja jeden do jednego — Oznacza to, że dla jednego rekordu z tabeli A występuje jeden rekord w tabeli B.
- Relacja jeden do wielu — Oznacza, że dla jednego rekordu z tabeli A występuje wiele rekordów z tabeli B
- Relacja wiele do wielu — Oznacza, że dla wielu rekordów z tabeli A może występować wiele rekordów z tabeli B. Takie połączenie wymaga dodatkowej tabeli która pozwoli na takie połączenie.
Bazy danych – Ciekawostka
Gdy mówimy o bazach danych często mylimy pojęcia powiązania (ang. relationship) i relacji (ang. relation). Relacja (ang. relation) to tak naprawdę synonim tabeli natomiast powiązanie (ang. relationship) to powiązanie między dwiema tabelami. Jest to jednak tak popularny błąd bądź może lapsus, że chyba nigdy nie usłyszałem słowa relacji w kontekście samej tabeli a zawsze w kontekście “relacji” pomiędzy różnymi tabelami. Sama wikipedia gdy czytamy o powiązaniach wykorzystuje słowo “relacja”. W związku z tym będąc świadomym czym jest relacja dla większości osób będę wykorzystywał pojęcie relacji jako powiązania między tabelami ponieważ stał się on w zasadzie jej tłumaczeniem 🙂