A Ruby on Rails alapjainak megértése: SQL adatbázisok és működésük

Miután megismerte a Ruby-t, az első lépésként megértettük, hogyan működik az internet és a Ruby on Rails kérés-válasz ciklus.

Itt az ideje, hogy megismerje az adatbázisokat és hogyan kapcsolódnak a Ruby on Rails-hez. Alapvetően a válasz a Modell: a Mtól MVC, amint itt megtudtuk.

Mielőtt megtanulná a webes fejlesztést a Rails használatával, azt javaslom, hogy először ismerje meg a Rubyt .

Kezdjük!

Mi az adatbázis?

Hmmm ... Az első gondolat, ami eszembe jut, az adatok tárolása.

De ez a meghatározás meglehetősen pontatlan! Egy tömb, egy kivonat, egy összekapcsolt lista vagy bármilyen adatstruktúra lehet valami, amely képes adatokat tárolni.

A számítógép kikapcsolásakor elveszíti az összes tömbben tárolt adatértéket (ugyanaz, mint az összes adatstruktúra). Tehát nem jó ötlet az összes saját tárolni precious data.

Két problémát kell itt megoldanunk:

  1. Tárolja az adatokat, és bármikor megszerezheti.
  2. Az adatokat szervezett és strukturált módon tárolja, így könnyedén megszerezhetjük azokat.

Tároljak minden adatot egy jegyzettömbben? Csak vessen bele minden információt vesszővel elválasztva, mentse el txt fileés kész. Most kinyithatom és megszerezhetem az összes kívánt adatot. Adatokat tárolhatunk és bármikor megszerezhetünk ... a probléma megoldódott!

Megoldottuk ezt a problémát, de hiányzott a másik. Most minden adatot tárolunk, és nem veszítjük el. De nincs jól felépítve a fájlban. Szükségünk van a szabályra az adatok szervezett és jól strukturált formában történő tárolásához és megszerzéséhez.

Gondoljuk át, hogyan szervezhetjük az adatokat jól strukturált módon.

Mi a helyzet az összes adat táblázatokba rendezésével?

Tehát itt van: a táblázat fejléce ( oszlopnév: keresztnév, vezetéknév, cím stb. ) Tartalmaz értékeket, amelyeket tárolni fogunk. Például, ha el akarjuk tárolni a „Mickey” karakterláncot (az értéket) , akkor az a „Keresztnév” oszlopban lesz tárolva .

  • Táblázat : mondjuk Emberek
  • Oszlopok : keresztnév , vezetéknév , cím stb
  • Sorok : ebben az esetben azt mondhatjuk, hogy egy sor lehet olyan személy, akinek például keresztneve „ Mickey ” és vezetékneve „ Egér ”, címe „123 Fantasy Way ” stb.
  • Mezők : az adatbázisban tárolt összes adat.

Most pedig jól strukturált módon tárolhatjuk az adatokat : egy táblázatban!

Mi a helyzet az adatok megszerzésével, törlésével, beillesztésével és frissítésével?

Az adatok manipulálásához SQL nyelvet fogunk használni ( nem említem a NoSQL világot! ). Nézzük meg az alapokat.

  1. GET: ha minden adatot ( személyt ) meg akarunk szerezni a People táblából, akkor azt ki kell választanunk abból a táblázatból.

A ( *) szimbólum azt jelenti, hogy az összes oszlopot kiválasztja a People táblázatból. Ha megkapjuk az összes oszlopot, megadhatjuk, hogy mely oszlopokra van szükségünk ehhez a kijelöléshez.

2. TÖRLÉS: törölni akarunk minden adatot a People táblázatunkból.

De nem általános az összes adat törlése egy táblázatból. A törléshez általában egy feltételt használunk, például: „Minden 21 évnél fiatalabb embert törölni szeretnék.” Ezt később megtudhatjuk ebben a bejegyzésben!

3. INSERT: adatokat illesztünk / tárolunk a táblázatba.

vagy megadhatjuk, hogy mely oszlopokba szeretnénk adatokat beilleszteni.

4. UPDATE: tároltuk az adatokat, de frissíteni szeretnénk.

Feltételek használata lekérdezéseinkben

Most SQL nyelvet használhatunk az adatok lekérdezéséhez (kijelöléséhez, törléséhez, beillesztéséhez, frissítéséhez).

  • De mi van akkor, ha csak a Kinoshita vezetéknevű rekordokat akarjuk törölni ?
  • Vagy ha egy adott személyt Leandro és Kinoshita vezetéknévvel szeretnénk frissíteni ?
  • Vagy csak válassza ki az összes adatot az emberek táblázatból, és rendezze kor szerint fiatalabbaktól idősebbekig?

Igen, olyan feltételeket használunk, mint a hol és a megrendelés, valamint az operátorok, vagy a és a és . Lássunk néhány példát:

  • Az összes rekord törlése a Kinoshita vezetéknevű személytáblázatból .
  • Az emberek tábla összes rekordjának frissítése Leandro és Kinoshita vezetéknévvel .
  • Az összes rekord kiválasztása az emberek táblázatból, de életkor szerinti sorrend (növekvő sorrendben → ASC).

A táblák közötti kapcsolat

Tudjuk, hogyan kell végrehajtani a lekérdezéseket (feltételekkel vagy feltételek nélkül). Értsük meg, hogyan működnek a táblázatok kapcsolatai.

  • Egytől egyig (1–1) : két tábla közötti kapcsolatról szól, amelyben az egyik csak a másiké lehet. pl. egy személynek van egy útlevele, és ez az útlevél az adott személyé. Tehát ebben a példában van táblázat People, tábla útlevelek és 1–1 kapcsolat.
  • Egy a sokhoz (1-n) : két tábla közötti kapcsolatról szól, amelyben az egyik tábla rekordja sok más rekordra hivatkozhat. Pl. képzeljen el egy e-kereskedelmi platformot: felhasználók, megrendelések, termékek, fizetések stb. Egy felhasználónak sok megrendelése lehet, és minden megrendelés az adott felhasználóhoz tartozik. Tehát ebben a példában van tábla Felhasználók, tábla Rendelések és 1-n kapcsolat.
  • Many to Many (nn) : két tábla közötti kapcsolatról szól, amelyben az egyik tábla rekordja sok más rekordra hivatkozhat. És egy másik lemez egy sok rekordra is hivatkozhat. pl. Megint van az e-kereskedelmi platform: kategóriákra osztjuk a termékeket. Egy kategóriának sok terméke van (a Technology kategóriában sok olyan termék van, mint a mobiltelefon, notebook stb.), És egy termék számos kategóriába tartozhat (a Cellphone termék a technológiai és elektronikai kategóriába tartozik). Tehát ebben a példában táblázatok, táblák kategóriái és nn kapcsolata van.

Rails mód BE

Most már megértettük az adatbázisok jelentését, kipróbáltunk néhány alapvető kérdést, és beszéltünk a táblák közötti kapcsolatról. De hogyan használhatjuk fel ezeket az ismereteket a Ruby on Rails és a webfejlesztő világban ?

Először is: a Rails a Rails . Az adatbázis az adatbázis . Nyilvánvaló? De az emberek általában összezavarodnak ebben.

A felhasználó modell is képviselnek Felhasználók asztalra. De a modell nem az asztal.

  • Az adatbázisban vannak tábláink és soraink.
  • A síneken vannak modelljeink (osztályaink) és tárgyaink.

Képzeljünk el egy blogot. A blognak minden egyes bejegyzéshez szerzőre van szüksége. Tehát létrehozunk egy Szerzők táblázatot néhány oszloppal (keresztnév, vezetéknév stb.):

A migráció, hozzátesszük oszlopok first_name, last_name, email, birthday, created_at, és updated_at. ( created_atés updated_ata t.timestampskód hozza létre ).

Így hozunk létre egy migrációs (Ruby kód), futtassa a rake db:migrateparancsot a terminálban, és létrehoz egy táblázatot Authorsaz first_name, last_name, email, birthday, created_at, és updated_atoszlopok.

Vissza a sínekhez - Authormodellt készíthetünk :

Tehát most van egy Authorstáblázat néhány oszloppal és egy Authormodell.

A Rails konzol használata

Nyissa meg a terminált és írja be bundle exec rails c. Ne feledje, hogy a RAILS konzolban vagyunk, tehát vannak osztályaink, objektumaink, attribútumaink stb.

Kapcsolatok a síneken

Készítettünk egy Authorstáblázatot / modellt. Amire most szükségünk van, az egy Poststáblázat / modell. Egy szerzőnek sok bejegyzése van, és egy bejegyzés egy adott szerzőhöz tartozik. A kapcsolat itt egy a sokhoz ( 1-n ). Emlékezik?

Tehát amikor létrehozunk egy Poststáblázatot, tárolnunk kell egy hivatkozást a bejegyzés szerzőjére (a szerző_azonosító oszlop a Bejegyzések táblázatban). Ez a Foreign Key.

És hogyan viszonyítjuk a modelleket?

szerzői has_manybejegyzések

a post tartozik egy szerzőhöz

A Rails konzol használata

* Gyors magyarázat a has_manyés belongs_to. Mindkettő codesaz ActiveRecordosztályon meghatározott módszer . Láthatja, hogy a mi modelljeinket örököltük ActiveRecord::Base.

Ne feledje a Ruby Foundation cikkemben, hogy megismertük az objektumorientált programozást, az öröklődés részt? Ezért használhatunk has_manyés belongs_tomódszereket anélkül, hogy azt bárhol meghatároznánk az alkalmazásunkon. A Rails megoldja nekünk.

Ha mélyen meg akarja érteni ezt a koncepciót, klónozza a Rails repót, vagy nézze meg a "Van sok" aktív felvétel egyesület kulisszái mögött.

Lekérdezések a síneken

Lekérdezhetünk az ActiveRecord módszerekkel:

  • all : Minden objektum beszerzése egy adott modelltől.

A kulisszák mögött végrehajtja a SELECT * FROM postslekérdezést.

  • find : A find használatával megkapjuk az objektumot az id (elsődleges kulcs) alapján.

A kulisszák mögött SELECT * FROM posts WHERE id = 1lekérdezést hajt végre .

  • hol : Szerezd meg azokat az objektumokat, amelyek megfelelnek a feltételeknek.

A kulisszák mögött SELECT * FROM posts WHERE title = 'Database & Rails'lekérdezést hajt végre .

  • sorrend : Az összes objektum rendezése oszlop alapján.

A kulisszák mögött SELECT * FROM posts ORDER BY created_at DESClekérdezést hajt végre .

Ez minden!

Sokat tanultunk itt. Remélem, srácok értékelik a tartalmat, és többet megtudhatnak az adatbázisok és a sínek modelljeinek működéséről.

Ez még egy lépés előre a Rails és a webfejlesztés elsajátítása és elsajátítása terén. A teljes utam dokumentációját itt tekintheti meg a Renaissance Developer kiadványomon .

Ha szeretne egy teljes Ruby and Rails tanfolyamot, tanuljon valós kódolási készségeket és építsen projekteket, próbálja ki az Egy hónap Ruby Bootcampés a Rails Bootcamp . Találkozunk ott ☺

Érezd jól magad, és tanulj tovább és kódolj.

Saját Twitter és Github. ☺