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.