La base de données est une grande ville - Concevoir une ville avec Rails pour comprendre intuitivement la base de données
Jusqu'à présent,
Nous avons comparé la base de données (DB) à une armoire ou une boîte.
Cette fois, allons dans un monde complètement différent.
Pensons que DB = ville.
Une ville a des zones, des bâtiments,
Et à l'intérieur, il y a de nombreuses chambres.
Base de données = Ville entière
Table = Bâtiment
Enregistrement = Chambre
Colonne = Attributs de la chambre (taille, utilisation, prix, etc.)
La métaphore de la ville est
La métaphore la plus naturelle pour comprendre
Les concepts structurels de la DB
Et le modèle de données relationnel.
Maintenant, concevons directement une "ville" avec Rails
Et expérimentons directement comment la DB est structurée.
Partie 1. Construire le premier bâtiment dans la ville appelée DB
Dans le terminal:
rails generate model Building name:string floors:integer
rails db:migrate
Cette commande peut être interprétée comme suit.
"Je vais construire un bâtiment appelé Building dans la ville (DB).
Le bâtiment a deux attributs: nom (name) et nombre d'étages (floors)."
Rails, sur la base de cette commande,
Construit des bâtiments dans la ville et définit les attributs communs (chambres) pour chaque bâtiment.
Maintenant, dans notre ville,
Il y a un bâtiment appelé Building.
Partie 2. Permettre la création de "chambres" dans le bâtiment
Il doit y avoir des chambres dans le bâtiment
Pour que les gens puissent y vivre,
Pouvoir les louer,
Et pour que la ville ait un sens.
Créons donc une table Room.
rails generate model Room number:string size:integer building:references
rails db:migrate
Cela signifie:
"Crée une chambre appelée Room
Et montre à quelle Building (bâtiment) elle appartient."
Rails crée automatiquement une colonne appelée building_id
Pour relier les chambres au bâtiment auquel elles appartiennent.
C'est la
Relation de la DB.
(Tellement naturel dans la métaphore de la ville qu'il n'est pas nécessaire d'expliquer!)
Partie 3. Apprendre à Rails la "relation entre les bâtiments et les chambres"
app/models/building.rb
class Building < ApplicationRecord
has_many :rooms
end
app/models/room.rb
class Room < ApplicationRecord
belongs_to :building
end
Maintenant, Rails comprend complètement.
Il y a plusieurs chambres dans le bâtiment
Chaque chambre appartient nécessairement à un bâtiment
Dans la métaphore de la ville,
La structure tellement évidente
Est le principe fondamental de la DB.
Partie 4. Construire un "bâtiment" directement dans la console
Dans la console Rails:
b = Building.create(name: "Star Tower", floors: 30)
Ici,
Dans la ville (DB)
Nous avons construit un vrai bâtiment appelé "Star Tower".
Partie 5. Créer des "chambres" dans le bâtiment
b.rooms.create(number: "101", size: 28)
b.rooms.create(number: "102", size: 33)
b.rooms.create(number: "201", size: 40)
Maintenant, dans le bâtiment "Star Tower",
Il y a 3 chambres.
À ce moment-là,
La structure de la ville → bâtiment → chambre
Correspond parfaitement à
L'essence structurelle de la DB.
Partie 6. Examinons les chambres
(Comme regarder la liste des chambres d'un bâtiment dans la ville)
b.rooms
Rails demande ainsi.
"Montre-moi toutes les chambres de ce bâtiment!"
La DB
Parmi les millions de bâtiments de la ville
Trouve précisément les chambres appartenant à "Star Tower".
C'est pourquoi la base de données
Est comme un "système administratif de la ville"
Qui peut gérer rapidement et précisément toutes les données des services web modernes.
Partie 7. Trouver des chambres en fonction d'un attribut spécifique
(Sensation de recherche immobilière)
Room.where(size: 33)
Cette commande dit:
"Trouve toutes les chambres de la ville dont la taille est de 33."
Comme chercher des informations sur les chambres en ligne,
La DB sélectionne parmi des milliers, voire des millions,
Les chambres qui répondent aux critères.
Partie 8. Maintenant, le lecteur comprend
"Ah... La DB est une ville,
Les tables sont des bâtiments,
Et les enregistrements sont des chambres, c'est si naturel.""En fait, construire une ville avec Rails
Aide vraiment à comprendre les concepts.""Alors je pourrais concevoir les données d'un service web
Comme je conçois une ville !?"
À ce moment-là,
La DB n'est plus une technologie abstraite.
Vous êtes maintenant
Un développeur avec la pensée d'un architecte.