Informacje płyną w coraz szybszym tempie. Przypomina to nieco skutki globalnego ocieplenia – w pewnym momencie informacje zatopią większość ludzi. Mimo to, usilnie próbujemy powoli i nieustannie strukturalizować otaczające nas informacje. Bez szufladek, do których moglibyśmy wrzucać nowe dane, nie moglibyśmy przetrwać. Doprowadzanie danej informacji do stanu użyteczności zabierałoby tak wiele czasu, że musielibyśmy skrajnie obcinać docierające do nas sygnały.
Wiadomo, ze słów `chaos’ i `porządek’, cieplej zareagujemy na to drugie. Jest bardziej przewidywalne, a skoro tak, to nie ma się czego bać, bo i tak nie znajdziemy tam niczego nieznanego. Między innymi dlatego staramy się prócz strukturalizacji własnych systemów pojęciowych układać wszystko to, co się dookoła nas znajduje. Tu mała uwaga – tak zwany bałagan też jest swoistym porządkiem. Osoba, która tworzy bałagan za wygodniejsze uznaje zapamiętywanie, w którym miejscu odłożyła dany przedmiot, niż odkładanie go na jedno, to samo miejsce. Z tej strony uporządkowanie zaczyna być bardziej widoczne. 😉
Ta sama idea przyświeca komputerom – dane, jakie na nich przechowujemy są w jakiś sposób poukładane. Pliki leżą w katalogach, katalogi w innych katalogach, komputer na biurku, pani Basia na posadzce… W każdym razie idea plików jest wygodna, póki nagle nie każą nam zmienić zmienić numeru identyfikacji klienta (ang. Client Identification Number) na numer o jeden wyższy ze względu na pomyłkę działu sprzedaży (ang. Sales Management) w ostatnich dziewięćdziesięciu tysiącach plików (ang. Last 90 000 Files). Może pan Zbigniew z komputerowego by coś poradził, ale jest na chorobowym po czterech miesiącach zapalenia płuc. Oczywiście, praca musi być wykonana na wczoraj.
Dla uproszczenia zarządzania większymi ilościami powtarzalnych danych i zapobieżenia błędom podobnym do powyższego, skorzystać można z relacyjnej bazy danych. Przykładowo, wspomnianemu numerowi identyfikacji klienta można w bazie danych nadać atrybut autoinkrementacji, dzięki czemu maszyna sama zatroszczy się o dodawanie unikatowego numeru każdemu nowemu klientowi.
Dlaczego relacyjna?
Ponieważ pojęcie `bazy danych’ jest tak ogólne, jak ogólne są informacje. Wszędzie tam, gdzie segregujemy dane w jakiś sposób, możliwe będzie użycie terminu `baza danych’, począwszy na głowie, przechodząc przez różnego rodzaju kartoteki, kończąc wreszcie na dowolnym komputerowym systemie plików.
Ze względów historycznych, których opisanie zajęłoby dużo miejsca, pojęcie `bazy danych’ zostało ograniczone do wąskiej grupy oprogramowania zwanego relacyjnymi bazami danych. Są to dość rozbudowane systemy przechowywania danych, i aby obrazowo przedstawić zasadę ich działania, zaczniemy od środka, czyli od samych danych.
W naszej bazie dane składowane są w tablicowych strukturach – relacjach 1, w jednym lub wielu plikach, zależnie od implementacji . Pomiędzy strukturami mogą występować związki mówiące o tym, że pewien rodzaj danych z jednej tabeli odnosi się do danych z drugiej tabeli. Dla przykładu pierwszym rodzajem danych był klient, a drugim produkt. Produkt był kupowany przez klienta, a więc związek jest tu jak najbardziej wskazany.
Łatwo się domyślić, że sterowanie danymi zapisanymi w tabelach i dodatkowo powiązanymi różnymi związkami nie będzie zbyt proste. To prawda – całością procesu zajmują się systemy zarządzania relacyjną bazą danych, czyli RDBMS, które są rozbudowanymi programami zajmującymi się odczytem i zapisem danych na żądanie użytkowników. Dla obsługi tych żądań został wymyślony język strukturalny język zapytań, w skrócie SQL, dzięki któremu korzystanie z możliwości oferowanych przez bazę danych staje się w miarę proste.
Zazwyczaj RDBMS jest interfejsem dla różnego rodzaju aplikacji klienckich, które wykorzystują dane w sposób adekwatny do zastosowań (prezentacja danych użytkownikowi końcowemu, drukowanie partii towaru na danym produkcie, czy też przekazywanie danych w formie raportu gdzieś dalej). Dużą zaletą dla takiego systemu może być to, że RDBMS może znajdować się na jednym komputerze w sieci, a aplikacje klienckie na innych, w tym wypadku żądania i dane będą przekazywane poprzez sieć, a na dodatek mamy pewność, że dane nie będą rozbieżne na różnych stanowiskach (że nie sprzedamy dwa razy tego samego produktu).
Sytuacja, gdzie klient, serwer przetwarzający dane i składowanie danych są od siebie odrębne, została nazwana architektura trójwarstwową. Spotyka się ją w większości baz danych, np. MySQL, PostgreSQL, Oracle, czy Microsoft SQL Server.
Co można z tym zrobić?
Zastosowania relacyjnej bazy danych są różne. I różniste.
- Najczęściej przychodzącym do głowy wykorzystaniem może być strona internetowa, forum, wiki, blog, czy portal. Języki skryptowe, takie jak PHP, Perl, czy Python mają łatwy do użycia zestaw funkcji odpowiadających za współpracę z RDBMS. W tym wypadku wykorzystanie bazy do przechowywania artykułów, postów, czy innego rodzaju danych samo nasuwa się na myśl.
- Większym i bardziej ambitnym przedsięwzięciem jest stworzenie systemu bazodanowego dla dowolnej firmy. W bazie możemy składować informacje o klientach, transakcjach, wpływach i wydatkach i tak dalej. Dane te wykorzystamy dla pracowników firmy, którzy będą mogli kontrolować bieżące operacje czy opracowywać zestawienia kosztów. Nic nie stoi na przeszkodzie, aby RDBMS kontrolowało także dane odpowiadające za stronę, czy też sklep internetowy firmy.
- Ryzyko rośnie, gdy w grę wchodzą coraz większe sumy. Ale i banki korzystają z baz danych – problem w tym, że jeśli ktoś się pomyli przy projektowaniu, to ktoś inny straci, być może miliony…
- Teraz coś z zupełnie innej beczki: SQLite jest miniaturowym systemem zarządzania bazą danych. Nie nadaje się do zastosowań, gdzie wielu użytkowników w jednej chwili potrzebuje dostępu do bazy danych, ani nie jest przystosowany do komunikacji poprzez sieć. Za to całość kodu odpowiedzialnego za przetwarzanie danych znajduje się w bibliotece, która ma blisko 250kB, przez co SQLite znakomicie nadaje się do samodzielnych aplikacji, takich jak komunikatory internetowe, czy odtwarzacze mp3. Dane przechowywane są w jednym pliku, który można łatwo wysłać mailem, czy przekopiować w inne miejsce.
Gdzie w takim razie stosować bazę danych? Wszędzie tam, gdzie użycie innych rodzajów katalogowania staje się powolne i uciążliwe.
- Często wspomniana tablicowość ma niewiele wspólnego z rzeczywistym zapisem na dysku, gdyż oprogramowanie sterujące wykorzystuje różne sztuczki, aby zmaksymalizować szybkość przeszukiwania. ^
Oj, przepadłeś… 😉
Relacyjność z nazwy baz danych odnosi się do tabel — tabele (w bazie danych) to synonim relacji (w matematyce). Między tabelami/relacjami są związki (relationships).
Zagadka: relacja, tabela, związek — które słowo nie pasuje do pozostałych? ;þ
Ja nie wiem. Piszesz taki mega wypaśny wpis na techbloga i w ogóle, ale o excerpt zapomniałeś :]
Teraz to powoli wchodzą w użycie bazy obiektowe i postrelacyjne. Poza tym na systemy zarządznia używa się raczej skrótu DBMS albo SZBD. Co do relacyjności, tak jak pisze @mcv – Podejście relacyjne do modeli danych opiera się na spostrzeżeniu, że pliki spełniające pewne warunki można uważać za relacje matematyczne, do których stosuje się elementarną teorię relacji. Również stosuje się nazewnictwo tablice to relacje, wiersze to krotki, a kolumny to atrybuty. Więc nazwanie związków relacjami jest dużym błędem.
Polecam Connoly, Begg „Systemy baz danych” lub Beynon-Davies „Systemy baz danych” – tak na marginesie, w okolicach czerwca można się spodziewać wielu osobistości (m.in. Paula Beynon-Daviesa) na wielkiej konferencji w Trójmieście, zapraszam serdecznie ;).
A o wiki waćpan nie pomyślał?
mcv, wymienność… Dobra, zaraz pozmieniam odpowiednie słówka. :p
snufkinie, a to jakaś zasada jest, że trzeba? 😉
Mouser, chyba nie tak szybko wchodzą… A o postrelacyjnych nawet nie słyszałem. Gógl też, chyba że złe słowa kluczowe wpisuję… 😉
D4rky, w jaki sposób miałem pomysleć o wiki?
teoretycznie… po prostu łądniej wygląda 😉
Tutaj akurat wiki by się najbardziej nadawało, jako przykład wykorzystania bazy danych do łączenia i wymiany informacji 😉
@Michał – właśnie dlatego polecam obie książki. Wszystko rozchodzi się o modele danych. Istnieją modele – przedrelacyjne bądź klasyczne (hierarchiczny, sieciowy), relacyjne, postrelacyjne/obiektowe/dedukcyjne. Polecam przeczytać obie książki (jeśli chcesz się zajmować poważniej bazami danych, to staną się one Twoją biblią) oraz wyciąg ze ściągi nt. postrelacyjnych 😉 -> http://mouser.pl/Pliki/bd/Bazy%20danych.html, przy czym przepraszam za „surowość” tego materiału, nie chce mi się o tej porze edytować tego by jakoś to wyglądało.
Ciekawy art 🙂
Gucio, dzięki za pozytywny feedback, no i witam na blogu 🙂
Kurs – podstawy SQL na bazie SQLite
W poprzednim wpisie udało nam się zaznaczyć, że zastosowania relacyjnych baz danych są tak szerokie, że nadają się do większości typowych zadań związanych z katalogowaniem. Dziś postaramy się dowiedzieć czegoś o SQL, języku […]
Witam, panowie widzę iż mogę uzyskać od was pomoc jakiej naprawdę potrzebuje. Mianowicie piszę pracę na temat modelowania w relacyjnych i postrelacyjnych bazach danych. Kolega Mouser słusznie zauważył iz książki które wymienił sa ważne jednak potrzebuje więcej informacji na temat baz postrelacyjnych ich zastosowań kirunku w którym sie rowijają (jakie cehcy przejmuja z obiektowych). Nie moge jednak wyszukac konkretnych materiałów na ten temat a link podany wyżej juz nie funkcjonuje. Naprawde byłbym wdzięczny jeśli ktos byłby w stanie mi pomóc albo dał namieary gdzie szukać. Ksiązkę Beynon-Davies`a posiadam ale tam akurat apropo postrelacyjności nie ma zbyt wiele. Pozdrawiam i licze na jakąkolwiek pomoc.
[…] poprzednim wpisie udało nam się zaznaczyć, że zastosowania relacyjnych baz danych są tak szerokie, że nadają […]