Technikum Klasa I 45 minut PP: II.3d | s. 344

Lekcja 43: Bazy danych - pojecia, tworzenie tabel, relacje

Tabele, rekordy, pola, klucze, relacje, normalizacja

📋 Podstawa programowa: II.3d
bazy danychklucz glownyklucz obcyrelacjetabele
00:00
Wprowadzenie
5 min
00:05
Teoria
15 min
00:20
Cwiczenia
15 min
00:35
Podsumowanie
10 min
📚

Teoria

Czym jest baza danych?

Baza danych to zorganizowany zbior danych przechowywany w sposob umozliwiajacy latwe wyszukiwanie, dodawanie, modyfikowanie i usuwanie informacji. Bazy danych sa fundamentem wspolczesnych systemow informatycznych - kazdego dnia korzystamy z nich np. logujac sie do serwisow internetowych, robiaz zakupy online czy przegladajac media spolecznosciowe.

System Zarzadzania Baza Danych (SZBD / DBMS) to oprogramowanie do zarzadzania baza danych, np. Microsoft Access, MySQL, PostgreSQL, SQLite, Oracle.

Podstawowe pojecia

  • Tabela (Table) - podstawowa struktura przechowywania danych. Odpowiada jednemu typowi obiektow, np. tabela "Uczniowie", tabela "Oceny", tabela "Przedmioty".
  • Rekord (Row/Record) - jeden wiersz w tabeli, reprezentujacy pojedynczy obiekt, np. jeden uczen, jedna ocena.
  • Pole (Column/Field) - jedna kolumna w tabeli, opisujaca konkretna ceche obiektu, np. Imie, Nazwisko, DataUrodzenia.
  • Klucz glowny (Primary Key - PK) - pole (lub zestaw pol) jednoznacznie identyfikujace kazdy rekord. Musi byc unikalny i niepusty. Np. ID ucznia, PESEL, numer katalogowy.
  • Klucz obcy (Foreign Key - FK) - pole w jednej tabeli, ktore odwoluje sie do klucza glownego innej tabeli. Tworzy polaczenie (relacje) miedzy tabelami.
  • Typ danych - okresla rodzaj wartosci w polu: tekst (VARCHAR), liczba calkowita (INT), liczba zmiennoprzecinkowa (FLOAT), data (DATE), logiczny (BOOLEAN).
Przyklad tabeli "Uczniowie":
Klucz glowny: ID_ucznia (INT, autonumerowanie)
Pola: Imie (VARCHAR 50), Nazwisko (VARCHAR 50), DataUrodzenia (DATE), Klasa (VARCHAR 10), Email (VARCHAR 100)

Relacyjna baza danych

W relacyjnej bazie danych dane sa przechowywane w wielu powiazanych tabelach zamiast w jednej ogromnej tabeli. Dzieki temu unikamy powtarzania danych (redundancji) i zapewniamy spojnosc informacji.

Przyklad: zamiast wpisywac nazwe klasy i wychowawce przy kazdym uczniu, tworzymy osobna tabele "Klasy" i laczymy ja z tabela "Uczniowie" za pomoca klucza obcego.

Typy relacji

  • Jeden do jednego (1:1) - jeden rekord w tabeli A odpowiada dokladnie jednemu rekordowi w tabeli B. Przyklad: Uczen - DowodOsobisty (kazdy uczen ma dokladnie jeden dowod).
  • Jeden do wielu (1:N) - jeden rekord w tabeli A moze miec wiele odpowiadajacych rekordow w tabeli B. Najczestszy typ relacji! Przyklad: Klasa - Uczniowie (jedna klasa ma wielu uczniow, ale kazdy uczen nalezy do jednej klasy).
  • Wiele do wielu (N:M) - wiele rekordow w tabeli A moze odpowiadac wielu rekordom w tabeli B. Wymaga tabeli posredniej (laczacej). Przyklad: Uczniowie - Przedmioty (uczen chodzi na wiele przedmiotow, przedmiot ma wielu uczniow).

Realizacja relacji N:M:

TabelaPolaRola
UczniowieID_ucznia (PK), Imie, NazwiskoTabela glowna
PrzedmiotyID_przedmiotu (PK), NazwaTabela glowna
Uczen_PrzedmiotID_ucznia (FK), ID_przedmiotu (FK)Tabela posrednia

Tworzenie tabel w MS Access

  • Widok projektu - definiujesz nazwy pol, typy danych, wlasciwosci (rozmiar, wymagane, indeksowane)
  • Ustawianie klucza glownego - zaznacz pole > Projekt > Klucz glowny
  • Autonumerowanie - typ "Autonumerowanie" automatycznie nadaje kolejne numery
  • Maska wprowadzania - wymusza format danych (np. kod pocztowy: 00-000)
  • Regula sprawdzania - warunek poprawnosci danych (np. Wiek > 0)

Definiowanie relacji

W MS Access: Narzedzia bazy danych > Relacje:

  • Dodaj tabele do okna relacji
  • Przeciagnij klucz glowny z jednej tabeli na klucz obcy w drugiej
  • Zaznacz "Wymuszaj integralnosc referencyjna" - zapobiega tworzeniu "osieroconych" rekordow
  • Opcjonalnie: kaskadowa aktualizacja i kaskadowe usuwanie
Normalizacja to proces organizowania danych w bazie, aby zminimalizowac powtarzanie i zapewnic spojnosc. Podstawowe zasady: (1) kazde pole przechowuje jedna wartosc (1NF), (2) kazde pole nie-kluczowe zalezy od calego klucza (2NF), (3) pola nie-kluczowe nie zaleza od siebie nawzajem (3NF).
✏️

Zadania

Latwe

Zadanie 1: Projektowanie schematu bazy danych

Zaprojektuj schemat bazy danych dla szkolnej biblioteki. Zidentyfikuj potrzebne tabele, pola, typy danych i klucze. Biblioteka przechowuje informacje o: ksiazkach, autorach, czytelnikach (uczniach) i wypozyczeniach. Narysuj schemat na kartce lub w programie graficznym.

Pokaz rozwiazanie
Tabela: Ksiazki
  ID_ksiazki (PK, INT, Autonumer)
  Tytul (VARCHAR 200)
  ISBN (VARCHAR 13)
  RokWydania (INT)
  ID_autora (FK -> Autorzy)
  Gatunek (VARCHAR 50)
  LiczbaEgzemplarzy (INT)

Tabela: Autorzy
  ID_autora (PK, INT, Autonumer)
  Imie (VARCHAR 50)
  Nazwisko (VARCHAR 50)
  KrajPochodzenia (VARCHAR 50)

Tabela: Czytelnicy
  ID_czytelnika (PK, INT, Autonumer)
  Imie (VARCHAR 50)
  Nazwisko (VARCHAR 50)
  Klasa (VARCHAR 10)
  Email (VARCHAR 100)

Tabela: Wypozyczenia
  ID_wypozyczenia (PK, INT, Autonumer)
  ID_ksiazki (FK -> Ksiazki)
  ID_czytelnika (FK -> Czytelnicy)
  DataWypozyczenia (DATE)
  DataZwrotu (DATE, moze byc pusta)

Relacje:
  Autorzy 1:N Ksiazki (autor ma wiele ksiazek)
  Ksiazki 1:N Wypozyczenia
  Czytelnicy 1:N Wypozyczenia
  (Ksiazki N:M Czytelnicy - przez Wypozyczenia)
Srednie

Zadanie 2: Tworzenie tabel w Access

W MS Access (lub LibreOffice Base) utworz baze danych "Sklep" z tabelami: Produkty (ID, Nazwa, Cena, Kategoria, IloscNaStanie), Klienci (ID, Imie, Nazwisko, Miasto, Telefon), Zamowienia (ID, ID_klienta, DataZamowienia, Status). Ustaw klucze glowne, typy danych i relacje 1:N miedzy Klienci a Zamowienia.

Pokaz rozwiazanie
1. Nowa baza danych: Plik > Nowa > Pusta baza
   Nazwa: Sklep.accdb

2. Tabela Produkty (Widok projektu):
   ID_produktu - Autonumerowanie (PK)
   Nazwa - Krotki tekst (100)
   Cena - Walutowy
   Kategoria - Krotki tekst (50)
   IloscNaStanie - Liczba (calkowita)
   Regula Cena: >0 (cena musi byc dodatnia)
   Regula Ilosc: >=0

3. Tabela Klienci (Widok projektu):
   ID_klienta - Autonumerowanie (PK)
   Imie - Krotki tekst (50), Wymagane: Tak
   Nazwisko - Krotki tekst (50), Wymagane: Tak
   Miasto - Krotki tekst (50)
   Telefon - Krotki tekst (15)
   Maska Telefon: 000-000-000

4. Tabela Zamowienia (Widok projektu):
   ID_zamowienia - Autonumerowanie (PK)
   ID_klienta - Liczba (FK -> Klienci)
   DataZamowienia - Data/Godzina
   Status - Krotki tekst (20)

5. Relacje:
   Narzedzia bazy danych > Relacje
   - Dodaj 3 tabele
   - Przeciagnij Klienci.ID_klienta na
     Zamowienia.ID_klienta
   - Zaznacz: Wymuszaj integralnosc referencyjna
   - Typ relacji: 1:N (jeden klient, wiele zamowien)
   - OK
Trudne

Zadanie 3: Relacja N:M z tabela posrednia

Rozszerz baze "Sklep" o relacje wiele-do-wielu miedzy Zamowieniami a Produktami (jedno zamowienie moze zawierac wiele produktow, jeden produkt moze byc w wielu zamowieniach). Utworz tabele posrednia "PozycjeZamowienia" z polami: ID, ID_zamowienia (FK), ID_produktu (FK), Ilosc, CenaJednostkowa. Zdefiniuj wszystkie relacje.

Pokaz rozwiazanie
1. Tabela PozycjeZamowienia (Widok projektu):
   ID_pozycji - Autonumerowanie (PK)
   ID_zamowienia - Liczba (FK -> Zamowienia)
   ID_produktu - Liczba (FK -> Produkty)
   Ilosc - Liczba (calkowita), Regula: >0
   CenaJednostkowa - Walutowy

2. Relacje (Narzedzia > Relacje):
   a) Zamowienia.ID_zamowienia ->
      PozycjeZamowienia.ID_zamowienia
      Typ: 1:N, Integralnosc: Tak
      (jedno zamowienie ma wiele pozycji)

   b) Produkty.ID_produktu ->
      PozycjeZamowienia.ID_produktu
      Typ: 1:N, Integralnosc: Tak
      (jeden produkt w wielu pozycjach)

   Efekt: Zamowienia N:M Produkty
   (przez tabele posrednia PozycjeZamowienia)

3. Schemat relacji:
   Klienci -1:N-> Zamowienia -1:N-> PozycjeZamowienia
                                         <-N:1-
                                    Produkty

4. Dodaj przykladowe dane:
   - 5 produktow, 3 klientow
   - 4 zamowienia (rozni klienci)
   - 10 pozycji zamowien (rozne produkty
     w roznych zamowieniach)

5. Sprawdz integralnosc:
   - Sprobuj dodac pozycje z nieistniejacym
     ID_zamowienia -> blad integralnosci!
   - Sprobuj usunac produkt uzywany w zamowieniu
     -> blad (bo wymuszamy integralnosc)
🎥

Materialy wideo

Access - tworzenie tabel i typy danych
paulinapat96
Bazy danych w szkole - wprowadzenie. Lekcja Informatyki z Microsoft Access. Kurs baz danych.
Zygmunt Pilarek o Edukacji
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 42: Tabele i wykresy przestawne Lekcja 44: Bazy danych - kwerendy →