我正在尝试为乘坐飞机旅行的乘客开发数据/对象模型 用语言:
we have customers who make reservations to take trips.
我很难确定是否应该有两个对象/模型:客户和旅行或三个:客户,预订和旅行。
我相信我的困惑源于这样一个事实:随着时间的推移,预订会变成一次旅行。这个事实让我觉得最好只有两个模型:Customer和Trip。在这种情况下,Trip将属于customer,并具有以下样本属性:customer_id,reservation_number,destination,travel_date等。
我采用这种方法的问题是预订更改并被取消,我有点不愿意在旅行日期,目的地或取消等方面改变旅行模式。
更新:这里有关于旅行(飞行)的更多信息 感兴趣的项目:乘客人数,出发时间,着陆时间,飞行时间,取消次数,目的地,行驶里程,机票费用,准时到达标志,天气状况。旅行/航班可以被航空公司取消,天气和预订可以由客户取消直至旅行/飞行时间。
也许我所缺少的是一种将预订转换为旅行(票证?)的第四种模式。
所以我的问题。
问题是我描述了具有首选设计模式的特定类型的数据模型,如果是,那么模式和解决方案是什么。
比我更有经验的其他人如何解决这个问题。
我碰巧在rails / activerecord上使用ruby进行开发,但这个问题适用于任何开发框架。
感谢您的投入。
答案 0 :(得分:1)
看起来客户已经很多次旅行并且旅行中有许多客户,这是一种多方关系。
models/customer.rb
class Customer < ActiveRecord::Base
has_many :reservations
has_many :trips, :through => :reservations
end
models/trip.rb
class Trip < ActiveRecord::Base
has_many :reservations
has_many :customers, :through => :reservations
end
models/reservation.rb
class Reservation < ActiveRecord::Base
belongs_to :customer
belongs_to :trip
end
预订和门票对我来说似乎是一样的,所以我认为你不需要单独的Ticket
模型。
答案 1 :(得分:1)
我强烈建议先创建domain model并忽略所有实现。当您完成domain model并准备开始开发时,持久性机制和编程环境将变得相关。
答案 2 :(得分:1)
在这样的系统中,通常最好在 Reservation 实体和 Trip 实体之间进行明确分离。回答这些问题可以帮助您设计系统:
如果你对这些问题回答'是',那么你想象一下这样的设计:
Trip UML Class diagram http://app.genmymodel.com/engine/xaelis/trip.jpg
您可以制作副本并使用此link修改模型。
答案 3 :(得分:1)
问自己两个问题:
预订可能更为明显:谁进行了预订(与客户联系),何时进行预订,是否已付款/取消/等等。
旅行不太清楚。旅行是否组织有例如开始/结束日期?每次旅行都有最大容量(即最大预订数量?)。每次旅行都有价格吗?多人可以预订同一次旅行吗?旅行可以取消吗?取消旅行不同于取消预订吗?如果旅行取消,预订会怎样?
其次,您如何描述当预订“转换”为旅行时会发生什么。你真的只是说客户参加了这次旅行吗?如果它转换,您是否仍然关心您捕获的所有预订信息?
强烈的感觉说旅行和预订是不同的事情。也许“过渡”实际上是客户和旅行之间缺失的关系,记录了客户实际旅行的时间。
这将取决于明确上述问题。
第h