0

我正在尝试学习 Microsoft MVC 2,并且在这种情况下找到了一个我想部署它的小项目。

我的想法是模拟一家可以点餐的餐厅。

基本:

  • 一个用户只能预订一个完整的桌子,所以我没有合并不同桌子上的人的麻烦。

    一个人可以在一定时间内订购一张桌子。

我的问题是如何使数据模型成为最聪明的方式。我想有一个这样的数据库:

表{ ID,表名}

预订 { Id TableId ReservedFrom ReservedTo UserId }

用户 { 用户 ID 用户名 ... }

通过这样做,我将不得不在例如业务层中编写大量逻辑,以支持在什么时间占用哪些表,而不是让数据模型处理它。

因此,你们有更好的方法来做到这一点吗?

4

2 回答 2

1

一个数据库约束,它不允许一个表的两个预留重叠,它使用一个函数计算开始日期时间或结束日期时间在插入行的日期时间之间的表的预留数量。该约束将确保计数为 1(刚刚插入的行)。

此外,您应该让您的用户界面阻塞时间,其中所有可用的表都被保留。本质上,您将获得当天的所有预订,并且对于每个小时块计算跨越该块的预订数量 - 如果计数等于表数,则 UI 不允许该块选择。这跨越了您的业务/UI 层。

于 2010-03-24T15:55:58.923 回答
1

无法知道一个人需要多长时间才能进食,因此您不能假设 ReservedTo 时间是准确的。我会在一个单独的表中建立时间段。这样就可以使用一个简单的唯一约束。

TimeSlot { id, StartTime, Duration }

此外,我会转储用户表并输入名称。

预订 { id, tableId, date, timeSlotId, Name }

将唯一约束放在 { tableId, date, timeSlotId }

这可以扩展为允许不同表的不同持续时间,但我认为这超出了学习项目的范围。

于 2010-03-24T19:59:55.057 回答