Bunachair sonraí gan an ceo

Scéimre «Kotomarket»

11 min
What you'll learn
  • an tábla ceart a aimsiú i measc na gcúig cinn in «Kotomarket»: users, products, orders, order_items, events
  • léarscáil ER a léamh: cairdinéalacht naisc a chinneadh (1:N, N:M, 1:1) ón áit a luíonn an eochair eachtrach
  • nasc «iliomad le hiliomad» a oscailt trí thábla acomhail le dhá FK — ar nós order_items le order_id + product_id
  • a mhíniú cén fáth nach féidir inneachar ordaithe a stóráil mar shraith de ide díreach in orders

Inniu tugann QUERY an t-innéacs iomlán aníos ar an bpríomhbhord in aon iarraidh amháin. Crochann cúig phlána lonracha san aer agus iad ag rothlú go mall — léarscáil an domhain a mhair. Lena dtaobh lasann loga caomhnaithe a ghabhann leis an seat, agus tá líne amháin ann faoi líne: «Tugaim cúig thábla agus lorg an séú cinn ar láimh. — K.» Comhairíonn tú na plánaí. Cúig cinn go cruinn. Cá bhfuil an lorg?

QUERY: Ná lig do na loirg do d’aird a bhaint. Foghlaim na cúig cinn seo ar dtús sách maith chun do bhealach a aimsiú agus do shúile dúnta — taispeánfaidh an chartlann an chuid eile í féin, nuair a mheasfaidh sí réidh thú.

Cúig thábla «Kotomarket»

As seo amach oibreoimid leis an mbunachar seo — seat de shiopa ar líne ó 2024. Coinnigh é mar léarscáil den siopa: cé a tháinig isteach, cad atá ar na seilfeanna, cad a cheannaigh siad, agus cad a rinne siad sular cheannaigh siad.

TáblaA bhfuil ann
usersceannaitheoirí: id, ainm, cathair agus dáta clárúcháin
productsearraí an tseomra taispeána: id, ainm, catagóir, praghas agus stoc
ordersorduithe: id, user_id, dáta, stádas agus iomlán
order_itemsinneachar na n-orduithe: cén táirge, cé mhéad píosa, agus ar cén praghas
eventsimeachtaí iompraíochta: amhairc, cur sa chiseán agus ceannacháin

Léitear na naisc mar seo: user amháin → go leor orders; order amháin → go leor order_items; product amháin → go leor order_items. Má théann tú amú, oscail an scéimre ar dheis — tá sé cosúil le plean urláir an tseomra díolacháin.

Déanaimis spléachadh ar thábla na n-orduithe: tá user_id ag gach sraith — tagairt do cheannaitheoir. Sin mar a nascann tábla amháin le ceann eile, agus scoireann an léarscáil de bheith ina cúig oileán ar leith.

Rothlaíonn cúig phlána-thábla holagrafacha mar réaltbhuíon, ceangailte le snáitheanna; i leataobh tá imlíne phoncaithe lag den séú cinn ar éigean le feiceáil
Léarscáil na cartlainne: cúig thábla agus na naisc eatarthu. Geallann an loga caomhnaithe «lorg an séú cinn» freisin — ach níl sé le feiceáil go fóill.

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.

TableWhat it holds
usersbuyers: id, name, city, and signup date
productsstorefront items: id, name, category, price, and stock
ordersorders: id, user_id, date, status, and total
order_itemsorder contents: which product, how many, and at what price
eventsbehavioral 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.

Orduithe agus a nasc le ceannaitheoir trí user_id:
Query result
iduser_idstatustotal_amount
118paid5980.00
210paid19750.00
326cancelled9560.00
426paid15530.00
58paid26710.00
637paid42110.00

Conas léarscáil ER a léamh

Tugtar léarscáil ER (entity–relationship) sa tionscal ar an léarscáil a d’oscail QUERY: is táblaí iad na dronuilleoga, is naisc eochrach eachtraí iad na línte eatarthu. Is é an rud is tábhachtaí ar líne an chairdinéalacht: cé mhéad sraith ar thaobh amháin a fhreagraíonn do cé mhéad ar an taobh eile.

  • 1:N, ceann le hiliomad — an nasc is coitianta. Ceannaitheoir amháin — go leor orduithe. Luíonn an eochair eachtrach i gcónaí ar thaobh na «hiliomad»: stóráiltear user_id in orders, ní a mhalairt. Sin é riail an léite: aimsigh an FK — aimsigh taobh N.
  • N:M, iliomad le hiliomad — tá go leor táirgí in ordú amháin, agus tagann táirge amháin i go leor orduithe. Ní féidir nasc den sórt sin a chur in iúl go díreach i mbunachar coibhneasta: níl áit ar bith leis an eochair eachtrach a chur. Osclaítear é trí thábla acomhail — is é sin order_items dúinne. Iompraíonn gach sraith de phéire tagairtí order_id + product_id agus iompaíonn sé nasc N:M amháin ina dhá nasc 1:N. Bónas: faigheann an nasc féin airíonna — líon na bpíosaí agus an praghas ag nóiméad an cheannaigh.
  • 1:1, ceann le ceann — castar níos annaimhe é: mar shampla, aistrítear réimsí troma nó príobháideacha go tábla ar leith leis an eochair chéanna.
-- An réiteach N:M i ngníomh: péirí «ordú — táirge» ó order_items
SELECT order_id, product_id, quantity
FROM order_items
LIMIT 6;
usersidnameproductsidpriceordersiduser_ideventsuser_idproduct_idorder_itemsorder_idproduct_iduser_id → idproduct_id → idPKFK (reference)
Léarscáil ER «Kotomarket»: naisc 1:N ó users go orders agus an réiteach N:M idir orders agus products trí order_items.

Tuisle: inneachar ordaithe a stóráil díreach in orders — mar shraith '7,12,3' nó eagar aitheantóirí. Ní féidir sonraí den sórt sin a chosaint le heochair eachtrach, iad a chomhaireamh go macánta nó iad a cheangal leis an seomra taispeána gan lúthchleasaíocht. Feiceann tú nasc «iliomad le hiliomad» — cruthaigh tábla acomhail le dhá eochair eachtrach, ar nós order_items.

Interview question

Ceist agallaimh: conas a chuirtear nasc «iliomad le hiliomad» i bhfeidhm i mbunachar coibhneasta?

Freagra láidir: trí thábla acomhail le dhá eochair eachtrach do na táblaí atá á nascadh — ar nós order_items le order_id agus product_id: iompaíonn sé N:M ina dhá nasc 1:N. Stórálann sé airíonna an naisc féin freisin — líon, praghas ag nóiméad an cheannaigh. Is é príomheochair tábla den sórt sin ceachtar comhdhéanta den dá FK nó id ionadach.

Check yourself
Cén áit sa scéimre a fheictear cén táirge a chuaigh i gcén t-ordú?