L-iskema ta’ «Kotomarket»
What you'll learn
- issib it-tabella t-tajba fost il-ħamsa f’«Kotomarket»:
users,products,orders,order_items,events - taqra ER-dijagramma: tiddetermina l-kardinalità tar-rabta (1:N, N:M, 1:1) skont fejn jinsab il-
- tiftaħ rabta «ħafna ma’ ħafna» permezz ta’ tabella intermedjarja b’żewġ FK — bħal
order_itemsb’order_id+product_id - tispjega għalfejn il-kontenut tal-ordni ma jistax jinżamm bħala ringiela ta’ id direttament f’
orders
Illum QUERY itella’ fuq il-mejda prinċipali l-indiċi kollu f’daqqa. Ħames pjani li jiddu jiddendlu fl-arja u jduru bil-mod — mappa tad-dinja li baqgħet ħajja. Maġenbhom iteptep il-ġurnal tal-konservazzjoni mehmuż mal-istampa, u ringiela waħda fih hija sottolinjata: «Ngħaddi ħames tabelli u t-trazza tas-sitta. — K.» Tgħodd il-pjani. Eżatt ħamsa. Fejn hi t-trazza?
QUERY: Tiddistrajx ruħek bit-trazzi. L-ewwel itgħallem dawn il-ħamsa sew biex issib it-triq b’għajnejk magħluqa — il-bqija l-arkivju jurihulek hu, meta jħossok lest.
Il-ħames tabelli ta’ «Kotomarket»
Minn hawn ’il quddiem se naħdmu ma’ din id-database — stampa ta’ ħanut online tas-sena 2024. Żommha bħal mappa tal-ħanut: min daħal, x’hemm fuq il-vetrina, x’xtraw u liema azzjonijiet għamlu qabel ix-xiri.
| Tabella | X’taħżen |
|---|---|
users | il-klijenti: id, isem, belt u data tar-reġistrazzjoni |
products | il-prodotti tal-vetrina: id, isem, kategorija, prezz u stokk |
orders | l-ordnijiet: id, user_id, data, status u total |
order_items | il-kontenut tal-ordnijiet: liema prodott, kemm biċċiet u bi liema prezz |
events | l-avvenimenti tal-imġiba: dehriet, żidiet fil-karrettun u xiri |
Ir-rabtiet jinqraw hekk: user wieħed → ħafna orders; order wieħed → ħafna order_items; product wieħed → ħafna order_items. Jekk tintilef, iftaħ l-iskema fuq il-lemin — hija bħal pjanta tas-sala tal-bejgħ.
Nitfgħu għajn fit-tabella tal-ordnijiet: f’kull ringiela hemm user_id — referenza għall-klijent. Hekk tabella waħda torbot ma’ oħra, u l-mappa tieqaf tkun ħames gżejjer separati.

Kotomarket’s five tables
From here on we’ll be working with this database — a of an online shop from 2024. Hold it like a map of the store: who walked in, what’s on the shelves, what they bought, and what they did before buying.
| Table | What it holds |
|---|---|
users | buyers: id, name, city, and signup date |
products | storefront items: id, name, category, price, and stock |
orders | orders: id, user_id, date, status, and total |
order_items | order contents: which product, how many, and at what price |
events | behavioral events: views, add-to-carts, and purchases |
The links read like this: one user → many orders; one order → many order_items; one product → many order_items. If you get lost, open the schema on the right — it’s like the floor plan of the shop.
Let’s peek into the orders table: every row has a user_id — a reference to a buyer. That’s how one table links to another, and the map stops being five separate islands.
user_id:| id | user_id | status | total_amount |
|---|---|---|---|
| 1 | 18 | paid | 5980.00 |
| 2 | 10 | paid | 19750.00 |
| 3 | 26 | cancelled | 9560.00 |
| 4 | 26 | paid | 15530.00 |
| 5 | 8 | paid | 26710.00 |
| 6 | 37 | paid | 42110.00 |
Kif taqra ER-dijagramma
Il-mappa li fetaħ QUERY, fl-industrija jsejħulha ER-dijagramma (entity–relationship): ir-rettangoli — tabelli, il-linji bejniethom — rabtiet bil-foreign keys. L-aktar ħaġa importanti fuq il-linja hija l-kardinalità: kemm-il ringiela minn naħa waħda jikkorrispondu għal kemm mill-oħra.
- 1:N, wieħed-ma’-ħafna — l-aktar rabta frekwenti. Klijent wieħed — ħafna ordnijiet. Il- dejjem jinsab fuq in-naħa ta’ «ħafna»:
user_idjinħażen f’orders, u mhux bil-maqlub. Din hija propju r-regola tal-qari: sibt l-FK — sibt in-naħa N. - N:M, ħafna-ma’-ħafna — f’ordni waħda ħafna prodotti, u prodott wieħed jidher f’ħafna ordnijiet. Direttament tali rabta f’database relazzjonali ma tistax tesprimiha: il-foreign key m’hemmx fejn tpoġġih. Tiftaħha permezz ta’ tabella intermedjarja — għalina din hija
order_items. Kull ringiela tagħha ġġorr par referenziorder_id+product_idu tibdel rabta waħda N:M f’żewġ rabtiet 1:N. Bonus: ir-rabta nnifisha tikseb attributi — l-għadd ta’ biċċiet u l-prezz fil-mument tax-xiri. - 1:1, wieħed-ma’-wieħed — tiltaqa’ magħha inqas spiss: pereżempju, kampi tqal jew privati joħorġuhom f’tabella separata bl-istess ċavetta.
-- Ir-riżoluzzjoni N:M fl-azzjoni: pari «ordni — prodott» minn order_items
SELECT order_id, product_id, quantity
FROM order_items
LIMIT 6;
Tfixkil: taħżen il-kontenut tal-ordni direttament f’orders — bħala ringiela '7,12,3' jew array ta’ identifikaturi. Tali data ma tistax tipproteġiha bil-, tgħoddha onestament jew torbotha mal-vetrina mingħajr akrobazija. Tara rabta «ħafna ma’ ħafna» — oħloq tabella intermedjarja b’żewġ foreign keys, bħal order_items.
Interview question
Mistoqsija minn intervista: kif timplimenta rabta «ħafna ma’ ħafna» f’database relazzjonali?
Tweġiba qawwija: permezz ta’ tabella intermedjarja b’żewġ foreign keys lejn it-tabelli li jiġu marbuta — bħal order_items b’order_id u product_id: tibdel N:M f’żewġ rabtiet 1:N. Fl-istess ħin fiha jaħżnu l-attributi tar-rabta nnifisha — l-għadd, il-prezz fil-mument tax-xiri. Il- ta’ tali tabella hija jew kompost miż-żewġ FK, jew id surrogat.