[go: up one dir, main page]

Przejdź do zawartości

Rachunek relacyjny

Z Wikipedii, wolnej encyklopedii

Rachunek relacyjny – teoretyczny, deklaracyjny i nieproceduralny model operowania danymi w bazie danych. Zawiera w sobie relacyjny rachunek krotek (RRK) oraz relacyjny rachunek dziedzin (RRD). Są to elementy modelu relacyjnego baz danych gwarantujące deklaratywny sposób określania zapytań do baz danych. Jest on oparty na alternatywie i koniunkcji.

Rachunek relacyjny a algebra relacyjna

[edytuj | edytuj kod]

Rachunek relacyjny jest w wielu wymiarach podobny do algebry relacyjnej. Algebra relacyjna również jest częścią modelu relacyjnego. Różnica między tymi dwoma rachunkami występuje w sposobie określania zapytań do baz danych. Podczas gdy rachunek relacyjny jest rozumiany jako język deklaratywny, czyli taki, w którym programista opisuje warunki jakie musi spełniać końcowe rozwiązanie, to algebra relacyjna jest językiem imperatywnym, gdzie nakazuje się szczegółową sekwencję kroków prowadzących do rozwiązania. Ponadto rachunek relacyjny u swoich podstaw ma logikę matematyczną, a algebra relacyjna – teorię mnogości

Twierdzenie Codda

[edytuj | edytuj kod]

Mówi ono o tym, że rachunek relacyjny i algebra relacyjna są równoważne logicznie i pod względem siły ekspresji, zatem dla każdego wyrażenia w rachunku relacyjnym istnieje równoważne wyrażanie algebraiczne i vice versa. Oznacza to, że można zadać zapytanie do bazy danych w jednym języku tylko wtedy, gdy również można je zadać w drugim z nich.

Relacyjny rachunek krotek (RRK)

[edytuj | edytuj kod]

Stanowi on teoretyczną podstawę języka SQL. Jest językiem rachunku predykatów pierwszego rzędu i można go wykorzystywać do formułowania zapytań do relacyjnej bazy danych. Wyraża zapytania za pomocą zmiennych i formuł.

1) Niech istnieje relacja

R
           

2) Zmienna posiada zakres dla wszystkich krotek relacji

3) Podstawowa forma: gdzie

  • – zmienna,
  • – atrybut,
  • – warunek.

Przykład 1

[edytuj | edytuj kod]

Niech istnieje relacja

Student (id, imię, nazwisko, płeć,)

Zapytanie: Znajdź id oraz imiona wszystkich studentek.

t.id, t.imię – szukane atrybuty,

Student(t) – Przez ‘t’ oznaczamy domenę relacji Student, warunek konieczny

t.plec – warunek

Przykład 2 z użyciem kwantyfikatorów

[edytuj | edytuj kod]

Niech istnieją dwie relacje

Student (sid, imię, nazwisko, płeć, wid)

Wydział (wid, nazwa)

Zapytanie: Znajdź imiona i nazwiska wszystkich studentów, którzy studiują na wydziale Matematyki

Mając dwie relacje połączone ze sobą, trzeba skorzystać z pomocy kwantyfikatorów do zapisania warunku.

– Takie [...], że [...]

– Zastosowane dla wszystkich

s.imie, s.nazwisko – szukane atrybuty,

Student(s), Wydział(w) – oznaczenia domen relacji, warunki konieczne

w.nazwa, s.wid = w.wid – warunki

Relacyjny rachunek dziedzin (RRD)

[edytuj | edytuj kod]

Stanowi on teoretyczną podstawę języka QBE (Query by Example). W tym rachunku operacje prowadzone są na dziedzinach atrybutów.

Podstawowa forma: gdzie

x – zmienna dziedziny,

θ – warunek.

Przykład 1

[edytuj | edytuj kod]

Niech istnieje relacja

Student (id, imię, nazwisko, płeć,)

Zapytanie: Znajdź id oraz imiona wszystkich studentek.

0) Na początek wprowadźmy zmienne dziedzin, takie, że:

id = a,

imię = b,

nazwisko = c,

płeć = d.

1) Pierwsza wersja: gdzie

a,b – szukane,

– kwantyfikator + zmienne, których nie szukamy,

Student(abcd) – deklaracja zmiennych do danej relacji Student, warunek konieczny

d = 'kobieta' – warunek

Jako iż nie trzeba dodawać wszystkich kwantyfikatorów ze zmiennymi, których nie szukamy, wystarczy ograniczyć się do tych, które trzeba użyć w warunku:

2) Druga wersja:

Można również podać daną zmienną wprost:

3) Trzecia wersja:

Przykład 2

[edytuj | edytuj kod]

Niech istnieją dwie relacje

Student (sid, imię, nazwisko, płeć, wid)

Wydział (wid, nazwa)

Zapytanie: Znajdź imiona i nazwiska wszystkich studentów, którzy studiują na wydziale Matematyki

0) Na początek wprowadźmy zmienne dziedzin, takie, że:

Student:

sid = a,

imię = b,

nazwisko = c,

płeć = d,

wid = e

Wydział:

wid = x,

nazwa = y,

gdzie

c,b – szukane,

– kwantyfikator + zmienne, których nie szukamy, ale potrzebujemy do warunku

Student(abcde), Wydzial(xy) – deklaracja zmiennych do danych relacji, warunki konieczne

y = 'Matematyka', e=x – warunki

Bibliografia

[edytuj | edytuj kod]