6.6. Rekord alapú relációkalkulus

6.6.1. Rekordváltozók és alaprelációk

6.6.2. Kifejezések és formulák a rekord alapú relációkalkulusban

6.6.3. Az egzisztenciális és univerzális kvantorok

6.6.4. Példák az egzisztenciális kvantor használatára

6.6.5. Az univerzális és egzisztenciális kvantorok közötti transzformációk

A következőkben bemutatunk néhány, a matematikai logikából jól ismert transzformációt, amelyek az univerzális és az egzisztenciális kvantorokkal vannak összefüggésben. Egy univerzális kvantort át lehet alakítani egzisztenciális kvantorrá, és ugyanúgy vissza is úgy, hogy ekvivalens kifejezést kapjunk. Egy általános transzformációt informálisan a következőképpen írhatunk le: Alakítsuk át az egyik típusú kvantort a másik típusúvá negációval (NOT-ot eléírva); az AND-et és az OR-t cseréljük fel egymással; a negált formulák legyenek nemnegáltak; a nemnegált formulák pedig negáltak. Az alábbiakban kifejtjük e transzformáció néhány speciális esetét, a ≡ szimbólum az ekvivalens fogalmat rövidíti:

  • (∀x) (P(x)) ≡ NOT (∃x) (NOT (P(x)))

  • (∃x) (P(x)) ≡ NOT (∀x) (NOT (P(x)))

  • (∀x) (P(x) AND Q(x)) ≡ NOT (∃x) (NOT (P(x)) OR NOT (Q(x)))

  • (∀x) (P(x) OR Q(x)) ≡ NOT (∃x) (NOT (P(x)) AND NOT (Q(x)))

  • (∃x) (P(x) OR Q(x)) ≡ NOT (∀x) (NOT (P(x)) AND NOT (Q(x)))

  • (∃x) (P(x) AND Q(x)) ≡ NOT (∀x) (NOT (P(x)) OR NOT (Q(x)))

Megjegyzendő még, hogy igazak a következők, amennyiben a → szimbólum az implikációt jelöli:

  • (∀x) (P(x)) → (∃x) (P(x))

  • NOT (∃x) (P(x)) → NOT (∀x) (P(x))

6.6.6. Az univerzális kvantor használata

6.6.7. Biztonságos kifejezések

Amennyiben univerzális kvantorokat, egzisztenciális kvantorokat vagy predikátumok negációját használjuk egy relációkalkulusbeli kifejezésben, meg kell győződnünk arról, hogy az eredményül kapott kifejezésnek van értelme. A relációkalkulusban biztonságos kifejezésnek nevezzük az olyan kifejezést, amely garantáltan véges számú rekordot ad eredményül; különben nem biztonságos kifejezésről beszélünk. Például a

  • { tNOT ( DOLGOZÓ( t ) ) }

kifejezés nem biztonságos, mivel az univerzum összes olyan rekordját adja eredményül, amely nem DOLGOZÓ rekord, és ezek számossága végtelen. Ha követjük a korábban, a Q3 lekérdezésnél leírt szabályokat, biztonságos kifejezést kapunk, amikor univerzális kvantorokat használunk. Pontosabban is definiálhatjuk a biztonságos kifejezéseket, ha bevezetjük a rekord alapú relációkalkulusbeli kifejezés tartománya fogalmat: ez az összes olyan érték halmaza, amely vagy konstans értékként fordul elő a kifejezésben, vagy a kifejezésben hivatkozott relációk bármely rekordjában szerepel. A { tNOT ( DOLGOZÓ( t ) ) } tartománya a DOLGOZÓ reláció összes rekordjában előforduló attribútumértékek halmaza (bármely attribútum esetén). A Q3A kifejezés tartománya magában foglalja az összes olyan értéket, amely előfordul a DOLGOZÓ, a PROJEKT és a DOLGOZIK_RAJTA relációkban (hozzávéve az 5-ös értéket, amely magában a lekérdezésben jelenik meg).

Egy kifejezést biztonságosnak nevezünk, ha az eredményében szereplő értékek a kifejezés tartományából származnak. Figyeljük meg, hogy a { tNOT ( DOLGOZÓ( t ) ) } nem biztonságos, mert az eredményében a DOLGOZÓ reláción kívüli rekordokat (és ezért értékeket) tartalmaz; ezek az értékek nincsenek a kifejezés tartományában. Az összes többi példánk biztonságos kifejezés.