2006. őszi félév:
Adatbázis-kezelés (IKP-ABE)
Beadandó feladat (1K):
Több reláció természetes
összekapcsolásának
kiértékelése
Feladatleírás:
C++ nyelven írjunk egy
programot, amely tetszőleges számú, de legfeljebb 10 reláció természetes összekapcsolását
kiértékeli. A
programot fordítsuk le MS Windows alatt.
A program neve abcdefg EHA kód
esetén a következő
legyen:
1kabcdefg.exe
A program MS Windows parancssorból futtatható legyen 2
paraméter, az input és az output fájl nevének
megadásával:
1kabcdefg input.txt
output.txt
A programot, és a forráskódo(kat)
az ab2006@inf.elte.hu címre kell
elküldeni a megadott határidő előtt.
A csatolt állományokat nem kell
összetömöríteni. Mindenki egy levelet küldjön,
és ahhoz legyen minden csatolva.
A levél subject-je abcdefg EHA kód
esetén 1kabcdefg legyen. A levélbe nem kell
semmit írni!
A program egy szöveges input fájlból olvassa be a táblákat,
és a természetes összekapcsolást megadó kifejezést,
majd a kiértékelés
eredményét a végéhez csatolja. Szintaktikai
ellenőrzést nem muszáj végezni, feltehetjük, hogy
az input fájl helyes, azaz a kifejezés helyes,
a kifejezésben előforduló összes tábla
szerepel az input fájlban, a rekordok
megfelelnek a sémáknak,
stb.
Például az input1k.txt fájlt
beolvasva, (ami 3 reláció természetes összekapcsolásának felel meg), a
programnak az output1k.txt
fájlt kell előállítania.
A természetes összekapcsolás formája a következő:
join(r1,…,rk),
ahol k <= 10, és r1, …, rk
relációk, melyeknek
lehetnek azonos nevű attribútumai.
A könnyebbség és
egyértelműség érdekében a megvalósításhoz
feltesszük a következőket:
- A
táblákban az oszlopok
típusa egész (int) vagy legfeljebb 100 hosszú karakter
(char(100)).
- A karaktersorozatok
egyszeres idézőjelek között
szerepelnek a táblák
soraiban, például ’alma’.
- A
relációnevek, attribútumnevek.char(30)
típusúak.
- Az
input relációk, valamint a részeredményekhez
használt relációk mindegyike
legfeljebb 50 attribútumot, és legfeljebb 10000 sort tartalmaz.
- A
relációk sorainak
komponenseit vesszők
választják el egymástól.
- A kis-
és nagybetűket különbözőeknek
tekintjük.
- Az
input és output fájlokban a kifejezés,
a relációk, és az eredmény között
1-1 üres sor szerepel.
- Az
input fájlban a relációk sorai balról
jobbra lexikografikus
sorrendben szerepelnek, és egy sor csak
egyszer szerepel.
- Az
output fájlban az eredményül kapott
reláció sorai is balról jobbra lexikografikus
sorrendben szerepeljenek, és egy sor csak
egyszer szerepeljen.
- Ha
r és s sémáiban nincs közös attribútum,
akkor a
join(r,s) a két tábla direktszorzata.
- Az
eredményül kapott reláció neve result legyen.
2006. október 2.