复杂嵌套RoR预留系统的性能问题

时间:2012-01-11 03:10:08

标签: ruby-on-rails database-design

我正在为我们的小型旅行社设计一个Ruby on Rails预订系统。它需要容纳许多东西,表结构变得非常复杂。

之前有没有人遇到过类似的问题?我可能遇到什么样的问题?性能/验证可能会成为问题吗?

简单来说,我有一个客户表和一个预订表。当客户通过查询联系我们时,会设置预订,并添加相关信息(例如,付费/开具发票,需要运输,需要酒店等)。

到目前为止一直很好,但这是复杂的地方。在每次预订下,顾客可以预订不同的套餐(例如一日游,长途旅行,培训课程)。这些是完全不同的,需要特定的信息,并且数量有限,因此我觉得他们每个人都应该有不同的模型。

此外,客户可能在他的聚会中有几个人。这将导致客户表和预订表之间以及客户表和包表之间的链接。

因此,如果客户A要为客户A,B和C进行长途旅行预订,以及为客户B预订培训课程,那么看起来就像这样。

CUSTOMERS TABLE
CustomerA
CustomerB
CustomerC
CustomerD
CustomerE
etc

RESERVATIONS TABLE
1. CustomerA

LONG TRIP BOOKINGS
CustomerA - Reservation_ID 1
CustomerB - Reservation_ID 1
CustomerC - Reservation_ID 1

TRAINING COURSE BOOKINGS
CustomerB - Reservation_ID 1

这是一个非常简化的示例,省略了一些细节。例如,会有一个模型包含培训课程的详细信息,包含长途旅行详细信息的模型,包含长途旅行计划的模型等。但是这个细节不应该影响我的问题。

我想知道的是:

1)在将客户表与预订模型以及预订中嵌套的预订模型相关联时,我是否应该注意任何问题。

2)如果我需要处理有关预订本身的信息(包括发票)以及特定的套餐预订,这是最好的方法。

一方面,这种方法似乎很复杂,但另一方面,将所有内容简化为单个包模型似乎没有提供足够的灵活性。

如果我没有非常清楚地解释这个问题,请告诉我,我很乐意提供更多信息。感谢任何可以帮助我思考这个相当复杂的数据库设计的想法,建议或评论。

非常感谢!

1 个答案:

答案 0 :(得分:2)

我为旅行社和批发商建立了一个庞大的预订系统,我可以告诉你,这并不容易。似乎存在相似性,但预订的产品种类仍有很大差异。此外,日期敏感度与其他系统有很大差异。

1)对于“客户”,我通常使用不同的模型来表示不同的概念。你真的有:

  • 一个。支付预订的人/公司
  • 湾紧急联系人
  • ℃。旅行的人

a& b看起来是一样的,但如果您有代理预订,那么您可能想要将它们分开。

我通常使用a => '客户'表,然后是b的一些简单联系字段,最后是c使用'乘客'表。这些可以设置为同一模型的不同关联,但我认为它们足够不同,我倾向于将它们分开 - 也许使用公共地址/联系模型。

2)我认为这很好,但取决于你的需求。如果您正在为旅行者建立行程,那么在“预订”中设置“乘客”,然后为个别行程项目设置,以及乘客正在/使用该项目的链接是有意义的。

这更复杂,您必须小心跟踪依赖关系,但另一种方法是不跟踪乘客姓名,只需为每个项目分配数量(1xAdult,2xChildren)。后一种方法非常适合小型预订,因此它似乎取决于您的预订是否简单,或者通常是由更长的行程构成。

其他)此外,对于不同产品类型的不同型号,这可以很好地工作。但是,往往会有很多交叉,所以某种常见的“资源”模型可能会更好 - 或者其他一些捕获常见行为的方法。

如果我没有回答您的问题,请询问更具体的数据库设计问题,或者我可以添加更多有关我发现的具体示例的详细信息。

祝你好运!