Creativity | Reliability | Innovations

Relacyjne bazy danych – wprowadzenie

Współcześnie bazy danych pełnią kluczową rolę tak naprawdę w każdej sferze naszego życia – wykorzystują je wszelkie możliwe podmioty gospodarcze, od najzwyklejszych sklepów spożywczych po banki, na publicznej służbie zdrowia kończąc. Wszędzie tam, gdzie niezbędne jest przechowywanie i gromadzenie danych osobowych klientów lub danych produktów będących na stanie w magazynie, stosujemy właśnie bazy danych.

1. Struktura danych w tabeli i ich znaczenie

Na początek zdefiniujmy znaczenie samej bazy danych. Bazy danych opierają się na tzw. tabelach. Tabela jest to logicznie uporządkowany zbiór danych, opisujący identyfikowalny obiekt, który może wchodzić w relacje z innymi obiektami w bazie, czyli tzw. encję. Jest to swego rodzaju wzorzec, na podstawie którego dodajemy w późniejszym czasie kolejne rekordy w bazie danych, np. klientów bądź pracowników.

Z kolei Relacyjna Baza Danych jest to struktura umożliwiająca tworzenie rozbudowanej sieci współzależności poszczególnych obiektów w tej bazie. Innymi słowy, w ramach jednego obiektu w bazie danych możemy odwołać się do dowolnego innego obiektu będącego z nim w relacji, bez konieczności wielokrotnego jego powielania. Dochodzi tu także tematyka tak zwanej redundancji, czyli nadmiarowości danych, o której wspomnę potem jeszcze kilka słów.

 

KLIENT

1. Przykładowa tabela przechowująca dane klienta
Nazwa komórki Typ danych Wartość NULL
idKlienta numeric(5) no
imie varchar(30) yes
nazwisko varchar(30) no

Jak widzimy na powyższym przykładzie, w postaci tabeli zbieramy kluczowe informacje na temat wybranego obiektu, niezbędne do jego sprawnej i bezbłędnej identyfikacji.

Podstawową komórką każdej istniejącej tabeli powinien być jej numer identyfikacyjny. Jest to z reguły liczba całkowita z przedziału <0, 99999>, za pomocą której w łatwy sposób możemy odszukać interesujący nas rekord w bazie. Taką komórkę określamy mianem klucza podstawowego lub głównego – każdy kolejny rekord w bazie danych przydzielany ma swój własny unikalny kod (wartość), pozwalający na jego identyfikację. Poza kluczem podstawowym w tabeli możemy również zamieścić takie dane jak imię, nazwisko, adres, numer telefonu, etc. Wtedy gdyby nawet w dwóch rekordach powtarzały się te same dane, to klucz podstawowy pozwala na jednoznaczną identyfikację danej osoby (jeżeli nie dysponujemy jej numerem PESEL), ponieważ nie może się on powtarzać..

W trakcie projektowania bazy danych istotne jest dzielenie danych na jak najmniejsze segmenty – jest to w szczególności istotne przy tworzeniu tabeli zawierającej dane adresowe klienta. Gdybyśmy cały adres wrzucili do pojedynczej komórki, to praktycznie niemożliwe stałoby się jakiekolwiek sortowanie i filtrowanie danych na podstawie podanego adresu zamieszkania. Zamiast tego wyznaczmy kilka mniejszych komórek, np. ulica, kod pocztowy, miasto. Wtedy możemy bez problemu wyszukać mieszkańców np. tylko i wyłącznie Gdańska lub Sopotu. Wszystkie pozostałe rekordy nie spełniające warunku dla zadanego zapytania nie zostaną wyświetlone.

 

2. Dzielenie porcji danych na mniejsze segmenty

 

Pomimo tego, że we wszystkich bazach danych dąży się do tzw. normalizacji danych, wciąż mogą powstać problemy z ich nadmiarowością, czyli redundancją. Jest to zjawisko, w którym ta sama porcja informacji powielana jest kilkukrotnie w obrębie kilku różnych tablic w bazie, zwiększając w ten sposób sztucznie ich rozmiar.

KLIENT

Nazwa komórki Typ danych Wartość NULL
idKlienta numeric(5) no
imie varchar(30) yes
nazwisko varchar(30) no

PRACOWNIK

Nazwa komórki Typ danych Wartość NULL
idPracownika numeric(5) no
imie varchar(30) yes
nazwisko varchar(30) no
imieKlienta varchar(30) yes
nazwiskoKlienta varchar(30) no

Na powyższym przykładzie widzimy, że dodajemy tak naprawdę dwa razy wpis dotyczący tego samego klienta – pierwszy raz w tabeli Klient, a drugi raz w tabeli Pracownik. Łatwo zauważyć, że taka metoda jest skrajnie nieefektywna i prowadzi do stworzenia wielu kopii tych samych danych w obrębie całej bazy. Aby tego uniknąć, stosujemy tzw. klucz obcy, będący swego rodzaju odpowiednikiem dowiązania symbolicznego w systemach Windows i Linux. Klucz obcy przechowuje wartość klucza podstawowego z zewnętrznej tabeli, będącej w obrębie tej samej bazy danych. Ma to zastosowanie np. w systemach wypożyczalni książek, gdzie do jednego czytelnika możemy przypisać wiele różnych książek, ale z kolei żadna książka nie może być wypożyczona przez więcej niż jedną osobę jednocześnie.

 

2. Typy relacji w bazie danych

Źródło: http://www.teacher.webd.pl/kurs_mysql/k_2_2_3.php

 

Wyróżniamy trzy główne typy relacji w bazach:

  • jeden do jednego (1:1)
  • jeden do wielu (1:N)
  • wiele do wielu (M:N)

Relacja jeden do jednego

Relacja jeden do jednego pomiędzy tabelami A i B występuje wtedy, gdy każdemu rekordowi z tabeli A jest przyporządkowany dokładnie jeden rekord z tabeli B i na odwrót – każdemu rekordowi z tabeli B jest przyporządkowany dokładnie jeden rekord
z tabeli A.

 

Relacja jeden do wielu

Relacja jeden do wielu jest najczęściej używanym typem połączenia. Pomiędzy tabelami A i B występuje wtedy, gdy pojedynczemu rekordowi z tabeli A jest przyporządkowany jeden lub wiele rekordów z tabeli B, natomiast pojedynczemu rekordowi z tabeli B jest przyporządkowany dokładnie jeden rekord z tabeli A. Zmodyfikujmny wcześniejszy przykład, zmieniając tabelę przewodniczących klas na tabelę wychowawców. Może niektórzy nie znają takich sytuacji, więc wyjaśniam, że w mojej szkole funkcjonują klasy łączone. Dwie klasy mają oddzielną domunentację (np. dzienniki lekcyjne), ale jednego wychowawcę.

 

Relacja wiele do wielu

Relacja wiele do wielu pomiędzy tabelami A i B występuje wtedy, gdy pojedynczemu rekordowi z tabeli A jest przyporządkowany jeden lub wielu rekordów z tabeli B, i na odwrót – pojedynczemu rekordowi z tabeli B jest przyporządkowany jeden lub wielu rekordów A. Taką sytuację będziemy mieli w relacji nauczycieli do uczniów. Każdy nauczyciel uczy wielu uczniów, natomiast każdego ucznia uczą różni nauczyciele.

3. Podsumowanie

Powyższy materiał tłumaczy ogólne podstawy modelu relacyjnego w bazach danych. Poznaliśmy najważniejsze typy relacji, jakie mogą łączyć dane w bazach, ich specyfikę i zastosowanie. W następnej części skupimy się już bezpośrednio na składni języka T-SQL, a więc na tworzeniu i wypełnianiu tabel bazy danych oraz zapytań bezpośrednio z linii poleceń.

0 0 votes
Article Rating
Subscribe
Powiadom o

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x