您如何将这些用户计划存储在数据库中?

时间:2018-02-01 15:41:58

标签: mysql database database-design

我正在构建一个系统,用户必须选择一段时间available,然后选择另一个用户reserves。每个活动的设定时间为20分钟,我希望被保留的人在日历中的不同日期一次性地available时间排列available小时。

我无法决定如何在数据库中简单地表示这一点,我目前的想法是让X表成为用户的FK。当他们从TIME ATIME B选择一个X * 3小时的块时,它会在数据库中创建slots行,可用时间为20分钟reserves

如果用户reservation其中一个广告位,则会删除可用行,并创建另一个select * from my_table order by case when position('id' in sortorder) > 0 then id end, case when position('fi' in sortorder) > 0 then fi end, case when position('serial' in sortorder) > 0 then serial end 行,其中包含两个不同用户的FK。

有没有更简单的方法来表示这个?好像它会在db中创建大量不必要的行...

1 个答案:

答案 0 :(得分:0)

存储它的简单方法?检查/分配预订的简单方法?两者都不容易;两者都变得混乱。

这是另一种方式。

BIGINT UNSIGNED可以容纳64位,每个20分钟一个插槽,每天21小时。 (如果您需要跨越所有24小时,这将无效。)

运营商&|以及<<可用于构建预订区块,检查等等。

(1 << 14) - (1 << 9)

将打开6个连续位 - 代表2个小时。它是十六进制3F00 - 请参阅SELECT (1 << 14) - (1 << 8);

(this & that) != 0  -- check for any overlap