数据库中的表格表

时间:2013-11-12 00:51:15

标签: php mysql sql mysqli database-design

我是网络开发的新手,我正在上一个使用PHP和MySQL工作的网站。

我正在开发一个项目,我将拥有很多用户,每个用户都有一个或多个日历,每个日历都有一个或多个事件。

逻辑上,事件是日历表中具有日期时间,标题,位置等的行是有意义的。

我的问题是:

我如何基本上存储"指针"到另一张桌子的一排桌子?

例如,假设用户拥有体育日历和工作日历。我了解如何为每个日历创建表并向其添加事件,但如何存储有关如何在用户行中检索它们的信息。

用户将拥有

  • userid(自动递增),
  • 电子邮件,
  • 用户名,
  • 密码(哈希),
  • salt,
  • 和日历。)

3 个答案:

答案 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。

我会努力争取每个用户只有一组约会来维护。