PHP-Calendar / schedule数据库结构

时间:2014-03-04 08:44:51

标签: php mysql calendar

这通常不是我想在SO上提出的问题类型,但由于我发现它具有挑战性,并且没有找到关于如何做到这一点的好资源,所以这里就是..

我需要创建一个日历,用于显示预约的约会以及允许用户在一天中有可用的插槽的情况下请求约会。实际上我找到了一个实现这个日历/日程安排系统的网站,非常接近我的需求。 基本上,正面与此类似:

enter image description here

我遇到的问题是,因为我不是数据库大师,所以我想不出如何解决这个问题的最佳方法。我需要什么样的表格/字段来实现这种灵活性。如果这一天没有分成几小时和几分钟,我就不会有任何麻烦,但这是一个功能请求。我是否需要有一张表格,表示每小时的列数小时和分钟?

任何能够提供进一步深入了解如何做到最好的数据库大师?

NB。每天的每个小时都分为4个季度,因为预约可能需要15分钟到45分钟,具体取决于用户要求的预约类型。

我不需要任何数据库设计或任何东西,只是一些简单的解释,我可以用作起点。我接受所有建设性的答案,非常感谢

1 个答案:

答案 0 :(得分:1)

您只需将事件详细信息存储在表格中即可。 在mysql中我wolud创建一个这样的表:

CREATE TABLE `event` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `creator_user_id` INT UNSIGNED NOT NULL,
    `start_at` DATETIME NOT NULL,
    `finish_at` DATETIME NOT NULL,
    `location_id` INT UNSIGNED NOT NULL,
    `name` VARCHAR(50) NOT NULL,
    `description` TEXT NULL,
    PRIMARY KEY (`id`),
    INDEX `start_at` (`start_at`),
    INDEX `finish_at` (`finish_at`),
    INDEX `location_id` (`location_id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;

显示日历时,您只需选择与显示的时间段重叠的记录。