Adatbázis rendszerek 1. 2. Ea: Viszonyított betűszámtan Relációs algebra alapok
B IT M A N
52/1
2015.09.08 B ITv: M AN
Témakörök
52/2
Relációs algebra
Ellenőrző kérdések
B IT M A N
52/3
Relációs algebra
Műveletek
Gyakorlás
B IT M A N
Relációs algebra Algebrai módszerek arra, hogy miként építhetünk új
relációkat a régi relációkból. A kifejezések alapja (operandusai) a relációk. Kevés, egyszerű művelet A halmazműveletek csak azonos szerkezetű relációkon hajthatók végre! A relációk megadása: 1.
2.
rsz
típus
szín
r1
Fiat
zöld
r2
Opel
kék
Fiat
kék
r5 52/4
AUTÓ [ rsz, típus, szín ]
3. AUTÓ rsz
típus szín
B IT M A N
A relációs algebra műveletei Szelekció Projekció Kiterjesztés Aggregáció Csoportképzés
Egy operandusú
Join Metszet Különbség Unió Osztás
Két operandusú
} } }
52/5
Halmazműveletek
B IT M A N
Szelekció (kiválasztás) Szelekció: a megadott feltételnek eleget tévő rekordok kerülnek át az eredmény relációba. Jele:
felt(r)
Formálisan:
Feladat: Megoldás:
AUTÓ
52/6
X Y(r) = { t r | t(X) t(Y)}
A kék színű, vagy a Mazda típusú autó adatai
szín=‘kék’ OR típus=‘Mazda’ (AUTÓ)
rsz
típus
szín
r1
Fiat
zöld
rsz
típus
szín
r2
Opel
kék
r2
Opel
kék
r6
Mazda
piros
r6
Mazda
piros
r4
Skoda
kék
r4
Skoda
kék
r9
Lada
piros
B IT M A N
Projekció (vetítés) Projekció: csak a kijelölt mezők jelennek meg az eredmény relációban. Jele:
mlista(r) Feladat: Megoldás:
AUTÓ
52/7
Formálisan:
X (r) = {t(X) r | t r}
A típus és a szín mezők megjelenítése
típus, szín (AUTÓ)
rsz
típus
szín
típus
szín
r1
Fiat
zöld
Fiat
zöld
r2
Opel
kék
Opel
kék
r6
Mazda
piros
Mazda
piros
r4
Skoda
kék
Skoda
kék
r9
Lada
piros
Lada
piros
B IT M A N
A szelekció és a projekció kombinálása Feladat:
A kék színű, vagy a Mazda típusú autó rendszámai
Megoldás:
rsz (szín=‘kék’ OR típus=‘Mazda’ (AUTÓ) )
AUTÓ
52/8
rsz
típus
szín
r1
Fiat
zöld
r2
Opel
kék
r6
Mazda
piros
r4
Skoda
kék
r9
Lada
piros
szelekció
projekció
rsz r2 r6 r4
B IT M A N
Kiterjesztés Kiterjesztés: új, származtatott adatok kiírása
Jele:
mezőlista(r)
Az új mezőérték a többi mező értékéből számítható. Feladat:
Megoldás:
Autók teljesítményadója
adó: lóerő/0.005 (AUTO)
AUTÓ rsz
típus
lóerő
lóerő
r1
Opel
110
110
r2
Merci
320
320
r5
Trabi
29
29
52/9
B IT M A N
Kiterjesztés Kiterjesztés: meglévő és származtatott adatok kiírása Jele: mezőlista(r) A mezőlistában megadható az új mező neve, képlete. Feladat:
Megoldás:
Autók adatai és teljesítményadója
rsz, típus, lóerő, adó: lóerő/0.005 (AUTO)
AUTÓ rsz
típus
lóerő
rsz
típus
lóerő
adó
r1
Opel
110
r1
Opel
110
22000
r2
Merci
320
r2
Merci
320
64000
r5
Trabi
29
r5
Trabi
29
5800
52/10
B IT M A N
Aggregáció Aggregáció: a relációból összesítő rekordot állít elő. Jele:
aggregációs-lista (r)
Aggregációs függvények: SUM(mez.kif) – Összeg AVG(mez.kif) – Átlag COUNT(mez.kif) – Darabszám MAX(mez.kif) – Legnagyobb érték MIN(mez.kif) – Legkisebb érték
52/11
B IT M A N
Aggregáció Feladat:
Megoldás:
Az autók összára
sum(ár)
Feladat:
Megoldás: (AUTÓ)
AUTÓ
count(*) (AUTÓ)
AUTÓ
rsz
típus
ár
r1
Opel
4000
r2
Merci
12000
r5
Trabi
35
52/12
Az autók száma
rsz
típus
ár
sum(ár)
r1
Opel
4000
count(*)
16035
r2
Merci
12000
3
r5
Trabi
35
B IT M A N
Csoportképzés Csoportképzés és aggregáció: a reláció rekordjait csoportokba rendezi, és minden csoportra egy összesítő rekordot állít elő. Jele:
aggregációs-lista csoport képző
(r)
Feladat:
Az autók átlagára típusonként
Megoldás:
AUTÓ
típus, avg(ár) (AUTÓ) típus
rsz
típus
ár
r1
Opel
3200
r2
Fiat
3800
típus
avg(ár)
r3
Opel
2400
Opel
3200
r4
Opel
4000
Fiat
3000
r5
Merci
8000
Merci
8000
Fiat
2200
r6 52/13
B IT M A N
Join (szorzat, illesztés) Join: a két reláció rekordjainak párosait adja eredményként. Alap join: (Descartes-szorzat): r1 r2 = {(t,s) | t r1 , s r2}
Jele:
r1
r2
vagy r1 x r2
Feladat: Megoldás:
AUTÓ
AUTÓ
rsz
típus
szín
r1
Fiat
zöld
r2
Opel
kék
r5
Fiat
kék
EMBER 52/14
Az autók és a tulajdonosok teljes variációja
EMBER rsz
típus
szín
név
kor
r1
Fiat
zöld
Pali
36
r2
Opel
kék
Pali
36
r5
Fiat
kék
Pali
36
név
kor
r1
Fiat
zöld
Anna
29
Pali
36
r2
Opel
zöld
Anna
29
Anna
29
r5
Fiat
kék
Anna
29
B IT M A N
Szelekciós join (feltételes illesztés) Szelekciós join: a két reláció rekordpárosaiból a feltételnek eleget tévő párosokat adja eredményként. Jele:
r1
felt r2 Feladat:
Megoldás:
AUTÓ
Formálisan: r1
r2 )
Az autó tulajdonosok listája AUTÓ
tulaj=id EMBER
EMBER
rsz
tulaj
név
id
r1
3
Béla
1
r2
1
Jenő
2
r5
4
Pali
3
Anna
4
52/15
felt r2 = felt(r1
rsz
tulaj
név
id
r1
3
Pali
3
r2
1
Béla
1
r5
4
Anna
4
B IT M A N
Natural join (természetes illesztés) Natural join: olyan szelekciós join, mely az azonos elnevezésű mezők értékegyezőségén alapszik.
Jele:
r1
= r2 Feladat:
Megoldás:
AUTÓ
Az autó tulajdonosok listája AUTÓ
= EMBER
EMBER
rsz
id
név
id
r1
3
Béla
1
r2
1
Jenő
2
r5
4
Pali
3
Anna
4
52/16
rsz
id
név
r1
3
Pali
r2
1
Béla
r5
4
Anna
B IT M A N
Outer join (külső illesztés) Outer join: olyan szelekciós join, melyben az illeszkedő pár nélküli rekordok is bekerülnek az eredmény halmazba (üres étékekkel kiegészítve).
Jele:
r1
+feltétel r2
Típusai: Left Right Full
52/17
Lista az emberekről, ha van autójuk, arról is.
Feladat: Megoldás:
EMBER
EMBER + ember.id=autó.tulaj AUTÓ
AUTÓ
név
id
rsz
tulaj
név
id
Béla
1
r1
3
Béla
1
Jenő
2
r2
1
Jenő
2
Pali
3
r5
4
Pali
Anna
4
Anna
rsz tulaj r2
1
3
r1
3
4
r5
4
B IT M A N
Semi join (félillesztés) Semi join: olyan szelekciós join, melyben az illeszkedő párokból csak a megadott oldal mezői szerepelnek. r1
feltétel r2
Típusai: Left Right
Megoldás: EMBER
EMBER
52/18
Lista azon emberekről, akiknek van autójuk.
Feladat:
Jele:
ember.id=autó.tulaj AUTÓ
AUTÓ
név
id
rsz
tulaj
név
id
Béla
1
r1
3
Béla
1
Jenő
2
r2
1
Pali
3
Pali
3
r5
4
Anna
4
Anna
4
B IT M A N
Unió (egyesítés) Unió: azonos sémájú relációk rekordhalmazának A egyesítése.
B
Jele: r1 r2 Feladat: Megoldás:
52/19
AB
Az összes ember adata EMBER1 EMBER2
EMBER1
EMBER2
név
id
név
id
név
id
Béla
1
Béla
1
Géza
4
Jenő
2
Jenő
2
Ödön
5
Anna
3
Anna
3
Zoli
6
Géza
4
Ödön
5
Zoli
6 IT M A N B
Metszet (közös rész) Metszet: azonos sémájú relációk rekordhalmazának A metszete.
B
Jele: r1 r2 Feladat:
Azok a futók, akik síelnek is
Megoldás:
Futók Síelők
Futók
52/20
AB
Síelők
név
id
név
id
Béla
1
Géza
4
Jenő
2
Jenő
2
Anna
3
Béla
1
név
id
Béla
1
Jenő
2
B IT M A N
Különbség Különbség: azonos sémájú relációk rekordhalmazának A B különbsége.
Jele: r1 \ r2 Feladat: Megoldás:
Futók
52/21
A\B
Azok a futók, akik nem síelnek Futók \ Síelők
Síelők
név
id
név
id
Béla
1
Géza
4
Jenő
2
Jenő
2
Anna
3
Béla
1
név
id
Anna
3
B IT M A N
Osztás Osztás: a Descartes szorzat inverze, azon legnagyobb reláció, melynek Descartes szorzata r2-vel benne van r1-ben. Feladat:
Azok, akik miden sportágat űznek
Megoldás:
Emberek ÷ Sportág
Jele: r1 ÷ r2 Ember
52/22
sport
név
foci
Béla
bringa
Béla
bringa
Géza
sport
név
foci
Jenő
foci
Béla
futás
Zoli
bringa
Jenő
foci
Zoli
bringa
Jenő
Sportág
B IT M A N
52/23
Relációs algebra
Műveletek
Gyakorlás
B IT M A N
Gyakorló feladat: Termék-Vásárló Az adatbázis ER modellje: Tkód
Név
Azonosító
Név
Vásárlás Termék
Ár
Leírás
Vásárló
Dátum
Darab
Irsz.
52/24
Lakcím
Város
FizMód
Cím
B IT M A N
Gyakorló feladat: Termék-Vásárló 2. Az adatbázis relációs modellje: Termék Tkód Név C5 C25
Vásárlás Ár Leírás N6 C30
Kód C5
Dátum Darab D N6
Azon C5
Vásárló Azonosító Név Irsz Város Cím C5 C25 C4 C40 C30
Séma:
FizMód C15
Termék [ Tkód, Név, Ár, Leírás ]
Vásárlás [ Kód, Dátum, Darab, Azon ] Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 52/25
B IT M A N
Gyakorló feladat: Termék-Vásárló 3. Séma:
Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ]
Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 1. Termékek neve:
П név (termék) 2. A 2000 Ft-nál olcsóbb termékek neve:
П név (σ
ár<2000 (termék))
3. A Kis Rozi által vásárolt termékek neve:
П termék.név (σ kód=tkód termék)) 52/26
vásárló.név=‘Kis Rozi’ (vásárló ►◄ azonosító=azon vásárlás ►◄
B IT M A N
Gyakorló feladat: Termék-Vásárló 4. Séma:
Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ]
Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 4. Azon termékek neve, amelyeket már vásároltak:
П név (termék ►◄ tkód=kód vásárlás) 5. Azon termékek neve, amelyeket még nem vásároltak:
П név (termék) \ П név (termék ►◄ tkód=kód vásárlás) 6. Hány féle termék van? Γ count(*) (termék)
7. A legdrágább termék(ek) neve, ára:
П név,ár (σ ár= Γ max(ár) (termék)
52/27
termék)
B IT M A N
Gyakorló feladat: Termék-Vásárló 5. Séma:
Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ]
Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 8. Hányszor vásároltak a t605-ös kódú termékből?
Γ count(*) (σ kód=’t605’ (vásárlás)) 9. Összesen hány darabot vásároltak a t605-ös kódú termékből?
Γ sum(darab) (σ kód=’t605’ (vásárlás)) 10. Összesen hány darabot vásároltak az egyes termékből? Γ kód, sum(darab) (vásárlás)
kód 52/28
B IT M A N
Gyakorló feladat: Termék-Vásárló 6. Séma:
Termék [ Tkód, Név, Ár, Leírás ] Vásárlás [ Kód, Dátum, Darab, Azon ]
Vásárló [ Azonosító, Név, Irsz, Város, Cím, FizMód ] 11. Az egyes városokban hány vásárló van? Γ város, count(*) (vásárló)
város
12. Összesen mennyit fizetett Kis Rozi?
Γ sum(ár*darab) (
σ
vásárló.név=‘Kis Rozi’
(vásárló ►◄ azonosító=azon vásárlás
►◄ kód=tkód termék)) 13. 2010 májusában mennyi volt a bevétel?
Γ sum(ár*darab) ( 52/29
σ
dátum=‘2010.05.*’
(vásárlás ►◄ kód=tkód termék))
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató neptunkód
név
kód
Oktató
kredit
Tárgy
oktat
megnevezés
félév
tanszék
hallgat
neptunkód
vizsgajegy
név Hallgató
cím
irszám 52/30
város
utca
hsz
tankör életkor
szül.d.
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 2. neptunkód
Oktató
név
kód
oktat
kredit
Tárgy
megnevezés
tanszék
Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ]
52/31
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 3. Tárgy
félév
neptunkód
hallgat vizsgajegy
név Hallgató
cím
irszám
város
utca
hsz
tankör életkor
szül.d.
Relációs sémák: HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 52/32
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 4. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 1. Oktatók neve:
П név (oktató) 2. Oktatók és tantárgyaik neve:
oktató.neptunkód=tárgy.oktató
П név, megnevezés ( oktató ►◄ o.neptunkód=t.oktató tárgy ) 3. Oktatók és tantárgyaik neve (azok az oktatók is, akiknek nincs tárgya):
П név, megnevezés ( oktató +►◄ o.neptunkód=t.oktató tárgy ) oktató.neptunkód=tárgy.oktató 52/33
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 5. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ]
4. A VIR Tsz-en dolgozó oktatók neve és tárgyaik címe:
П név, megnevezés (σ tanszék=’VIR’ (oktató) ►◄o.neptunkód=t.oktató tárgy) 5. Az átlagos kreditpontszám: Γ avg(kredit) (tárgy)
oktató.neptunkód=tárgy.oktató
6. A VIR Tsz.-en oktatók létszáma:
Γ count(*) (σ tanszék=’VIR’ ( oktató ) ) 52/34
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 6. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ]
7. A legnagyobb kreditpontszámú tárgy(ak) címe:
Π megnevezés ( σ kredit=Γ max(kredit) (tárgy) (tárgy) ) 8. Azok az oktatók, akiknek nincs tárgya:
Π név (oktató) \ Π név ( oktató ►◄ o.neptunkód=t.oktató tárgy ) oktató.neptunkód=tárgy.oktató 52/35
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 7. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ] 9. Azok a hallgatók, akik a 2003/2004 tanév II. félévében nem vettek fel tárgyat:
Π név (hallgató) \ Π név ( (σ félév=’2003/2004 2.’ (hallgató) ) ►◄h.neptunkód=h.hallgató hallgat ►◄hallgat.tárgy=tárgy.kód tárgy ) hallgató.neptunkód=hallgat.hallgató 10. Határozzuk meg az életkort:
ε kor=rendszer_dátum-szül_dátum (hallgató) 52/36
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 8. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ]
11. Tanszékenként az oktatók létszáma: Γ tanszék, count(*) (oktató)
tanszék
12. Melyik tárgyat hányan hallgatják: Γ megnevezés, count(*) (tárgy ►◄
megnevezés
tárgy.kód=hallgat.tárgy
hallgat
►◄ hallgat.hallgató=hallgató.neptunkód hallgató) 52/37
B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 9. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ]
13. Azok az oktatók, akiknek 2-nél több tárgyuk van:
Π név ( σ db>2 (Γnév név,count(*) db (oktató ►◄o.neptunkód=t.oktató tárgy)
oktató.neptunkód=tárgy.oktató
14. Az
átlagnál alacsonyabb kreditpontú tárgyak oktatóinak neve:
Π név ( σ kredit < Γ avg(kredit) (tárgy) (tárgy) ►◄o.nepunkód=t.oktató oktató) 52/38 oktató.neptunkód=tárgy.oktató B IT M A N
Gyakorló feladat: Oktató-Tantárgy-Hallgató 10. Relációs sémák: OKTATÓ [ neptunkód, név, tanszék ] TÁRGY [ kód, megnevezés, kredit, oktató ] HALLGATÓ [neptunkód, név, szül.d, tankör, irsz, város, utca, hsz] HALLGAT [ hallgató, tárgy, félév, vizsgajegy ]
15. A legtöbb tárgyat tanító oktató neve: X = Γ név, count(*) db (oktató ►◄
név
Π név (σ db=Γ max(db) (X) (X))
o.nepunkód=t.oktató
tárgy)
oktató.neptunkód=tárgy.oktató
16. Kik azok a hallgatók, akik minden tárgyat felvettek?
Π név (( Π hallgató,tárgy (hallgat) / Π kód (tárgy)) ►◄hallgat.hallgató=hallgató.neptunkód hallgató ) 52/39
B IT M A N
Adatbázis rendszerek 1. Ellenőrző kérdések
B IT M A N
52/40
B IT M A N
Ellenőrző kérdések 1. 1. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: A piros autók rendszáma Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/41
B IT M A N
Ellenőrző kérdések 2. 2. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: A miskolci tulajdonosok összes adatának kiírása Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/42
B IT M A N
Ellenőrző kérdések 3. 3. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: A miskolci tulajdonosok neve és autóik rendszáma Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/43
B IT M A N
Ellenőrző kérdések 4. 4. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Az Opel típusú autók rendszáma Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/44
B IT M A N
Ellenőrző kérdések 5. 5. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Az Opel típusú autók átlagára Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/45
B IT M A N
Ellenőrző kérdések 6. 6. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Városonként az autók darabszáma Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/46
B IT M A N
Ellenőrző kérdések 7. 7. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Rendszám és adó (mely a teljesítmény 150-szerese) Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/47
B IT M A N
Ellenőrző kérdések 8. 8. Milyen algebrai műveleteket kell alkalmazni az alábbi feladat megoldásakor: Adó (mely a teljesítmény 150-szerese) összege városonként Tulajdonos
Autó
Projekció Szelekció Aggregáció Kiterjesztés Join 52/48
B IT M A N
Ellenőrző kérdések 9. 9. Adja meg a megoldást relációs algebrával! Termék [ Tkód, Név, Ár, Leírás ] Raktár [ RaktHely, Tkkód, Darab ]
A: Mely termékek leírásában szerepel a női szó? B: Mely raktárhelyeken van 100-nál több termék? C: Mely raktárhelyeken van bikini nevű termék? D: Mennyi a termékek átlagára? E: Összesen hány darab bikini van a raktárban? F: Összesen mennyi értékű bikini van a raktárban? G: Hány féle 1000 Ft-nál drágább termék van? H: Hány darab 1000 Ft-nál drágább termék van? I:52/49 Mely raktárhelyeken van 100000 Ft-nál nagyobb érték?
B IT M A N
52/50
Gratulálok! Ön átvette a tananyagot, és letesztelte a tudását! B IT M A N
Felhasznált irodalom Kovács László elektronikus jegyzetei Szelezsán János: Adatbázisok, LSI
Oktatóközpont, 1999 Baksáné Varga Erika elektronikus jegyzetei IHM: Adatbázis-kezelés, elektronikus jegyzet
52/51
B IT M A N
VÉGE 52/52
B IT M A N