Bunachair sonraí gan an ceo

Táblaí, sraitheanna agus eochracha

11 min
What you'll learn
  • táblaí, sraitheanna agus colúin a aithint thar a chéile agus a mhíniú cén fáth a dteastaíonn príomheochair ó gach sraith (id de ghnáth)
  • na naisc idir táblaí a aimsiú trí eochair eachtrach: orders.user_id → users.id
  • eochair ionadach (IDENTITY, ) a aithint thar cheann nádúrtha (email, ISBN) agus a chosaint cén fáth nár cheart go n-athródh príomheochair
  • uathúlacht réimse ar nós email a dhaingniú le srian UNIQUE, gan é a dhéanamh ina phríomheochair

Tá an t-innéacs oscailte. Osclaíonn QUERY holagram os cionn an bhoird oibre: crochann na mílte taifead san aer i ngreille néata, agus ritheann snáitheanna tanaí ómra idir cuid acu. Síneann tú chuig ceann acu — buaileann sé ar nós teada. Ní carn comhad é seo. Is fabraic é.

Táblaí, sraitheanna, colúin

Tá bunachar coibhneasta cosúil le catalóg néata: tá na sonraí sórtáilte i dtáblaí, agus laistigh de gach tábla tá colúin (cad iad na hairíonna a stórálaimid) agus sraitheanna (na taifid aonair).

Tóg tábla na gceannaitheoirí users: is ceannaitheoir amháin de chuid na Domhain shean é gach sraith, agus déanann na colúin cur síos ar a id, full_name, email, country, city, signup_date.

Ionas nach mbeidh mearbhall ar dhaoine leis an ainm céanna, tá príomheochair () ag gach sraith — aitheantóir uathúil, an colún id de ghnáth. Tríd, is féidir le táblaí eile tagairt a dhéanamh don tsraith seo le eochair eachtrach (). Mar shampla, in ordú ordersuser_id — sin mar a chuimhníonn an t-ordú ar a cheannaitheoir. Is iad na snáitheanna ómra sin ar an holagram na naisc bunaithe ar eochracha.

QUERY: Fad a sheasann an eochair, seasann an snáithe. Céad go leith bliain ina dhiaidh, cuimhníonn gach ordú ar a dhuine fós.

Rith an cheist agus féach cén chuma atá ar cheannaitheoirí «Kotomarket» — taifid nár oscail aon duine ó laethanta an tSeanlín:

Tábla holagrafach de shraitheanna-capsúl agus colúin; ritheann snáitheanna-eochrach ómra ó thaifid orduithe go taifid daoine
Is taifid iad na sraitheanna, is airíonna iad na colúin, agus is nasc bunaithe ar eochair é an snáithe ó ordú go dtí a cheannaitheoir.

Tables, rows, columns

A relational database is like a tidy catalog: the data is sorted into tables, and inside each table there are columns (what properties we store) and rows (the individual records).

Take the buyers’ table users: each row is one buyer from old Earth, and the columns describe their id, full_name, email, country, city, signup_date.

So that people with the same name don’t get confused, every row has a — a unique identifier, usually the id column. Through it, other tables can reference this row using a . For example, an order in orders has a user_id — that’s how an order remembers its buyer. Those amber threads on the hologram are exactly these key-based links.

QUERY: As long as the key holds, the thread holds. A century and a half on, every order still remembers its person.

Run the query and see what Kotomarket’s buyers look like — records no one has opened since the days of the old Net:

Na chéad cheannaitheoirí de chuid «Kotomarket» sa tábla:
Query result
idfull_namecitysignup_date
1Артём ВолковСанкт-Петербург2024-10-20
2Екатерина АлексеевЕкатеринбург2025-01-25
3Николай НикитинАлматы2024-09-21
4Екатерина ИвановНовосибирск2024-05-04
5Елена ПетровКазань2025-01-05
6Ирина КузнецовНовосибирск2024-09-12

Cabhraíonn príomheochair leat sraith amháin a aimsiú gan botún (id de ghnáth). Nascann eochair eachtrach táblaí: mar shampla, taispeánann orders.user_id → users.id cé leis an t-ordú. Ar aghaidh osclóidh QUERY léarscáil iomlán an tseata os do chomhair — na cúig thábla ina n-iomláine.

usersidfull_namecityordersiduser_idstatususer_id → id
Tagraíonn an eochair eachtrach orders.user_id don phríomheochair users.id — sin mar a chuimhníonn ordú ar a cheannaitheoir.

Eochair nádúrtha nó ionadach

Cad as a dtagann an phríomheochair? Tá dhá bhealach ann. Is airí fíor a bhfuil sé uathúil cheana féin í eochair nádúrtha: email ceannaitheora, ISBN leabhair, cód airgeadra. Is aitheantóir saorga gan bhrí sa saol amuigh í eochair ionadach: uathuimhriú nó . Úsáideann «Kotomarket» luachanna id ionadacha i ngach áit — agus is gnáthrogha é sin:

-- Eochair ionadach: tugann an bunachar an chéad uimhir eile é féin (PostgreSQL)
CREATE TABLE users (
  id        BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  email     TEXT NOT NULL UNIQUE,  -- cónaíonn an t-iarrthóir nádúrtha lena thaobh mar UNIQUE
  full_name TEXT NOT NULL
);

Cén fáth mar seo? Príomhthréith na príomheochrach: níor cheart go n-athródh sí. Tagraíonn eochracha eachtracha táblaí eile don PK, agus tharraingeodh athrú a luacha nuashonrú gach snáithe leis san am céanna — in orders, in events, i ngach áit. Agus is ar éigean atá airíonna nádúrtha «síoraí» ann: athraíonn daoine a n-email agus a sloinne, aistrítear uimhreacha gutháin, athfhoilsítear fiú ISBNanna. Ní athraíonn id ionadach choíche — go díreach toisc nach gciallaíonn sé aon rud.

Na riachtanais d’aon phríomheochair: uathúil, ní NULL, cobhsaí. Fág eochracha nádúrtha do tháblaí tagartha beaga do-athraithe — cód an airgeadra 'RUB' ó ISO 4217, abair. Agus uathúlacht iarrthóra nádúrtha ar nós email, daingnigh í le srian UNIQUE ar leith, mar atá sa sampla thuas: seasann na naisc, fanann na sonraí macánta, agus ní choisctear ar an gceannaitheoir a email a athrú.

Ag dul chun cinn: is é an chomhréir féin chun táblaí agus srianta a chruthú (CREATE TABLE, PRIMARY KEY, UNIQUE) ábhar Chaibidil 9. Anseo, féach ar struchtúr na heochrach seachas ar an ordú: gur tháinig id ionadach ina phríomheochair, agus go gcónaíonn email lena thaobh mar UNIQUE.

Interview question

Ceist agallaimh: cén difríocht atá idir eochair ionadach agus eochair nádúrtha, agus cé acu a roghnódh tú do thábla úsáideoirí?

Freagra láidir: is airí fíor uathúil í an cheann nádúrtha (email, ISBN), is aitheantóir saorga í an cheann ionadach (colún IDENTITY). D’úsáideoirí — ionadach: níor cheart go n-athródh príomheochair toisc go dtagraíonn eochracha eachtracha di, agus athraíonn daoine a n-email. Daingnítear uathúlacht an email ansin le srian UNIQUE ar leith. Tá údar le heochair nádúrtha i dtáblaí tagartha cobhsaí ar nós cóid airgeadra ISO 4217.

Check yourself
Cad chuige a bhfuil eochair eachtrach (foreign key) de dhíth i mbunachar?