2006. őszi félév:
Adatbázis-kezelés (IKP-ABE)
Beadandó feladat (2N):
Függőségőrzés eldöntése
Feladatleírás:
C++ nyelven írjunk egy
programot, amely tetszőleges relációséma dekompozíciójáról
és a sémára vonatkozó funkcionális
függőségi halmazról eldönti, hogy a relációséma függőségőrző-e a függőségi
halmazra nézve. A programot fordítsuk le MS
Windows alatt.
A program neve abcdefg EHA kód
esetén a következő
legyen:
2nabcdefg.exe
A program MS Windows parancssorból futtatható legyen 2
paraméter, az input és az output fájl nevének
megadásával:
2nabcdefg 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 2nabcdefg legyen. A levélbe nem kell
semmit írni!
A program egy szöveges input fájlból olvassa be a
relációséma dekompozícióját, és a funkcionális
függőségi halmazt, majd a függőségőrző
vagy nem függőségőrző szöveget a
végéhez csatolja az algoritmus eredményének
megfelelően. Szintaktikai
ellenőrzést nem muszáj végezni, feltehetjük,
hogy az input fájl helyes, azaz a függőségekben
szereplő attribútumok szerepelnek
a dekompozícióban, a függőségek
megadása megfelel a lent megadottnak, stb.
Például az input2n.txt fájlt
beolvasva, (ami egy 4 tagú dekompozíciót és 4
függőséget tartalmaz), a programnak az output2n.txt fájlt kell
előállítania.
A funkcionális függőségek
formája a következő
(nyíl helyett kötőjel és nagyobb jel
szerepel):
A1,...,Ak->B1,…,Bl
A könnyebbség és
egyértelműség érdekében a megvalósításhoz
feltesszük a következőket:
- A
relációnevek, attribútumnevek.char(30)
típusúak.
- A kis-
és nagybetűket különbözőeknek
tekintjük.
- A relációsémák
legfeljebb 50 attribútumot tartalmaznak,
a dekompozíció legfeljebb 30 elemű, a
függőségek száma legfeljebb 100.
- A
függőségek és a dekompozíció
tagjai külön sorokban
szerepelnek.
- Az
input és output fájlokban a dekompozíció,
a függőségi halmaz, és a végeredmény között
1-1 üres sor szerepel.
2006. október 5.