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'' | | ||
| + | |||