我是网络开发的新手,我正在上一个使用PHP和MySQL工作的网站。
我正在开发一个项目,我将拥有很多用户,每个用户都有一个或多个日历,每个日历都有一个或多个事件。
逻辑上,事件是日历表中具有日期时间,标题,位置等的行是有意义的。
我的问题是:
我如何基本上存储"指针"到另一张桌子的一排桌子?
例如,假设用户拥有体育日历和工作日历。我了解如何为每个日历创建表并向其添加事件,但如何存储有关如何在用户行中检索它们的信息。
用户将拥有
列答案 0 :(得分:1)
您只需在日历表中放置一列userId
。无论何时需要它们,您都可以在这些表中查询它。这是您需要的唯一参考。
您不应该在用户表中引用日历,因为用户可以有多个日历,您应该在日历表中使用userId
作为外键。
答案 1 :(得分:0)
这里基本上需要三个表格,一个用于Users
,另一个用于Calendar
,另一个用于Event
。
关系是User
可能有很多日历,而Calendar
可能有很多Events
。
它可能看起来像这样:
TABLE Name : Users
Fields : userid(auto-incremented), email, username, password(hash), salt
TABLE Name : Calendars
Fields : CalendarID, userid, dateFrom, dateTo, Category
TABLE Name : Events
Fields : EventID, CalendarID, Description
你的SQL可能看起来像这样:
获取给定用户的日历将是:
SELECT CalendarID, dateFrom, dateTo, Category
FROM Calendars
WHERE userid = <user id here>
要获得给定用户的日历事件可能如下所示:
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
答案 2 :(得分:0)
我的逻辑与你的逻辑不同。我对日历表的想法每个日期都会有一行。其他列将包含有关该日期的信息,例如财政或学年,加上假期。
对于用户约会,根据所需的详细程度,我只会存储用户ID和事件ID。该事件将具有开始和结束日期时间和类别ID。
我会努力争取每个用户只有一组约会来维护。