Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pp:2024:tema2 [2024/04/09 11:10] alexandra.udrescu01 |
pp:2024:tema2 [2024/04/23 23:06] (current) alexandra.udrescu01 [Operatii cu una sau mai multe Tabele] |
||
---|---|---|---|
Line 3: | Line 3: | ||
<note important> | <note important> | ||
- | **DEADLINE TODO** | + | **DEADLINE 5 MAI 23:59** |
* Temele trebuie submise pe curs.upb.ro, in assignment-ul numit ''Tema 2 Scala''. | * Temele trebuie submise pe curs.upb.ro, in assignment-ul numit ''Tema 2 Scala''. | ||
Line 15: | Line 15: | ||
* **var** (**val** este ok!) | * **var** (**val** este ok!) | ||
</note> | </note> | ||
- | <note>Scheletul se poate găsi la: TODO</note> | + | <note>Scheletul se poate găsi la:{{:pp:2024:skel2.zip|}}</note> |
==== Scopul Temei ==== | ==== Scopul Temei ==== | ||
Line 97: | Line 97: | ||
</code> | </code> | ||
- | **1.4.** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. TODO: keep it? | + | **1.4.** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. |
<code scala> | <code scala> | ||
def sort(column: String): Table = ??? | def sort(column: String): Table = ??? | ||
Line 166: | Line 166: | ||
**2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori care sa ne permita sa scriem cod mai concis. | **2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori care sa ne permita sa scriem cod mai concis. | ||
Vom folosi urmatorii operatori ce extind clasa FilterCond: | Vom folosi urmatorii operatori ce extind clasa FilterCond: | ||
- | - == - pentru a verifica egalitatea a doua conditii de filtrare. | + | - === - pentru a verifica egalitatea a doua conditii de filtrare. |
- && - pentru a face conjunctia a doua conditii de filtrare. | - && - pentru a face conjunctia a doua conditii de filtrare. | ||
- || - pentru a face disjunctia a doua conditii de filtrare. | - || - pentru a face disjunctia a doua conditii de filtrare. | ||
Line 212: | Line 212: | ||
</code> | </code> | ||
- | **3.1.**. Implementati functia create, care primeste numele unei tabele si o lista de coloane si creeaza o noua tabela cu acele coloane doar daca numele tabelei nu exista deja in baza de date. Daca numele tabelei exista, functia va intoarce baza de date nemodificata. | + | **3.1.**. Implementati functia create, care primeste numele unei tabele si creeaza o noua tabela doar daca numele tabelei nu exista deja in baza de date. Daca numele tabelei exista, functia va intoarce baza de date nemodificata. |
<code scala> | <code scala> | ||
- | def create(tableName: String, columns: List[String]): Database = ??? | + | def create(tableName: String): Database = ??? |
</code> | </code> | ||
Line 250: | Line 250: | ||
* Numele coloanei utilizate pentru join in tabelul final va fi preluat din primul tabel. | * Numele coloanei utilizate pentru join in tabelul final va fi preluat din primul tabel. | ||
* Se va intoarce eroare cand unul din tabele nu exista. Daca un tabel este gol, se va intoarce celălalt tabel. | * Se va intoarce eroare cand unul din tabele nu exista. Daca un tabel este gol, se va intoarce celălalt tabel. | ||
+ | * Liniile din rezultat sunt in ordinea: linii ce au intrări in ambele tabele, linii doar in prima tabela, linii doar in a2a tabela. | ||
<hidden Exemplu> | <hidden Exemplu> | ||
Line 422: | Line 423: | ||
al caror nume incepe cu 'J' si care au un hobby. In final se extrag doar coloanele name si hobby. | al caror nume incepe cu 'J' si care au un hobby. In final se extrag doar coloanele name si hobby. | ||
- | <code scala> def yougAdultHobbiesJ(db: Database): Option[Table] = ??? </code> | + | <code scala> def youngAdultHobbiesJ(db: Database): Option[Table] = ??? </code> |
==== Testare ==== | ==== Testare ==== | ||
Line 448: | Line 449: | ||
|-ID.txt | |-ID.txt | ||
</code> | </code> | ||
+ | |||
+ | ==== Puncatje ==== | ||
+ | |||
+ | Pentru ca avem cam multe exercitii de implementat, găsiți mai jos un tabel cu punctajele grupate: | ||
+ | |||
+ | ^ Parte a temei ^ Functionalitate ^ Punctaj ^ | ||
+ | | Table | toString | 0.5 | | ||
+ | | Table | insert | 1.5 | | ||
+ | | Table | delete | 1.5 | | ||
+ | | Table | sort | 1.5 | | ||
+ | | Table | select | 1.5 | | ||
+ | | Table | apply | 1.5 | | ||
+ | | Table | filter | 4.5 | | ||
+ | | Table | update | 4.5 | | ||
+ | | **TABLE** | **TOTAL** | **17** | | ||
+ | | Filter | Field | 4 | | ||
+ | | Filter | Compound | 3 | | ||
+ | | Filter | Not | 2 | | ||
+ | | Filter | And | 2 | | ||
+ | | Filter | Or | 2 | | ||
+ | | Filter | Equal | 2 | | ||
+ | | Filter | Any | 2 | | ||
+ | | Filter | All | 2 | | ||
+ | | Filter | implicit equal | 0.5 | | ||
+ | | Filter | implicit or | 0.5 | | ||
+ | | Filter | implicit and | 0.5 | | ||
+ | | Filter | implicit not | 0.5 | | ||
+ | | Filter | implicit touple2Field | 1 | | ||
+ | | **FILTER** | **TOTAL** | **22** | | ||
+ | | Database | create | 1.5 | | ||
+ | | Database | drop | 1.5 | | ||
+ | | Database | selectTables | 1.5 | | ||
+ | | Database | indexing | 1.5 | | ||
+ | | Database | join | 10 | | ||
+ | | **DATABASE** | **TOTAL** | **16** | | ||
+ | | QueryLanguage | CreateTable | 2 | | ||
+ | | QueryLanguage | DropTable | 2 | | ||
+ | | QueryLanguage | Create & Drop implicit | 1 | | ||
+ | | QueryLanguage | SelectTables | 2 | | ||
+ | | QueryLanguage | Select implicit | 1 | | ||
+ | | QueryLanguage | JoinTables | 2 | | ||
+ | | QueryLanguage | Join implicit | 1 | | ||
+ | | QueryLanguage | InsertRow | 2 | | ||
+ | | QueryLanguage | Insert implicit | 1 | | ||
+ | | QueryLanguage | UpdateRow | 2 | | ||
+ | | QueryLanguage | Update implicit | 1 | | ||
+ | | QueryLanguage | SortRow | 2 | | ||
+ | | QueryLanguage | Sort implicit | 1 | | ||
+ | | QueryLanguage | DeleteRow | 2 | | ||
+ | | QueryLanguage | Delete implicit | 1 | | ||
+ | | QueryLanguage | FilterRows | 2 | | ||
+ | | QueryLanguage | Filter implicit | 1 | | ||
+ | | QueryLanguage | SelectColumns | 2 | | ||
+ | | QueryLanguage | Extract implicit | 1 | | ||
+ | | **QUERY LANGUAGE** | **TOTAL** | **30** | | ||
+ | | Queries | queryT | 0 | | ||
+ | | Queries | queryB | 0 | | ||
+ | | Queries | killJackSparrow | 5 | | ||
+ | | Queries | insertLinesThenSort | 5 | | ||
+ | | Queries | youngAdultHobbies | 5 | | ||
+ | | **QUERIES** | **TOTAL** | **15** | | ||
+ | | ''TEMA 2'' | ''TOTAL'' | ''100'' | | ||
+ | |||