数据库是庞大的城市。

數據庫是一座巨大的城市。通過Rails設計城市,您可以直觀地理解數據庫。請試著通過城市的比喻自然地理解數據庫的結構和數據模型。

밤치 84

数据库就像一个巨大的城市 - 通过Rails设计城市并直观地理解数据库

我们迄今为止

将数据库(DB)比作抽屉或盒子。

这次,让我们去一个完全不同的世界。

让我们想象DB = 城市

城市有区域,有建筑物,

里面有许多房间。

  • Database = 整个城市

  • Table = 建筑物(Building)

  • Record = 房间(Room)

  • Column = 房间内的属性(大小、用途、价格等)

城市的比喻

是对DB的结构概念和

关系型数据模型

最自然的理解比喻。

现在,让我们通过Rails直接“设计城市”,

亲身体验DB是如何组织的。


第1部分 在名为DB的城市中建立第一座建筑物(Building)

在终端中:

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

这个命令可以这样解释:

“在城市(DB)中建造一座名为Building的建筑物。

建筑物有名称(name)和楼层(floors)这两个属性。”

Rails根据这个命令

在城市中建造建筑物,并定义每座建筑物共有的属性(格子)

现在我们的城市中

存在着名为Building的建筑物。


第2部分 使建筑物内能够创建“房间(Room)”

建筑物(Building)必须有实际的房间

人们才能居住,

也可以收取租金,

城市才有意义。

因此,让我们创建Room表。

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

这意味着:

“创建名为Room的房间,

并指示这些房间属于哪座Building(建筑物)。”

Rails会自动创建一个名为building_id的格子

将房间与建筑物连接

这就是

DB的关系(relationship)。

(在城市的比喻中,这是如此自然,无需解释!)


第3部分 教会Rails“建筑物和房间的关系”

app/models/building.rb

class Building < ApplicationRecord
  has_many :rooms
end

app/models/room.rb

class Room < ApplicationRecord
  belongs_to :building
end

现在Rails完全理解了。

  • 建筑物(Building)内有多个房间(Room)

  • 房间(Room)必定属于某座建筑物(Building)

在城市的比喻中

如此理所当然的结构

正是DB核心原则的体现。


第4部分 在控制台中直接“建造一座建筑物”

在Rails控制台中:

b = Building.create(name: "Star Tower", floors: 30)

在这里,我们

在城市(DB)中

建造了一座名为“Star Tower”的实际建筑物。


第5部分 在建筑物内创建房间(Room)

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

现在“Star Tower”建筑物内

有3个房间。

这一刻,

城市 → 建筑物 → 房间

这种结构

与DB的结构本质一一对应。


第6部分 让我们查看房间

(就像在城市中查看特定建筑物的房间列表一样)

b.rooms

Rails这样请求:

“展示这座建筑物(Building)的所有房间(Room)!”

DB会

在城市的100万座建筑物中

准确找到属于“Star Tower”的房间。

这就是数据库

像现代网络服务的‘城市行政系统’一样

能够快速而准确地管理所有数据的原因。


第7部分 根据特定属性查找房间

(就像房地产搜索一样)

Room.where(size: 33)

这个命令是:

“在整个城市中找到大小为33的房间。”

就像在网上搜索房间信息一样

DB会从成千上万个中

挑选出符合条件的房间。


第8部分 现在读者明白了

“啊…DB就是城市,

表就是建筑物,

记录就是房间,这说法太自然了。”

“实际上通过Rails建造城市的感觉,

让概念在脑海中清晰了。”

“那么我也可以像设计城市一样

设计网络服务的数据!?”

当产生这种感觉时,

DB不再是抽象的技术。

您现在是

具有建筑师思维的开发人员。

Comments

Add Comment

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

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.