Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 进度计划的数据库设计_Sql_Mysql_Database_Database Design - Fatal编程技术网

Sql 进度计划的数据库设计

Sql 进度计划的数据库设计,sql,mysql,database,database-design,Sql,Mysql,Database,Database Design,我正在创建一个web应用程序,其中用户应该能够指定他们的每周日程安排。以下是我的DB模型: id user_id day from to day是0-6的枚举(0表示星期日,1表示星期一,依此类推)from和to表示从午夜开始的分钟数。所以,0表示午夜,1表示12:01,2表示12:02,以此类推 这个设计好吗?有什么潜在的问题吗 如果我想要一周以上的显示能力呢?我该怎么处理呢?现在,我只是显示每周的工作日程,但是如果能够指定更多的工作日程,那就太好了。首先,我会尝试让设计更开放一些。差不多

我正在创建一个web应用程序,其中用户应该能够指定他们的每周日程安排。以下是我的DB模型:

id
user_id
day
from
to
day
是0-6的枚举(0表示星期日,1表示星期一,依此类推)
from
to
表示从午夜开始的分钟数。所以,0表示午夜,1表示12:01,2表示12:02,以此类推

这个设计好吗?有什么潜在的问题吗


如果我想要一周以上的显示能力呢?我该怎么处理呢?现在,我只是显示每周的工作日程,但是如果能够指定更多的工作日程,那就太好了。

首先,我会尝试让设计更开放一些。差不多

id
User_id
Date
Start_Time
End_Time
这样你就不会把自己限制在一周之内。此外,使用日期和时间可以更轻松地进行计算。有了它们,就很容易得到一周中的某一天,从午夜开始的几分钟,等等

使用此功能,您还可以轻松获得周数,通过选择一年中的周和/或其开始日期,您可以向用户显示其日程安排

此设计假定您没有从一天开始到下一天结束的日程安排。在这种情况下,您需要一个开始日期和结束日期


希望这有助于

首先,我会尝试使设计更加开放。差不多

id
User_id
Date
Start_Time
End_Time
这样你就不会把自己限制在一周之内。此外,使用日期和时间可以更轻松地进行计算。有了它们,就很容易得到一周中的某一天,从午夜开始的几分钟,等等

使用此功能,您还可以轻松获得周数,通过选择一年中的周和/或其开始日期,您可以向用户显示其日程安排

此设计假定您没有从一天开始到下一天结束的日程安排。在这种情况下,您需要一个开始日期和结束日期


希望这有帮助,请不要重新发明轮子。这是编程和开发任何东西最强大的思想之一

我在这里的意思是,每当您有可能依赖内置或本机类型时,您都应该使用它。在字段<强>天< /强>、<强> > <强> >强> >强>中,您可以并且应该考虑使用适当的本机类型,如<强>日期< /强>,<强>日期时间< /强>,<强>时间戳< /强> ./p> 此外,如果需要检索、筛选这些数据,可以使用内置函数

这种设计思想可以提高数据的可靠性,并使编程更容易,因此您需要使用经过测试并被广泛采用的函数和数据类型

我会这样做:

id -- autoincrement
Start -- datetime
End --datetime
我想您有一个用户表。我会再添加一个表UsersSchedule,比如:

user_id -- FK to users
schedule_id -- FK to schedule
因此,许多用户可以注册到同一个会议或事件。当然,这可以更进一步,并添加其他控制字段,如EventName、EventPromotor(发起人用户的用户id)、邀请(被邀请参加活动的用户id列表)、Atendees(确认/宣布活动的用户id列表)。。。但这个决定取决于你

注意,我会大量使用DateTime函数(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html)为了节省逻辑编程的时间,比如检查今天为特定用户安排的事件、为特定用户安排的冲突事件等等

嗯,我想你明白了

编辑

假设您有一个条目,如:

id   |        start        |        end
45   | 2010-10-25 09:00:00 | 2010-10-25 18:00:00
您可以运行以下查询:

SELECT CONCAT(
DATE_FORMAT(start, '%a'), ', ',
DATE_FORMAT(start, '%l%p'), ' - ',
DATE_FORMAT(end, '%l%p')
) as Event FROM schedule WHERE id = 45;
这将为您提供以下输出:

Mon, 9AM - 6PM

完成。

请不要重新发明轮子。这是编程和开发任何东西最强大的思想之一

我在这里的意思是,每当您有可能依赖内置或本机类型时,您都应该使用它。在字段<强>天< /强>、<强> > <强> >强> >强>中,您可以并且应该考虑使用适当的本机类型,如<强>日期< /强>,<强>日期时间< /强>,<强>时间戳< /强> ./p> 此外,如果需要检索、筛选这些数据,可以使用内置函数

这种设计思想可以提高数据的可靠性,并使编程更容易,因此您需要使用经过测试并被广泛采用的函数和数据类型

我会这样做:

id -- autoincrement
Start -- datetime
End --datetime
我想您有一个用户表。我会再添加一个表UsersSchedule,比如:

user_id -- FK to users
schedule_id -- FK to schedule
因此,许多用户可以注册到同一个会议或事件。当然,这可以更进一步,并添加其他控制字段,如EventName、EventPromotor(发起人用户的用户id)、邀请(被邀请参加活动的用户id列表)、Atendees(确认/宣布活动的用户id列表)。。。但这个决定取决于你

注意,我会大量使用DateTime函数(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html)为了节省逻辑编程的时间,比如检查今天为特定用户安排的事件、为特定用户安排的冲突事件等等

嗯,我想你明白了

编辑

假设您有一个条目,如:

id   |        start        |        end
45   | 2010-10-25 09:00:00 | 2010-10-25 18:00:00
您可以运行以下查询:

SELECT CONCAT(
DATE_FORMAT(start, '%a'), ', ',
DATE_FORMAT(start, '%l%p'), ' - ',
DATE_FORMAT(end, '%l%p')
) as Event FROM schedule WHERE id = 45;
这将为您提供以下输出:

Mon, 9AM - 6PM

完成。

好的,您有一个针对单个文件的设计(它不是任何想象中的数据库或数据模型),并且您意识到它是非常有限的。你有很多问题,你已经发布了一个数据库标签。您希望在数据库或“数据库”中实现它,但对了解数据库的功能不感兴趣。此外,当你得到两位优秀的数据库人员的回答时,你只需与他们争论,并继续认为你的枚举和位更好。。。但你甚至不能制定一个跨越数周或数年的时间表。哪种行为如此自相矛盾,有人该如何帮助