Tabele, rekordy, pola, klucze, relacje, normalizacja
ð Podstawa programowa: II.3dBaza 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.
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.
| Tabela | Pola | Rola |
|---|---|---|
| Uczniowie | ID_ucznia (PK), Imie, Nazwisko | Tabela glowna |
| Przedmioty | ID_przedmiotu (PK), Nazwa | Tabela glowna |
| Uczen_Przedmiot | ID_ucznia (FK), ID_przedmiotu (FK) | Tabela posrednia |
W MS Access: Narzedzia bazy danych > Relacje:
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.
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)
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.
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
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.
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)