Sql 数据库设计-我怎样才能有一个重复的数据库条目?

Sql 数据库设计-我怎样才能有一个重复的数据库条目?,sql,sql-server,database-design,timetable,Sql,Sql Server,Database Design,Timetable,我目前正在使用FullCalendar JQuery模块来允许用户创建个人时间表。事件将添加/更新到SQL Server数据库。这很好用 我正在尝试创建一个设施,其中每个用户都有一个数据库,该数据库存储了他们一年中的所有事件,其中一些事件可能是重复发生的,并且每周都会发生 然后,我希望用户能够根据其时间表中可用的时间段组织与其他用户的会议 我不知道如何将这些重复事件集成到我的系统中,或者我的算法如何处理这些重复事件 我目前的设计是: CREATE TABLE Users ( user_id

我目前正在使用FullCalendar JQuery模块来允许用户创建个人时间表。事件将添加/更新到SQL Server数据库。这很好用

我正在尝试创建一个设施,其中每个用户都有一个数据库,该数据库存储了他们一年中的所有事件,其中一些事件可能是重复发生的,并且每周都会发生

然后,我希望用户能够根据其时间表中可用的时间段组织与其他用户的会议

我不知道如何将这些重复事件集成到我的系统中,或者我的算法如何处理这些重复事件

我目前的设计是:

CREATE TABLE Users (
  user_id INT NOT NULL AUTO_INCREMENT,
  email VARCHAR(80) NOT NULL,
  password CHAR(41) NOT NULL,
  PRIMARY KEY (user_id)
);

CREATE TABLE Events (
    event_id INT NOT NULL AUTO_INCREMENT,
    title VARCHAR(80) NOT NULL,
    description VARCHAR(200),
    start_time DATETIME,
    end_time DATETIME,
    group_id INT NOT NULL,
        recurring boolean
);

CREATE TABLE Groups (
    group_id INT NOT NULL,
    user_id INT NOT NULL
);

这是否足够?我将如何在日历上显示每周重复发生的事件?如果我缺少任何细节,请询问!非常感谢。

您可以使用以下内容:

SELECT  *
FROM    Events
WHERE   Recurring = 0
UNION
SELECT  Event_ID,
        Title,
        Description, 
        DATEADD(WEEK, Interval, Start_Time) [Start_Time],
        DATEADD(WEEK, Interval, End_Time) [End_Time],
        Group_ID,
        Recurring
FROM    Events, 
        (   SELECT  ROW_NUMBER() OVER(ORDER BY Object_ID) [Interval]
            FROM    SYS.ALL_OBJECTS
        ) i
WHERE   Recurring = 1
AND     Interval <= 52 -- reccurs for 1 year
这将使所有事件重复52周或任何你想要的时间


另一方面,在问题中,您提到了sql server,并将该问题标记为sql server,但您的所有语法似乎都是MySQL自动增量布尔数据类型。

如何确定重复的开始和结束日期?开始时间和结束时间列?是,事件表的开始时间和结束时间。当用户创建一个事件时,这些时间被插入到表中。我建议阅读iCal或.ics规范eg将是一个很好的开始,以掌握概念和问题。为什么?我没有使用ICalendar?他问你日期。也就是说,从2012年8月3日开始到2012年12月31日,我们每周一下午1点到2点见面。哇,非常感谢你的回答!是的,我是用SQL语法写的,因为这是我最熟悉的,我不想把它搞砸!这很好,我可以问一下在这种情况下间隔是如何填充的吗?它只是一个数字列表,通过计算sys.all_objects中的行来创建。sys.all_objects是sql_server中的一个系统视图,包含所有对象表、键、索引、视图,过程等。即使在一个空数据库中,此视图仍将包含远远超过1000行的内容,这应该足以满足您的需求。有关更多信息,请参阅或我了解,非常感谢您的解释。所以在DATEADDWEEK,Interval,Start_Time[Start_Time]行中,我可以问一下这里到底发生了什么吗?它将周添加到开始日期,因此在示例中,我发布了子查询I和事件表之间的交叉连接,导致每个事件重复52次,每一条记录的开始日期都比上一条记录晚一周。如果事件表中有重复出现的类型,如daily/weekly/monthly/or FewdaysInaweek,我们如何处理?