2

我有一张产品表。产品可以出租。我有另一个表validity_periods。这是表的结构。

http://sqlfiddle.com/#!2/c97e3

validity_periods

id  description
1   7 Days
2   14 Days
3   21 Days
4   1 Month
products

id              : 1
title           : Car
description     : None
validaity_id    : 1
category_id     : 1
rent_count      : 0
current_status  : available
start_date      : 0000-00-00 00:00:00
end_date        : 0000-00-00 00:00:00

现在我正在做以下事情。

当用户创建此产品时,我会提供一个下拉列表来选择此产品的最长有效期。
下拉列表包含有效期。并用产品保存validity_id。
当有人租用这个产品时,我将 current_status 从可用更新为租用。
获取 id 查找当前日期并生成 start_date 和 end_date 并更新产品。
这里我需要两件事
首先:是否有一个简单的解决方案可以做很多工作,我只是做一些事情来生成 start_date 和 end_date?如果需要,我可以更改validity_periods 的架构。
第二:当我显示产品时,我会显示状态和剩余天数(产品将再次可供租用)。
那么我怎样才能完成这两个任务。

假设产品 Car 已被租用,现在

id              : 1
title           : Car
description     : None
validaity_id    : 1
category_id     : 1
rent_count      : 1
current_status  : rented
start_date      : 2012-12-10 01:30:00
end_date        : 2012-12-17 06:50:00

现在我需要显示这些信息。

Item        : Car
Status      : Rented
Rent Count  : 1
Remaining   : 3 Days 23 Hours   
4

1 回答 1

1

Products最好在表格和表格之间建立多对多关系Periods。就像是:

Products

  • Id,
  • Name,
  • CategoryId,
  • StatusInRent,可用,不可用,...

Periods

  • Id,
  • StartDate,
  • EndDate

ProductPeriods

  • Id
  • ProductId
  • PeriodId
  • PeriodStatus(取消,结束,...)

这种设计将使您的查询更容易。例如,您可以获得现在租用的产品列表和租金计数,如下所示:

| PRODUCTNAME | STATUSNAME | RENTCOUNT |
----------------------------------------
|        Bike |     Rented |         1 |
|         Car |     Rented |         4 |

但是,您可以获取每个产品的租用期限以及该租用的剩余日期时间。

SQL 小提琴演示

于 2012-12-10T07:44:08.913 回答