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:
- 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 |
- Półustrukturyzowane
Zawierają strukturę, ale nie jest ona sztywna.
Przykład: pliki JSON, XML.
{
"imie": "Anna",
"miasto": "Kraków",
"zainteresowania": ["sport", "muzyka"]
}
- 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:
Redundancja danych – powielanie informacji. np. imię i adres klienta wpisywany przy każdym zamówieniu.
Niespójność danych – różne wersje tych samych danych w wielu plikach.
Trudność w aktualizacji – brak jednego miejsca prawdy.
Brak współbieżności – tylko jeden użytkownik może bezpiecznie edytować.
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:
Baza danych – zbiór danych o określonej strukturze.
System zarządzania bazą danych (DBMS) – oprogramowanie do tworzenia, przechowywania, udostępniania danych.
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
- C.J. Date, An Introduction to Database Systems
- R. Elmasri, S.B. Navathe, Fundamentals of Database Systems
- Dokumentacja PostgreSQL: https://www.postgresql.org/docs/