Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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