我正在使用铁轨预订停车位预订系统。以下是此问题的数据库架构的有趣表格和列。(我没有包含用户表,因为唯一相关的列是id列。)
`ActiveRecord::Schema.define(version: 20140430100754) do
create_table "bookings", force: true do |t|
t.integer "spot_id"
t.integer "user_id"
t.datetime "begins_at"
t.datetime "ends_at"
end
create_table "parkings", force: true do |t|
t.integer "owner_id"
t.string "address"
end
create_table "spots", force: true do |t|
t.integer "parking_id"
t.string "number"
end
end`
一开始预订系统很简单:用户可以预订有开始时间和结束时间的地点,在查询可用地点时,我会考虑现有的预订。
但是,我现在必须在每个位置添加可用性:一个停车位的所有者必须能够在他/她的位置可用时为一周中的每一天设置。我已经对如何将其存储在数据库中做了一些研究,但我没有发现任何接近的事情。 (只有简单的预订系统,比如我以前的系统)
以下是我必须解决的主要问题:
我的第一个问题是关于存储初始可用性信息的方式。
我能想到的唯一解决方案是每15分钟使用一次布尔值来存储它(七天内,这是672列,对我来说似乎不是一个开创性的想法)。那么您对如何存储它有什么建议,以及如何以有效的方式查询它以检查可用性?
我的第二个问题是关于预订表:
我想清理预订表,以免让它增长,(我担心它会减慢查询速度,以检查停车位和停车位的可用性)但是请将其存储在另一张桌子中以跟踪之前的预订(我不会经常查询)。这是一个好方法吗?
备注
我说我在使用Ruby on rails,但我认为这个问题与语言无关,而且更多的是数据库设计问题。