Od pliku do bazy danych

🧠 Cele wykładu

  • poznanie podstawowych pojęć: dane, informacja, baza danych, DBMS,
  • zrozumienie różnicy między systemem plikowym a bazą danych,
  • poznanie architektury systemu baz danych (ANSI/SPARC),
  • wprowadzenie do modelu relacyjnego i idei organizacji danych w tabelach.

1️⃣ Dane, informacja, baza danych

🔹 Dane

Zacznijmy od podstawowego pytania: czym właściwie są dane?

Dane to surowe fakty, liczby, teksty, symbole — same w sobie nie mają jeszcze znaczenia.

Przykład: 12345, Jan Kowalski, Bazy danych.

🔹 Informacja

To dane zinterpretowane w kontekście.

Przykład:

„12345” to numer indeksu studenta Jana Kowalskiego zapisującego się na kurs Bazy danych.

Czy można mieć dużo danych i żadnej wiedzy? Jakie są przykłady z życia codziennego?

🔹 Baza danych (ang. Database)

To uporządkowany zbiór danych, przechowywany w sposób umożliwiający łatwe wyszukiwanie, aktualizację i kontrolę spójności.

🔹 System zarządzania bazą danych (DBMS)

DBMS (Database Management System) to oprogramowanie pośredniczące między użytkownikiem a bazą danych.
Odpowiada za:

  • definiowanie struktury danych (tworzenie tabel, relacji),
  • przechowywanie i wyszukiwanie danych,
  • bezpieczeństwo i kontrolę dostępu,
  • obsługę wielu użytkowników,
  • zapewnienie spójności transakcji.

Przykłady DBMS: PostgreSQL, Oracle, MySQL, SQLite, MS SQL Server.

💾 2. Rodzaje danych

🗣

W świecie informatyki dane występują w różnych formach. Warto je uporządkować według stopnia strukturyzacji.

📚 Klasyfikacja danych:

  1. Ustrukturyzowane

Dane w tabelach, arkuszach, bazach. Każdy wiersz ma taki sam zestaw kolumn.

Przykład: tabela klientów w Excelu lub SQL.

ID Imię Nazwisko Miasto
1 Anna Nowak Kraków
2 Jan Kowalski Warszawa
  1. Półustrukturyzowane

Zawierają strukturę, ale nie jest ona sztywna.

Przykład: pliki JSON, XML.

{
  "imie": "Anna",
  "miasto": "Kraków",
  "zainteresowania": ["sport", "muzyka"]
}
  1. Nieustrukturyzowane

Brak jasno określonej struktury danych.

Przykład: obraz, dźwięk, wideo, dokument PDF.

Takie dane trudno przeszukiwać klasycznymi metodami SQL.

💬 Pytanie:

Jakie dane generujemy codziennie jako użytkownicy internetu? Które z nich są ustrukturyzowane?

🗂️ 3. Pliki jako forma przechowywania danych

Zanim powstały bazy danych, dane przechowywano w plikach płaskich (flat files).

To po prostu zbiory rekordów w postaci tekstowej lub binarnej, np. plik .csv lub .txt.

📄 Przykład pliku płaskiego (CSV):

ID,Imię,Nazwisko,Miasto
1,Anna,Nowak,Kraków
2,Jan,Kowalski,Warszawa
3,Piotr,Wiśniewski,Poznań

🗃 Co można zauważyć:

Dane są łatwe do odczytania – można otworzyć w Excelu lub notatniku.

Ale… brak:

  • kontroli nad poprawnością (np. można wpisać błędny numer ID),
  • relacji między danymi (osobna lista klientów i zamówień się nie łączy),
  • spójności przy równoczesnym dostępie.

💬 Pytanie:

Co się stanie, gdy dwie osoby jednocześnie edytują ten sam plik CSV?

🧱 4. Problemy pracy z plikami

🗣

Wraz ze wzrostem ilości danych zaczynają się problemy.

Systemy plikowe mają ograniczenia, których nie da się przeskoczyć bez bazy danych.

⚠️ Typowe problemy:

  1. Redundancja danych – powielanie informacji. np. imię i adres klienta wpisywany przy każdym zamówieniu.

  2. Niespójność danych – różne wersje tych samych danych w wielu plikach.

  3. Trudność w aktualizacji – brak jednego miejsca prawdy.

  4. Brak współbieżności – tylko jeden użytkownik może bezpiecznie edytować.

  5. Brak bezpieczeństwa i kontroli dostępu.

🧠 Przykład:

Plik klienci.txt i zamowienia.txt – brak połączenia między nimi.

Trudno ustalić, które zamówienie należy do którego klienta.

klienci.txt:
1;Anna Nowak;Kraków
2;Jan Kowalski;Warszawa

zamowienia.txt:
10;Laptop;1
11;Monitor;2
12;Kabel HDMI;1

To działa, ale co jeśli zmienimy ID klienta lub nazwę produktu? Powstaje chaos.

Problem Opis
🔁 Redundancja Te same dane powielane w wielu plikach
⚠️ Brak spójności Aktualizacja w jednym pliku nie zmienia danych w innych
⛔ Brak współbieżności Tylko jedna osoba mogła modyfikować dane naraz
❌ Trudna kontrola dostępu Brak ról i uprawnień
🧩 Słaba integracja Dane rozproszone po różnych plikach i formatach

System bazodanowy rozwiązuje te problemy, centralizując dane i zarządzając nimi przez DBMS.

🧮 5. Od pliku do bazy danych

🗣

Aby rozwiązać te problemy, w latach 70. pojawiła się koncepcja systemu bazodanowego.

Pomysł był prosty, ale rewolucyjny:

  • dane przechowywane są w jednym centralnym repozytorium,
  • dostęp do nich odbywa się przez język zapytań (SQL),
  • kontrolowana jest spójność, współbieżność, bezpieczeństwo.

📚 Pojęcia podstawowe:

  1. Baza danych – zbiór danych o określonej strukturze.

  2. System zarządzania bazą danych (DBMS) – oprogramowanie do tworzenia, przechowywania, udostępniania danych.

  3. Użytkownicy – aplikacje, programiści, analitycy, którzy korzystają z danych.

📊 Przykład:

Porównanie pliku CSV z tabelą SQL:

Cecha Plik CSV Baza danych (SQL)
Struktura danych Tekstowa, dowolna Ściśle zdefiniowana (kolumny, typy)
Spójność danych Nie Zapewnia DBMS
Współbieżność Brak Obsługiwana
Wyszukiwanie Pełne skanowanie Zapytania, indeksy
Bezpieczeństwo Brak Kontrola dostępu

🧠 6. Różnice w przetwarzaniu danych – przykład porównawczy

🗣

Zanim przejdziemy do SQL, warto zrozumieć, że rodzaj danych determinuje sposób ich przetwarzania.

Typ danych Przykład Narzędzie przetwarzania Typowe operacje
Tabelaryczne sprzedaż, klienci SQL, Excel sortowanie, sumowanie, filtracja
Tekstowe artykuły, maile wyszukiwanie pełnotekstowe indeksowanie, analiza słów
Obraz zdjęcia, wideo biblioteki CV, AI klasyfikacja, rozpoznawanie obiektów
Dźwięk nagrania, mowa DSP, ML filtracja, transkrypcja

💬 Pytanie:

Dlaczego dane tabelaryczne można łatwo ująć w relacje, a dźwięk czy obraz – już nie?

3️⃣ Architektura systemów baz danych (ANSI/SPARC)

Aby zapewnić niezależność danych od aplikacji, opracowano model trójwarstwowy ANSI/SPARC:

Poziom Opis Przykład
Zewnętrzny Punkt widzenia użytkownika – wybrane dane w określonym formacie Widok „Studenci z kierunku Informatyka”
Logiczny (koncepcyjny) Globalny model danych – struktura tabel, relacje, ograniczenia Schemat bazy uczelni
Wewnętrzny (fizyczny) Sposób przechowywania danych na dysku Indeksy, pliki, metody dostępu

Ten model umożliwia: - niezależność logiczną danych (zmiany struktury nie psują aplikacji), - niezależność fizyczną danych (zmiany sposobu zapisu nie wpływają na logikę).


4️⃣ Typy baz danych

W zależności od sposobu przechowywania i powiązań danych wyróżniamy:

Typ bazy danych Opis Przykład
Hierarchiczna Dane ułożone w strukturę drzewa IMS, stary system IBM
Sieciowa Wiele połączeń między rekordami (graf zależności) IDMS
Relacyjna Dane w tabelach (relacjach) – klucze, związki PostgreSQL, MySQL
Obiektowa Dane jako obiekty (z metodami) ObjectDB, db4o
Dokumentowa / NoSQL Dane w formacie JSON, brak stałego schematu MongoDB, CouchDB
Grafowa Dane w formie węzłów i krawędzi Neo4j

Najczęściej używanym modelem jest model relacyjny, ponieważ łączy prostotę, spójność i matematyczne podstawy (algebra relacji).

🧭 Wniosek:

Bazy danych powstały nie dlatego, że ktoś lubił tabele, ale dlatego, że pliki przestały wystarczać do utrzymania spójnych, współdzielonych informacji.

Historia i ewolucja baz danych

Bazy danych nie są wynalazkiem XXI wieku — ich początki sięgają lat 60. XX wieku, gdy organizacje zaczęły gromadzić coraz większe ilości danych.

🔹 Systemy plikowe

Pierwsze systemy przechowywały dane w plikach na dyskach. Choć były proste, miały poważne ograniczenia:

  • Brak centralnej kontroli nad danymi
  • Trudność w utrzymaniu spójności
  • Brak uniwersalnych narzędzi do wyszukiwania

💡 Zadanie: Na jakich innych obiektach, oprócz plików, można pracować w systemach operacyjnych?

🔹 Wczesne systemy DBMS

W latach 60. i 70. pojawiły się pierwsze systemy zarządzania bazami danych (DBMS). Zapewniały:

  • centralną kontrolę danych,
  • integralność i bezpieczeństwo,
  • wydajne przetwarzanie i wyszukiwanie.

🔹 Modele hierarchiczne i sieciowe

Wczesne systemy wykorzystywały struktury drzewiaste lub grafowe. Były skuteczne, ale trudne w modyfikacji i rozwoju.

🔹 Przełom: model relacyjny

W 1970 roku Edgar F. Codd zaproponował model relacyjny danych, w którym:

  • dane są przechowywane w tabelach (relacjach),
  • każda tabela ma kolumny (atrybuty) i wiersze (krotki).

Zalety:

  • prostota i przejrzystość,
  • elastyczność (łatwo dodawać nowe tabele),
  • bezpieczeństwo i spójność danych.

🔹 SQL – język pracy z danymi

Wraz z rozwojem modelu relacyjnego powstał SQL (Structured Query Language) – język do tworzenia, modyfikowania i pobierania danych.

Dziś SQL jest fundamentem większości systemów: od aplikacji biurowych po duże systemy korporacyjne. Nawet współczesne rozwiązania NoSQL często nawiązują do idei relacyjnych.

6️⃣ Zalety podejścia relacyjnego

  • brak redundancji danych (dzięki kluczom i relacjom),
  • łatwe wyszukiwanie i łączenie informacji (język SQL),
  • kontrola spójności i integralności,
  • bezpieczeństwo i wielodostępność,
  • niezależność logiczna od aplikacji.

7️⃣ Od modelu do języka – wprowadzenie do SQL

Język SQL (Structured Query Language) został stworzony, by umożliwić: - definiowanie struktur danych (DDL – Data Definition Language), - manipulowanie danymi (DML – Data Manipulation Language), - kontrolę dostępu i transakcji (DCL, TCL).

Przykład: ```sql CREATE TABLE STUDENT ( NrIndeksu INT PRIMARY KEY, Imie VARCHAR(30), Nazwisko VARCHAR(30), Kierunek VARCHAR(50) );

📚 Materiały do dalszej lektury

  1. C.J. Date, An Introduction to Database Systems
  2. R. Elmasri, S.B. Navathe, Fundamentals of Database Systems
  3. Dokumentacja PostgreSQL: https://www.postgresql.org/docs/