jakubszpil

Podstawy projektowania baz danych

📆
/
4 minuty czytania

Projektowanie bazy danych to sztuka zamieniania rzeczywistych problemów na logiczne, czytelne i wydajne struktury danych. Dobrze zaprojektowana baza ułatwia przechowywanie, wyszukiwanie i analizę informacji, a także minimalizuje błędy i powielanie danych.

>>Spis treści

  1. Czym jest projektowanie bazy danych?
  2. Modelowanie danych i diagramy ERD
  3. Podstawowe pojęcia: encja, atrybut, relacja
  4. Rodzaje relacji między tabelami
  5. Klucze główne i obce
  6. Normalizacja danych
  7. Typowe błędy projektowe
  8. Dobre praktyki projektowe
  9. Praktyczne zadania
  10. Podsumowanie

>>Czym jest projektowanie bazy danych?

Projektowanie bazy danych polega na przemyślanym zaplanowaniu, jakie informacje będą przechowywane, jak będą powiązane oraz jak zapewnić spójność i efektywność przechowywania danych. To proces analizy rzeczywistego problemu, wydzielenia kluczowych obiektów (encje), ich cech (atrybuty) i wzajemnych powiązań (relacje).


>>Modelowanie danych i diagramy ERD

Modelowanie danych to proces odwzorowania rzeczywistości na strukturę bazy. W praktyce używamy do tego diagramów ERD (Entity-Relationship Diagram), które graficznie przedstawiają encje oraz relacje między nimi.

>>>Przykład praktyczny: minidiagram ERD dla sklepu

Wyobraź sobie sklep internetowy.

[Klient] 1---N [Zamówienie] N---M [Produkt]

>>Podstawowe pojęcia: encja, atrybut, relacja

>>>Przykład encji z atrybutami

Encja: Klient
Atrybuty: id_klienta, imie, email, adres

Encja: Produkt
Atrybuty: id_produktu, nazwa, cena


>>Rodzaje relacji między tabelami

>>>Jeden do jednego (1:1)

Każdemu rekordowi z jednej tabeli odpowiada dokładnie jeden rekord z drugiej tabeli.

Przykład: Każdy użytkownik ma jeden profil.

Implementacja: najczęściej przez dzielenie rzadko używanych danych na osobną tabelę np.
Tabela Uzytkownik i tabela Profil powiązana polem id.

>>>Jeden do wielu (1:N)

Jeden rekord z pierwszej tabeli może być powiązany z wieloma rekordami z drugiej tabeli.

Przykład: Jeden klient może złożyć wiele zamówień.

Implementacja:
Tabela Klient (id)
Tabela Zamowienie (id, klient_id)

>>>Wiele do wielu (N:M)

Wiele rekordów z jednej tabeli może być powiązanych z wieloma rekordami z drugiej tabeli.
Przykład: Studenci zapisani na wiele kursów, kursy mają wielu studentów.

Implementacja:
Tabela pośrednicząca, np. Student_Kurs (student_id, kurs_id)

>>>>Przykłady relacji i ich implementacja

erDiagram
    KLIENT ||--o{ ZAMOWIENIE : składa
    ZAMOWIENIE }o--o{ PRODUKT : zawiera

>>Klucze główne i obce

>>>Przykład praktyczny: klucz główny i obcy

Tabela Klient

idimieemail
1Janjan@ex.com

Tabela Zamowienie

iddataklient_id
12025-07-051

Tutaj klient_id w Zamowienie to klucz obcy wskazujący na id w Klient.


>>Normalizacja danych

Normalizacja to proces podziału danych na tabele w taki sposób, aby:

>>>Pierwsza postać normalna (1NF)

Błąd:

idimietelefony
1Jan123456, 987654

Poprawnie:

idimietelefon
1Jan123456
1Jan987654

>>>Druga postać normalna (2NF)

Przykład błędu:
Tabela Zamowienie_Produkt (zamowienie_id, produkt_id, nazwa_produktu, cena)
Nazwa produktu zależy od produktu, nie od zamówienia!

Poprawnie:
Tabela Produkt (id, nazwa_produktu, cena)
Tabela Zamowienie_Produkt (zamowienie_id, produkt_id)

>>>Trzecia postać normalna (3NF)

Przykład błędu:
Tabela Klient (id, imie, kod_pocztowy, miasto) – miasto zależy od kodu pocztowego, nie od klienta.

Poprawnie:
Tabela Kod_Pocztowy (kod, miasto)
Tabela Klient (id, imie, kod_pocztowy)

>>>Przykład normalizacji krok po kroku

Masz tabelę:

idimieadresmiastonazwa_produktucena
1Janul. Kwiatowa 1KrakówLaptop3000
2Annaul. Polna 2WarszawaTelefon1000

Krok 1: Podziel na Klient i Produkt
Tabela Klient: (id, imie, adres, miasto)
Tabela Produkt: (id, nazwa_produktu, cena)
Tabela Zakup: (id_klienta, id_produktu)


>>Typowe błędy projektowe

>>>Przykłady błędów i ich skutki


>>Dobre praktyki projektowe

>>>Praktyczne wskazówki


>>Praktyczne zadania

>>>Zadanie 1: Identyfikacja encji i relacji

W sklepie internetowym mamy: Klienta, Zamówienie, Produkt. Zidentyfikuj encje, ich atrybuty i relacje.

Pokaż rozwiązanie

Encje:

  • Klient (id, imie, email)
  • Zamówienie (id, data, klient_id)
  • Produkt (id, nazwa, cena)

Relacje:

  • Klient składa Zamówienie (1:N)
  • Zamówienie obejmuje Produkty (N:M, przez tabelę pośredniczącą)

>>>Zadanie 2: Diagram ERD

Narysuj (lub opisz tekstowo) diagram ERD dla powyższego sklepu.

Pokaż rozwiązanie
[Klient] 1---N [Zamówienie] N---M [Produkt]

Tabele:

  • Klient (id, imie, email)
  • Zamówienie (id, data, klient_id)
  • Produkt (id, nazwa, cena)
  • Zamowienie_Produkt (zamowienie_id, produkt_id, ilosc)

>>>Zadanie 3: Normalizacja

Masz tabelę:

idimieadresmiastonazwa_produktucena
1Janul. Kwiatowa 1KrakówLaptop3000
2Annaul. Polna 2WarszawaTelefon1000

Podziel ją na znormalizowane tabele.

Pokaż rozwiązanie

Tabela Klient: (id, imie, adres, miasto)
Tabela Produkt: (id, nazwa_produktu, cena)
Tabela Zakup: (id_klienta, id_produktu)


>>>Zadanie 4: Rodzaje relacji

Opisz, czym różni się relacja jeden-do-wielu od wiele-do-wielu i podaj przykład.

Pokaż rozwiązanie

Jeden-do-wielu: jeden klient może mieć wiele zamówień, ale każde zamówienie należy do jednego klienta.
Wiele-do-wielu: jeden student może być zapisany na wiele kursów i jeden kurs może mieć wielu studentów.


>>>Zadanie 5: Przykład złego i dobrego projektu

Podaj przykład tabeli z powielaniem danych oraz jej poprawnej wersji po normalizacji.

Pokaż rozwiązanie

Zły projekt:

idimieprodukt1produkt2produkt3
1JanLaptopTelefonTablet

Dobry projekt:

Tabela Klient: (id, imie)
Tabela Produkt: (id, nazwa)
Tabela Klient_Produkt: (id_klienta, id_produktu)

Wyjaśnienie:
Zamiast wielu kolumn dla produktów, każda relacja klient-produkt to osobny rekord w tabeli pośredniczącej.


>>Podsumowanie

Projektowanie bazy danych to kluczowy etap w każdym projekcie IT opartym o dane. Przemyślana struktura, normalizacja i dobre praktyki zapewnią łatwość rozwoju, wydajność i bezpieczeństwo systemu. Analiza, przykłady i praktyczne zadania pomagają zrozumieć, jakie decyzje podjąć, by Twoja baza była solidna i przyszłościowa!

Quiz: Podstawy projektowania baz danych

Pytanie 1 z 5

Czym jest modelowanie danych?

Widzisz jakiś błąd, bądź literówkę? Chcesz coś poprawić?✏️ Przejdź do edycji tego pliku