Notatki z nauki SQL część 1 – podstawowe zagadnienia


Wpis ten rozpoczyna serię kilu postów, które są moimi troszkę wygładzonymi notatkami z nauki SQL. Spora część to wynik pracy z  książką “Ćwiczenia praktyczne. SQL” – Pana śp. Marcina Lisa. Wszystkie przykłady oraz treści dotyczą serwera PostgreSql oraz jego klienta psql. Nie jest to w żadnym razie opracowanie mające uczyć innych SQL – po prostu ja mam notatki online, a może komuś się też przydadzą. Coś się nie zgadza, to napisz.

Podstawowe zagadnienia

Tabela (relacja) – składa się z wierszy i kolumn. Relacyjne bazy danych składają się z tabel, które posiadają relacje, tj. logiczne więzi pomiędzy sobą. Tabela w ujęciu matematycznym jest podzbiorem iloczynu kartezjańskiego , ten natomiast w matematyce zwany jest relacją, stąd też tabele nazywane są również relacjami.

Twórca relacyjnego modelu danychEdgar Frank Codd –  używał określenia  relacji zamiast tabeli,  atrybutu zamiast kolumny, oraz krotki zamiast wiersza/rekordu.

PRIMARY KEY –  klucz główny tabeli – podstawa tworzenia logicznych powiązań pomiędzy tabelami. Wartości kolumny, która posiada ten atrybut muszą być unikalne i niepuste.

Relacja między tabelami – żeby logicznie powiązać ze sobą dwie tabele, wprowadza się do jednej z nich klucz główny drugiej – zwykle jest to kolumna z nr id. Przykładowo jeżeli będą tabele zamówienia i klienci, to wprowadza się kolumnę z atrybutem PRIMARY KEY tabeli klienci do tabeli zamówienia.

Encja (entity) =  klasa(atrybuty, metody) = tabela
Instancja encji = obiekt =  konkretny rekord/wiersz tabeli

Typy relacji

  • Jeden do jednego – wiersz z tabeli X do wiersza z tabeli Y. Jeden pesel do jednego nazwiska i odwrotnie.
  • jeden do wielu – jeden wiersz tabeli X do wielu wierszy z tabeli Y. Jeden klient może złożyć wiele zamówień ale każde zamówienie odnosi się tylko do jednego klienta.
  • wiele do wielu – Kiedy wielu elementom jednej tabeli odpowiada jeden lub więcej elementów drugiej tabeli.  W praktyce definiuje się ją jako dwie relacje jeden do wielu:  jeden wiersz z tabeli X do wielu wierszy z tabeli Y, oraz jeden wiersz z tabeli Y do wielu wierszy w tabeli X.

    Przykład
    :
    Książka może posiadać jednego lub wielu autorów, oraz wiele autorów mogło napisać razem książkę lub wiele książek.W tej relacji stosuje się trzecią tabelę (tabela skrzyżowań), która zawiera klucze główne tabeli X i Y złożony klucz podstawowy. W praktyce były by to nr id tabeli autorzy i książki, np. ksiazka_id |  autor_id.

Kilka Ogólnych zasad

  • Tabela zawsze musi mieć dobrze określony klucz główny, aby jednoznacznie móc identyfikować każdy jej wiersz/rekord.
  • Nie duplikuj wartości w tabelach, np. ten sam adres wydawnictwa i różne książki. Jeśli zdarzy się utworzyć taką tabelę, to trzeba ją rozbić na dwie, a w razie potrzeby na więcej powiązanych ze sobą tabel.
  • Twórz w miarę możliwości informacje atomowe (niepodzielne), np. adres rozbijaj na miasto, ulicę, kod. Przykład z wypożyczaniem książek:
    Źle:

    klient Id | książkaId
    1         | 1, 2, 3

    Dobrze:

    klient Id | książkaId
    1         | 1
    1         | 2
    1         | 3
  • Unikaj pustych pól w bazie. W przypadku gdy są to przykładowo adresy zameldowania, to czasem ktoś takiego nie posiada i może być OK – jest to też jakaś informacja. W przypadku gdy taka kolumna miała by jednak dużo takich pól, trzeba zrobić osobną tabelę. Przykładowo gdyby istniała kolumna zawierająca uwagi do zakupu, które rzadko by się pojawiały.
  • Zastanów się dobrze i określ cel jaki chcesz osiągnąć tworząc bazę, zanim tabele wypełnią się rekordami.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *