„Adatbázisok - Relációs lekérdezések gyakorlat” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
| (7 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva) | |||
| 1. sor: | 1. sor: | ||
Az aktuális tematika és feladatsor elérhető a [https://www.db.bme.hu/targyak/adatbazisok/gyakorlatok/2-gyakorlat tárgyhonlapon]. | |||
==Sor- és oszlopkalkulus példák megoldása== | ==Sor- és oszlopkalkulus példák megoldása== | ||
| 93. sor: | 95. sor: | ||
** Azon x-ek halmaza, akikhez létezik y, akivel ((x, y) vagy (y, x) sorrendben) sort alkotnak H-ban, és létezik z, w, amikkel, és a 'tanár' konstanssal mint foglalkozással, sort alkotnak az M táblában: <math> \{x \mid (\exists y: (H(x, y)\vee H(y, x)))\wedge(\exists z, w: M(x, \text{'tanar'}, z, w))\} </math> | ** Azon x-ek halmaza, akikhez létezik y, akivel ((x, y) vagy (y, x) sorrendben) sort alkotnak H-ban, és létezik z, w, amikkel, és a 'tanár' konstanssal mint foglalkozással, sort alkotnak az M táblában: <math> \{x \mid (\exists y: (H(x, y)\vee H(y, x)))\wedge(\exists z, w: M(x, \text{'tanar'}, z, w))\} </math> | ||
* '''Kik a BjutiSzalonban dolgozó nők férjei?''' | * '''Kik a BjutiSzalonban dolgozó nők férjei?''' | ||
** Azon x-ek halmaza, akikhez van y, hogy (y | ** Azon x-ek halmaza, akikhez van y, hogy (x, y) házaspár, és van z, w, amik y-nnal és a 'BjutiSzalon' konstanssal szerepelnek M-ben. <math> \{x \mid (\exists y: H(x, y))\wedge(\exists z, w: M(y, z, \text{'BjutiSzalon'}, w))\} </math> | ||
* '''Melyek azok a foglalkozások, amiket csak egy-egy ember űz?''' | * '''Melyek azok a foglalkozások, amiket csak egy-egy ember űz?''' | ||
** Azon x-ek halmaza, amikhez létezik y, z, w, akikkel sort alkot M-ben (vagyis van ilyen foglalkozás), de nem létezik két különböző hármas (y, z, w, t, s, u), amikkel sort alkot (és a két sorban a nevek különböznek). <math> \{x \mid (\exists y, z, w: M(y, x, z, w))\wedge(\neg\exists y, z, w, t, s, u: (M(y, x, z, w)\wedge M(t, x, s, u)\wedge(y\neq t)))\} </math> | ** Azon x-ek halmaza, amikhez létezik y, z, w, akikkel sort alkot M-ben (vagyis van ilyen foglalkozás), de nem létezik két különböző hármas (y, z, w, t, s, u), amikkel sort alkot (és a két sorban a nevek különböznek). <math> \{x \mid (\exists y, z, w: M(y, x, z, w))\wedge(\neg\exists y, z, w, t, s, u: (M(y, x, z, w)\wedge M(t, x, s, u)\wedge(y\neq t)))\} </math> | ||
| 112. sor: | 114. sor: | ||
* Az univerzális kvantoros kifejezéseket egzisztenciális kvantorossá kell alakítani a <math> \forall x: \omega(x) \Leftrightarrow \neg(\exists x: (\neg \omega(x))) </math> összefüggéssel. | * Az univerzális kvantoros kifejezéseket egzisztenciális kvantorossá kell alakítani a <math> \forall x: \omega(x) \Leftrightarrow \neg(\exists x: (\neg \omega(x))) </math> összefüggéssel. | ||
'''Kvantor nélküli kifejezések:''' | '''Kvantor nélküli kifejezések:''' | ||
* <math> s^{(m)}[1] | * <math> s^{(m)}[1] < 3 </math> | ||
** Nyilván nem csak domainbeli (itt a domain csak a 3-mat tartalmazza) elemeket tartalmazó sorok elégíthetik ki, úgyhogy nem biztonságos. | ** Nyilván nem csak domainbeli (itt a domain csak a 3-mat tartalmazza) elemeket tartalmazó sorok elégíthetik ki, úgyhogy nem biztonságos. | ||
* <math> R^{(m)}(s^{(m)}) \wedge s^{(m)}[1]=3 </math> | * <math> R^{(m)}(s^{(m)}) \wedge s^{(m)}[1]=3 </math> | ||
** Az első tagot csak domainbeli sorok elégíthetik ki, a második nem tartalmaz kvantort, ezért biztonságos. | ** Az első tagot csak domainbeli sorok elégíthetik ki, a második nem tartalmaz kvantort, ezért biztonságos. | ||
* <math> R^{(m)}(s^{(m)}) \wedge s^{(m)}[1] | * <math> R^{(m)}(s^{(m)}) \wedge s^{(m)}[1] < 3 </math> | ||
** Az előzőhöz hasonlóan biztonságos. | ** Az előzőhöz hasonlóan biztonságos. | ||
* <math> \neg R^{(m)}(s^{(m)}) \wedge s^{(m)}[1]=3 </math> | * <math> \neg R^{(m)}(s^{(m)}) \wedge s^{(m)}[1]=3 </math> | ||
| 124. sor: | 126. sor: | ||
'''Kvantort tartalmazó kifejezések:''' | '''Kvantort tartalmazó kifejezések:''' | ||
* Először vizsgáljuk meg biztonságosság szempontjából az alábbi három kifejezést és negáltjaikat: | * Először vizsgáljuk meg biztonságosság szempontjából az alábbi három kifejezést és negáltjaikat: | ||
* <math> \Phi(x, y)=R_1(x, y) \wedge y | * <math> \Phi(x, y)=R_1(x, y) \wedge y > 0 </math> | ||
* <math> \Psi(x, y)=\neg R_1(x, y) \vee y | * <math> \Psi(x, y)=\neg R_1(x, y) \vee y > 0 </math> | ||
* <math> \Omega(x, y)=R_1(x, y) \vee y | * <math> \Omega(x, y)=R_1(x, y) \vee y > 0 </math> | ||
* <math> \Theta(x)=R_2(x) \wedge \exists y: \Phi(x, y) </math> | * <math> \Theta(x)=R_2(x) \wedge \exists y: \Phi(x, y) </math> | ||
* <math> \Theta(x)=R_2(x) \wedge \exists y: \Psi(x, y) </math> | * <math> \Theta(x)=R_2(x) \wedge \exists y: \Psi(x, y) </math> | ||
| 144. sor: | 146. sor: | ||
* '''Mi a legprimitívebb algoritmus, amit el tudsz képzelni egy biztonságos sorkalkulus kifejezés eredményhalmazának előállítására?''' | * '''Mi a legprimitívebb algoritmus, amit el tudsz képzelni egy biztonságos sorkalkulus kifejezés eredményhalmazának előállítására?''' | ||
* '''Készíts reláció-algebrai kifejezést egy halmaz legkisebb, ill. második legkisebb elemének kiválasztására! Mi az ennek megfelelő sor- és oszlopkalkulus kifejezés?''' | * '''Készíts reláció-algebrai kifejezést egy halmaz legkisebb, ill. második legkisebb elemének kiválasztására! Mi az ennek megfelelő sor- és oszlopkalkulus kifejezés?''' | ||
** Reláció-algebránál először vesszük a halmaz szorzatát magával, és kiszelektáljuk azokat a párokat, ahol az első kisebb, mint a második, majd projekcióval meghagyjuk a második oszlopot. Ekkor megkaptuk azon elemek halmazát, amik nagyobbak valaminél, ezt kivonva az eredetiből marad a legkisebb elem. <math> H\setminus (\pi_{2}(\sigma_{2 | ** Reláció-algebránál először vesszük a halmaz szorzatát magával, és kiszelektáljuk azokat a párokat, ahol az első kisebb, mint a második, majd projekcióval meghagyjuk a második oszlopot. Ekkor megkaptuk azon elemek halmazát, amik nagyobbak valaminél, ezt kivonva az eredetiből marad a legkisebb elem. <math> H\setminus (\pi_{2}(\sigma_{2>1}(H\times H))) </math> | ||
** A második legkisebb elemet úgy kapjuk meg, hogy azon elemek halmazából, amiknél van kisebb, kivonjuk azok halmazát, amiknél legalább 2 kisebb van: <math> (\pi_{2}(\sigma_{2 | ** A második legkisebb elemet úgy kapjuk meg, hogy azon elemek halmazából, amiknél van kisebb, kivonjuk azok halmazát, amiknél legalább 2 kisebb van: <math> (\pi_{2}(\sigma_{2>1}(H\times H)))\setminus (\pi_{3}(\sigma_{(2>1)\wedge(3>2)}(H\times H\times H))) </math> | ||
** Sorkalkulus: azon egyelemű sorok halmaza, amikhez nem létezik nála kisebb első elemmel rendelkező egyelemű sor. <math> \{s^{(1)}\mid H^{(1)}(s^{(1)})\wedge\neg\exists t^{(1)}:(H^{(1)}(t^{(1)})\wedge s^{(1)}[1] | ** Sorkalkulus: azon egyelemű sorok halmaza, amikhez nem létezik nála kisebb első elemmel rendelkező egyelemű sor. <math> \{s^{(1)}\mid H^{(1)}(s^{(1)})\wedge\neg\exists t^{(1)}:(H^{(1)}(t^{(1)})\wedge s^{(1)}[1]>t^{(1)}[1])\} </math> Illetve a második legkisebb elem: létezik nála kisebb, de nem létezik két különböző nála kisebb. <math> \{s^{(1)}\mid H^{(1)}(s^{(1)})\wedge\exists t^{(1)}:(H^{(1)}(t^{(1)})\wedge s^{(1)}[1]>t^{(1)}[1])\wedge\neg\exists t^{(1)}, u^{(1)}:(H^{(1)}(t^{(1)})\wedge H^{(1)}(u^{(1)})\wedge s^{(1)}[1]>t^{(1)}[1]\wedge s^{(1)}[1]>u^{(1)}[1] \wedge u^{(1)}[1]\neq t^{(1)}[1])\} </math> | ||
** Oszlopkalkulus: ugyanaz, mint az előbb, csak egyelemű sorváltozók első elemei helyett egy-egy oszlopváltozó szerepel: <math> \{s\mid H(s)\wedge\neg\exists t:(H(t)\wedge s | ** Oszlopkalkulus: ugyanaz, mint az előbb, csak egyelemű sorváltozók első elemei helyett egy-egy oszlopváltozó szerepel: <math> \{s\mid H(s)\wedge\neg\exists t:(H(t)\wedge s>t)\} </math> illetve <math> \{s\mid H(s)\wedge\exists t:(H(t)\wedge s>t)\wedge\neg\exists t, u:(H(t)\wedge H(u)\wedge s>t\wedge s>u \wedge u\neq t)\} </math> | ||
* '''Mondjunk minél kacifántosabb helybenhagyó műveleteket!''' | * '''Mondjunk minél kacifántosabb helybenhagyó műveleteket!''' | ||
* '''Mikor kényelmesebb a sor- és mikor az oszlopkalkulus?''' | * '''Mikor kényelmesebb a sor- és mikor az oszlopkalkulus?''' | ||