Php 数据库中的表

Php 数据库中的表,php,mysql,sql,mysqli,database-design,Php,Mysql,Sql,Mysqli,Database Design,我是网络开发新手,正在上一门课程,我们正在使用PHP和MySQL开发网站 我正在做一个项目,我将有很多用户,每个用户都有一个或多个日历,每个日历都有一个或多个事件 从逻辑上讲,事件是日历表中带有日期、时间、标题、位置等的一行是有意义的 我的问题是: 如何在另一个表的行中存储指向该表的“指针” 例如,假设用户有一个运动日历和一个工作日历。我了解如何为每个日历创建表并向其中添加事件,但如何在用户行中存储有关如何检索这些日历的信息 用户将拥有用于 用户ID(自动递增) 电子邮件 用户名 密码(散列)

我是网络开发新手,正在上一门课程,我们正在使用PHP和MySQL开发网站

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

从逻辑上讲,事件是日历表中带有日期、时间、标题、位置等的一行是有意义的

我的问题是:

如何在另一个表的行中存储指向该表的“指针”

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

用户将拥有用于

  • 用户ID(自动递增)
  • 电子邮件
  • 用户名
  • 密码(散列)
  • (还有日历。)

您只需在日历的表中放置一列
userId
。无论何时需要它们,都可以在这些表中查询。那是你唯一需要的参考资料


而且你不应该在用户表中引用日历,因为用户可以有多个日历,你应该在日历表中使用
userId
作为外键。

你只需在日历表中放置一列
userId
。无论何时需要它们,都可以在这些表中查询。那是你唯一需要的参考资料


而且你不应该在用户表中引用日历,因为用户可以有多个日历,你应该在日历表中使用
用户ID
作为外键。

这里基本上需要三个表,一个用于
用户
另一个用于
日历
,另一个用于
事件

这种关系将是一个
用户
可以有许多日历,
日历
可以有许多
事件

可能是这样的:

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
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
您的SQL可能如下所示:

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
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
要获取给定用户的日历,请执行以下操作:

SELECT CalendarID, dateFrom, dateTo, Category
FROM Calendars
WHERE userid = <user id here>
选择CalendarID、dateFrom、dateTo、类别
从日历
其中userid=
要获取给定用户的日历事件,可能如下所示:

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
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
选择Calendars.CalendarID、dateFrom、dateTo、类别、说明
从日历
内部连接事件
在Calendars.CalendarID=Events.CalendarID上
其中userid=

这里基本上需要三个表,一个用于
用户
另一个用于
日历
,另一个用于
事件

这种关系将是一个
用户
可以有许多日历,
日历
可以有许多
事件

可能是这样的:

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
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
您的SQL可能如下所示:

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
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
要获取给定用户的日历,请执行以下操作:

SELECT CalendarID, dateFrom, dateTo, Category
FROM Calendars
WHERE userid = <user id here>
选择CalendarID、dateFrom、dateTo、类别
从日历
其中userid=
要获取给定用户的日历事件,可能如下所示:

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
SELECT Calendars.CalendarID, dateFrom, dateTo, Category, Description
FROM Calendars
INNER JOIN Events
ON Calendars.CalendarID = Events.CalendarID
WHERE userid = <user id here>
选择Calendars.CalendarID、dateFrom、dateTo、类别、说明
从日历
内部连接事件
在Calendars.CalendarID=Events.CalendarID上
其中userid=

我的逻辑与你的逻辑不同。我对日历表的想法是,每个日期只有一行。其他列将包含有关该日期的信息,例如会计年度或学年,以及假期

对于用户约会,根据所需的详细程度,我只需存储一个用户id和事件id。事件将具有开始和结束日期时间和类别id


我会朝着每个用户只有一组约会需要维护的方向努力。

我的逻辑与你的逻辑不同。我对日历表的想法是,每个日期只有一行。其他列将包含有关该日期的信息,例如会计年度或学年,以及假期

对于用户约会,根据所需的详细程度,我只需存储一个用户id和事件id。事件将具有开始和结束日期时间和类别id


我的目标是,每个用户只需要维护一组预约。

你说的是1/参加一门课程和2/数据库设计。你的模型定义在哪里?(merise,uml…)如果每次添加“日历”时都要创建单独的表,那么您的设计中就存在缺陷。您应该有一个大型事件表,其中的列允许您根据需要将该表分为单独的主题日历。你的模型定义在哪里?(merise,uml…)如果每次添加“日历”时都要创建单独的表,那么您的设计中就存在缺陷。您应该有一个大型事件表,其中的列允许您根据需要将该表分为单独的主题日历。啊。好的,我明白了。谢谢现在我正在制定我的表格结构。好的,我明白了。谢谢现在我正在计算我的表结构。