4

如何以最佳方式为 Google 日历(如重复功能)设计表格结构?

谷歌日历允许用户在不确定或确定的时间段内安排事件的再次发生。现在,当我们这样做时,在数据库表中管理这些类型的未来数据的最佳方法是什么?

例如:我有一个名为 events 的表,其中存储了所有非重复类型的常规事件,并安排在某个日期和某个时间。现在,当涉及到重复发生的事件时,我应该创建一个单独的表并将其存储为模板吗?

例如,让我们把它看得很简单:

**Events**
id
title
description
datetime_from
datetime_to
status


**Event_Schedule**
id
title 
description
time_from
time_to
repeats_on (Daily, Weekly, Monthly)
repeat_config ____serialized array or object

字段不完整,但这只是为了提供一些想法,我可以在这里做的是一个 cron-job 或调度程序可以为下次发生创建一个事件。如果要在日历上显示它,可以通过从Event_Schedule表中生成数据来完成,如果用户编辑未来事件的数据,我们可以将该事件的数据存储在Events表中。这是正确的方式还是可以以更好的方式完成?我可以考虑将它作为模板存储在同一个表中,但我发现一个单独的表是更好的方法。

4

1 回答 1

5

您的数据库不必做所有事情。你的程序代码可以负责一些日历的渲染。

这是事件数据库表的一个版本。

Event
-----
Event ID
Event Title
Event Location
Event Description
Event Start Time Stamp
Event End Time Stamp
Repeat Frequency (None, Daily, Weekly, Monthly, Quarterly, Yearly, 
    every nth day (every 3rd Tuesday)
    other odd frequencies 
        (the Tuesday following the first Monday in November, the Sunday 
         following the paschal full moon, which is the full moon that 
         falls on or after the vernal (spring) equinox)

您的程序将负责遍历 Event 表的事件行,查看哪些具有重复频率,并计算哪些事件将在显示的月份显示。

基本上,您的程序代码必须计算以下程序对象。这不是数据库表。

Calendar Event
--------------
Event Date
Event Start Time
Event End Time
Event Title
Event Location
Event Description.

您将有一个正在显示的月份的日历事件列表或数组。

于 2013-02-25T14:10:05.423 回答