| | 208 | = Релациона алгебра за прашалникот: Најпопуларен артист по жанр за корисник = |
| | 209 | |
| | 210 | |
| | 211 | == 1. !PlayCounts == |
| | 212 | Се пресметува бројот на плеј-стани за секој жанр и уметник за одреден клиент (со ID 123). Операциите што се користат се: |
| | 213 | |
| | 214 | - **Join**: Поврзување на сите потребни табли (customer, invoice, invoice_line, track, genre, album, artist) со операцијата `⋈`. |
| | 215 | - **Selection (σ)**: Применуваме услов за селектирање само на податоци за клиент со ID 123. |
| | 216 | - **Grouping (γ)**: Групираме по жанр и уметник и пресметуваме бројот на плеј-стани за секој пар жанр-уметник со функцијата COUNT. |
| | 217 | |
| | 218 | Релационата алгебра за `PlayCounts`: |
| | 219 | |
| | 220 | !PlayCounts = γ_{g.genre_id, g.name → genre_name, ar.name → artist_name, COUNT(*) → play_count} (σ_{c.customer_id = 123}((customer ⋈ invoice) ⋈ (invoice_line ⋈ track) ⋈ (track ⋈ genre) ⋈ (track ⋈ album) ⋈ (album ⋈ artist))) |
| | 221 | |
| | 222 | |
| | 223 | == 2. !MaxPlayCounts == |
| | 224 | Се пресметува максималниот број на плеј-стани за секој жанр. Операциите што се користат се: |
| | 225 | |
| | 226 | - **Grouping (γ)**: Групирање по `genre_id` и пресметување на максималниот број на плеј-стани за секој жанр користејќи ја функцијата `MAX`. |
| | 227 | |
| | 228 | Релационата алгебра за `MaxPlayCounts`: |
| | 229 | |
| | 230 | !MaxPlayCounts = γ_{genre_id, MAX(play_count) → max_count} (!PlayCounts) |
| | 231 | |
| | 232 | |
| | 233 | == 3. !FinalResult == |
| | 234 | Се прави **Join** помеѓу `PlayCounts` и `MaxPlayCounts`, за да се изберат само оние редови каде што бројот на плеј-стани се совпаѓа со максималниот број за даден жанр. Се избираат само атрибутите `genre_name`, `artist_name`, и `play_count`. |
| | 235 | |
| | 236 | Релационата алгебра за финалниот резултат: |
| | 237 | |
| | 238 | !FinalResult = π_{pc.genre_name, pc.artist_name, pc.play_count} |
| | 239 | (!PlayCounts ⋈_{pc.genre_id = mpc.genre_id ∧ pc.play_count = mpc.max_count} !MaxPlayCounts) |
| | 240 | |
| | 241 | |
| | 242 | == Целосен израз на релационата алгебра == |
| | 243 | Со комбинирање на сите чекори, добиваме целосен израз за релационата алгебра: |
| | 244 | |
| | 245 | π_{pc.genre_name, pc.artist_name, pc.play_count} ((γ_{g.genre_id, g.name → genre_name, ar.name → artist_name, COUNT(*) → play_count}(σ_{c.customer_id = 123} ((customer ⋈ invoice) ⋈ (invoice_line ⋈ track) ⋈ (track ⋈ genre) ⋈ (track ⋈ album) ⋈ (album ⋈ artist)))) ⋈{pc.genre_id = mpc.genre_id ∧ pc.play_count = mpc.max_count} (γ{genre_id, MAX(play_count) → max_count} (!PlayCounts))) |
| | 246 | |
| | 247 | |