Grundlegendes zu Ruby on Rails: SQL-Datenbanken und deren Funktionsweise

Nachdem wir uns mit Ruby vertraut gemacht hatten, mussten wir zunächst verstehen, wie das Web und der Anforderungs- / Antwortzyklus von Ruby on Rails funktionieren.

Jetzt ist es Zeit, mehr über Datenbanken und deren Verbindung mit Ruby on Rails zu erfahren. Grundsätzlich lautet die Antwort das Modell: das Mvon MVC, wie wir hier gelernt haben.

Bevor Sie die Webentwicklung mit Rails lernen, empfehle ich dringend, zuerst etwas über Ruby zu lernen .

Lass uns anfangen!

Was ist eine Datenbank?

Hmmm… Der erste Gedanke, der mir in den Sinn kommt, ist etwas, das Daten speichert.

Aber diese Definition ist ziemlich ungenau! Ein Array, ein Hash, eine verknüpfte Liste oder eine beliebige Datenstruktur kann Daten speichern.

Wenn Sie den Computer ausschalten, verlieren Sie alle Datenwerte, die in diesem Array gespeichert wurden (wie alle Datenstrukturen). Es ist also keine gute Idee, alle meine zu speichern precious data.

Wir müssen hier zwei Probleme lösen:

  1. Speichern Sie Daten und erhalten Sie sie, wann immer wir wollen.
  2. Speichern Sie Daten organisiert und strukturiert, damit wir sie problemlos abrufen können.

Soll ich alle Daten in einem Notizblock speichern? Fügen Sie einfach alle Informationen durch Kommas getrennt ein, speichern Sie die txt fileund fertig. Jetzt kann ich es öffnen und alle gewünschten Daten abrufen. Wir können Daten speichern und jederzeit abrufen ... Problem gelöst!

Wir haben dieses Problem gelöst, aber das andere haben wir verpasst. Jetzt sind alle Daten gespeichert und wir werden sie nicht verlieren. Aber es ist nicht gut in der Datei strukturiert. Wir brauchen die Regel, um Daten in einer organisierten und gut strukturierten Form zu speichern und abzurufen.

Lassen Sie uns darüber nachdenken, wie wir die Daten gut strukturiert organisieren können.

Was ist mit der Organisation aller Daten in Tabellen?

Hier ist also: Der Header der Tabelle ( Spaltenname: Vorname, Nachname, Adresse usw. ) enthält Werte, die wir speichern werden. Wenn wir beispielsweise die Zeichenfolge "Mickey" (den Wert) speichern möchten , wird sie in der Spalte "Vorname" gespeichert .

  • Tabelle : Sagen wir Leute
  • Spalten : Vorname , Nachname , Adresse usw.
  • Zeilen : In diesem Fall können wir sagen, dass eine Zeile eine Person mit beispielsweise dem Vornamen „ Mickey “ und dem Nachnamen „ Mouse “, der Adresse „123 Fantasy Way “ usw. sein kann.
  • Felder : Alle in der Datenbank gespeicherten Daten.

Und jetzt haben wir eine gut strukturierte Möglichkeit, Daten zu speichern : in einer Tabelle!

Wie wäre es, Daten abzurufen, zu löschen, einzufügen und zu aktualisieren?

Wir werden SQL-Sprache verwenden ( ich werde NoSQL-Welt nicht erwähnen! ), Um die Daten zu manipulieren. Lassen Sie uns die Grundlagen bekommen.

  1. GET: Wenn wir alle Daten ( Personen ) aus der Personentabelle abrufen möchten , müssen wir sie aus dieser Tabelle auswählen.

Das Symbol ( *) bedeutet, dass alle Spalten aus der Personentabelle ausgewählt werden. Wenn wir alle Spalten erhalten können, können wir angeben, welche Spalten wir für diese Auswahl benötigen.

2. LÖSCHEN: Wir möchten alle Daten aus unserer Personentabelle löschen .

Es ist jedoch nicht üblich, alle Daten aus einer Tabelle zu löschen. Zum Löschen verwenden wir normalerweise eine Bedingung wie "Ich möchte alle Personen unter 21 Jahren löschen". Wir werden später in diesem Beitrag erfahren, wie!

3. EINFÜGEN: Wir werden Daten in die Tabelle einfügen / speichern.

oder wir können angeben, in welche Spalten Daten eingefügt werden sollen.

4. UPDATE: Wir haben die Daten gespeichert, möchten sie aber aktualisieren.

Bedingungen in unseren Abfragen verwenden

Jetzt können wir die SQL-Sprache verwenden, um Daten abzufragen (auswählen, löschen, einfügen, aktualisieren).

  • Aber was ist, wenn wir nur Datensätze mit dem Nachnamen Kinoshita löschen möchten ?
  • Oder wenn wir eine bestimmte Person mit Vorname Leandro und Nachname Kinoshita aktualisieren möchten ?
  • Oder wählen Sie einfach alle Daten aus der Personentabelle aus und sortieren Sie sie nach Alter von jünger bis älter?

Ja, wir verwenden Bedingungen wie wo und bestellen nach und Betreiber mögen oder und und . Sehen wir uns einige Beispiele an:

  • Löschen aller Datensätze aus der Personentabelle mit dem Nachnamen Kinoshita .
  • Aktualisieren aller Datensätze aus der Personentabelle mit dem Vornamen Leandro und dem Nachnamen Kinoshita .
  • Auswahl aller Datensätze aus der Personentabelle, aber Reihenfolge nach Alter (in aufsteigender Reihenfolge → ASC).

Beziehung zwischen Tabellen

Wir wissen, wie man Abfragen ausführt (mit oder ohne Bedingungen). Lassen Sie uns verstehen, wie die Beziehungen der Tabellen funktionieren.

  • Eins zu Eins (1–1) : Es geht um eine Beziehung zwischen zwei Tabellen, in die eine nur zur anderen gehören kann. zB Eine Person hat einen Pass und dieser Pass gehört dieser bestimmten Person. In diesem Beispiel haben wir also die Tabelle People, die Tabelle Passports und eine 1–1-Beziehung.
  • Eins zu viele (1-n) : Es handelt sich um eine Beziehung zwischen zwei Tabellen, in der ein Datensatz aus einer Tabelle auf viele Datensätze aus einer anderen Tabelle verweisen kann. zB Stellen Sie sich eine E-Commerce - Plattform: Nutzer, Bestellungen, Produkte, Zahlungen usw. Ein Benutzer viele Aufträge haben kann, und jeder Auftrag gehört zu diesem spezifischen Benutzer. In diesem Beispiel haben wir also Tabellenbenutzer, Tabellenreihenfolgen und eine 1-n-Beziehung.
  • Viele zu Viele (nn) : Es handelt sich um eine Beziehung zwischen zwei Tabellen, in der ein Datensatz aus einer Tabelle auf viele Datensätze aus einer anderen Tabelle verweisen kann. Und ein Datensatz von einem anderen kann auch auf viele Datensätze von einem verweisen. zB Wir haben wieder die E-Commerce-Plattform: Wir unterteilen Produkte in Kategorien. Eine Kategorie hat viele Produkte (Kategorie Technologie hat viele Produkte wie Handys, Notebooks usw.) und ein Produkt kann zu vielen Kategorien gehören (Produkt Handy gehört zu den Kategorien Technologie und Elektronik). In diesem Beispiel haben wir also Tabellenprodukte, Tabellenkategorien und eine nn-Beziehung.

Schienenmodus EIN

Wir verstehen jetzt die Bedeutung von Datenbanken, haben einige grundlegende Abfragen ausprobiert und über die Beziehung zwischen Tabellen gesprochen. Aber wie können wir dieses Wissen in der Ruby on Rails- und Webentwicklungswelt nutzen ?

Zuallererst: Rails ist Rails . Die Datenbank ist Datenbank . Ist es offensichtlich? Aber die Leute sind normalerweise verwirrt.

Ein User - Modell kann eine repräsentieren Benutzer - Tabelle. Aber das Modell ist nicht der Tisch.

  • In der Datenbank haben wir Tabellen und Zeilen.
  • Auf Schienen haben wir Modelle (Klassen) und Objekte.

Stellen Sie sich eine Blog-Site vor. Der Blog benötigt für jeden Beitrag einen Autor. Also erstellen wir eine Authors- Tabelle mit einigen Spalten (Vorname, Nachname usw.):

In der Migration, fügen wir Spalten first_name, last_name, email, birthday, created_at, und updated_at. ( created_atund updated_atwerden vom t.timestampsCode erstellt).

Also haben wir eine Migration (Ruby - Code) erstellen, die ausgeführt rake db:migrateBefehl im Terminal, und es erzeugt eine Tabelle Authorsmit first_name, last_name, email, birthday, created_at, und updated_atSpalten.

Zurück zu den Schienen - wir können ein AuthorModell erstellen :

Jetzt haben wir eine AuthorsTabelle mit einigen Spalten und einem AuthorModell.

Verwenden der Rails-Konsole

Öffnen Sie das Terminal und geben Sie ein bundle exec rails c. Denken Sie daran, wir befinden uns in der RAILS- Konsole, also haben wir Klassen, Objekte, Attribute usw.

Beziehungen auf Schienen

Wir haben eine AuthorsTabelle / ein Modell erstellt. Was wir jetzt brauchen, ist eine PostsTabelle / ein Modell. Ein Autor hat viele Beiträge und ein Beitrag gehört einem bestimmten Autor. Die Beziehung hier ist eins zu viele ( 1-n ). Merken?

Wenn wir also eine PostsTabelle erstellen , müssen wir einen Verweis auf den Autor des Posts speichern (Spalte author_id in der Posts- Tabelle). Es ist bekannt als die Foreign Key.

Und wie verhalten wir die Modelle?

Autor has_manyBeiträge

Beitrag gehört einem Autor

Verwenden der Rails-Konsole

* Schnelle Erklärung zu has_manyund belongs_to. Beides codessind Methoden, die für die ActiveRecordKlasse definiert sind . Sie können sehen, dass wir unsere Modelle erstellen, von denen wir erben ActiveRecord::Base.

Erinnern Sie sich in meinem Ruby Foundation-Artikel daran, dass wir etwas über objektorientierte Programmierung, den Vererbungsteil, gelernt haben? Aus diesem Grund können wir verwenden has_manyund belongs_toMethoden ohne es überall auf unsere Anwendung zu definieren. Rails erledigt das für uns.

Wenn Sie dieses Konzept genau verstehen möchten, klonen Sie das Rails-Repo oder sehen Sie sich die Hinter den Kulissen der Active Record Association "Has Many" an.

Abfragen auf Schienen

Wir können mit ActiveRecord-Methoden abfragen:

  • all : Ruft alle Objekte aus einem bestimmten Modell ab.

Hinter den Kulissen wird die SELECT * FROM postsAbfrage ausgeführt.

  • find : Mit find können wir das Objekt anhand der ID (Primärschlüssel) abrufen.

Hinter den Kulissen wird eine SELECT * FROM posts WHERE id = 1Abfrage ausgeführt.

  • wo : Holen Sie sich die Objekte, die die Bedingungen erfüllen.

Hinter den Kulissen wird eine SELECT * FROM posts WHERE title = 'Database & Rails'Abfrage ausgeführt.

  • Reihenfolge : Sortieren Sie alle Objekte nach einer Spalte.

Hinter den Kulissen wird eine SELECT * FROM posts ORDER BY created_at DESCAbfrage ausgeführt.

Das ist alles!

Wir haben hier viel gelernt. Ich hoffe, ihr schätzt den Inhalt und erfährt mehr über die Funktionsweise der Databases and Rails-Modelle.

Dies ist ein weiterer Schritt vorwärts auf meinem Weg zum Erlernen und Beherrschen von Rails und Webentwicklung. Die Dokumentation meiner gesamten Reise finden Sie hier in meiner Renaissance Developer-Publikation .

Wenn Sie einen vollständigen Ruby and Rails-Kurs wünschen, echte Codierungsfähigkeiten erlernen und Projekte erstellen möchten, probieren Sie das einmonatige Ruby Bootcamp ausund Rails Bootcamp . Wir sehen uns dort ☺

Viel Spaß und lerne und programmiere weiter.

Mein Twitter & Github. ☺