La base de datos es una ciudad gigante.

La base de datos es una ciudad gigante. Al diseñar una ciudad con Rails, puedes entender la base de datos de forma intuitiva. Intenta entender la estructura y el modelo de datos de la base de datos de forma natural con la metáfora de la ciudad.

bamchi 490

La base de datos es una ciudad gigante: diseñando una ciudad con Rails para comprender intuitivamente la base de datos

Hasta ahora, hemos comparado la base de datos (DB) con un armario o una caja.

Esta vez, vamos a un mundo completamente diferente.

Pensemos en DB = ciudad.

Una ciudad tiene zonas, edificios, y dentro de ellos, muchas habitaciones.

  • Base de datos = ciudad entera

  • Tabla = edificio

  • Registro = habitación

  • Columna = atributos de la habitación (tamaño, uso, precio, etc.)

La metáfora de la ciudad es la metáfora más natural para entender los conceptos estructurales de la base de datos y el modelo de datos relacional.

Ahora, diseñemos directamente una "ciudad" con Rails y experimentemos cómo se estructura la base de datos.


Parte 1. Construyendo el primer edificio en la ciudad llamada DB

En la terminal:

rails generate model Building name:string floors:integer
rails db:migrate

Esta orden se puede interpretar así.

"Voy a construir un edificio llamado Building en la ciudad (DB).

El edificio tiene dos atributos: nombre (name) y número de pisos (floors)."

Rails, basándose en esta orden, construye edificios en la ciudad y define los atributos comunes (habitaciones) de cada edificio.

Ahora, en nuestra ciudad, existe un edificio llamado Building.


Parte 2. Permitir la creación de "habitaciones" dentro del edificio

Para que las personas puedan vivir en un edificio (Building) y se puedan cobrar alquileres, y para que la ciudad tenga sentido, creemos la tabla de habitaciones (Room).

rails generate model Room number:string size:integer building:references
rails db:migrate

Esto significa:

"Creemos una habitación llamada Room,

y mostrémos a qué Building (edificio) pertenecen esas habitaciones."

Rails automáticamente crea una columna llamada building_id para conectar las habitaciones con el edificio al que pertenecen.

Esto es la relación de la base de datos.

(Tan natural en la metáfora de la ciudad que casi no necesita explicación).


Parte 3. Enseñando a Rails la "relación entre edificios y habitaciones"

app/models/building.rb

class Building < ApplicationRecord
  has_many :rooms
end

app/models/room.rb

class Room < ApplicationRecord
  belongs_to :building
end

Ahora Rails lo entiende completamente.

  • Un edificio (Building) tiene varias habitaciones (Room)

  • Una habitación (Room) pertenece necesariamente a un edificio (Building)

En la metáfora de la ciudad, es el momento en que te das cuenta de que la estructura tan obvia es el principio fundamental de la base de datos.


Parte 4. Construyendo un "edificio" directamente en la Consola

En la consola de Rails:

b = Building.create(name: "Torre Estelar", floors: 30)

Aquí, en nuestra ciudad (DB), hemos construido un edificio real llamado 'Torre Estelar'.


Parte 5. Creando habitaciones en el edificio

b.rooms.create(number: "101", size: 28)
b.rooms.create(number: "102", size: 33)
b.rooms.create(number: "201", size: 40)

Ahora, en el edificio 'Torre Estelar', se han creado 3 habitaciones.

En este momento, la estructura ciudad -> edificio -> habitación se alinea perfectamente con la esencia estructural de la base de datos.


Parte 6. Veamos las habitaciones

(Sentirse como si estuvieras viendo la lista de habitaciones de un edificio en la ciudad)

b.rooms

Rails solicita esto.

"¡Muéstrame todas las habitaciones de este edificio (Building)!"

La base de datos, entre los millones de edificios de la ciudad, encuentra exactamente las habitaciones que pertenecen a la 'Torre Estelar'.

Esta es la razón por la cual la base de datos puede administrar todos los datos de manera rápida y precisa como el 'sistema administrativo de la ciudad' de los servicios web modernos.


Parte 7. Encontrar habitaciones basadas en atributos específicos

(Sensación de búsqueda de bienes raíces)

Room.where(size: 33)

Esta orden significa:

"Encuentra todas las habitaciones en la ciudad donde el tamaño es 33."

Al igual que buscar información de una habitación en la web, la base de datos selecciona solo las habitaciones que cumplen con las condiciones de entre miles o incluso millones.


Parte 8. Ahora, el lector entiende

"Ah... la base de datos es una ciudad,

la tabla es un edificio,

y el registro es una habitación, todo tiene tanto sentido."

"De hecho, construir una ciudad con Rails

hace que los conceptos sean más claros en mi mente."

"Entonces, ¿podría diseñar los datos de un servicio web

como diseñaría una ciudad?"

En el momento en que sientes esto,

la base de datos ya no es una tecnología abstracta.

Ahora eres un desarrollador con la mentalidad de un arquitecto.

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Sigue leyendo

Get notified of new posts

We'll email you when Bamchi Blog publishes new content.

Your email will only be used for new post notifications.