gpt4 book ai didi

php - 创建调度程序应用程序 - 过程和概念问题

转载 作者:行者123 更新时间:2023-11-29 00:25:53 25 4
gpt4 key购买 nike

如果在其他时候有人问过或回答过这个问题,我深表歉意 - 我想我的搜索总是迷失在那些试图在服务器上安排 PHP 任务的人中,所以我找不到我要找的东西为。

因此,作为我的第一个自行构建的应用程序(不是指导或指导的应用程序),我正在尝试构建一个营地调度程序。我已经构建了登录、添加小木屋/团体或删除它们、添加事件/团体或删除它们、生成日期范围,并从该数据中选择您想要安排然后发送的那些东西它到一个调度程序,然后创建一个新的 MySQL 表和...

这是我一直停下来想知道我是否正确思考的地方。

  • 每次新的计划运行都应该创建一个新表吗?可扩展的(如果它为此可扩展对我来说并不重要,但它显然对其他项目很重要)?
  • 在将数据输入到mysql表,还是可以连续输入再输入下一个正在排序的项目?

最终,我不能只进行循环,因为我需要添加其他因素,例如:

  • 这个小组是否在最近 X 个计划周期内完成了这项事件?如果是这样,请选择另一个。
  • 不要总是从事件列表的顶部开始,否则有些事件将始终排在日程表中,而有些事件将始终是第一个被留空的 - 甚至可以根据某些因素确定重要性的优先级。
  • 最初我只想安排团体日期的事件,但我还想添加一项功能,以便能够将另一个日程安排(小木屋进行的独木舟旅行)从计划列表中排除在他们离开的日子里。

如果我能在排序逻辑方面获得任何帮助,我将不胜感激。谢谢。

编辑:因此,根据您的建议,我认为我有以下表格,其中只有两列用于 ID 和名称(用户可以随时更新/编辑):

cabins
activities

然后我添加另一个表,例如,最多有 56 列用于日期条目(8 周)+ 名称和用户列,名为:

dates

然后我有另一个表叫做:

schedule

它有这样的列:

ID (primary Key)
User (logged in user that created this)
schedule_name (user defined name of schedule)
cabin (foreign key of a cabin)
period_001 (foreign key of first date in corresponding 'dates' table)
activity_001 (foreign key of an available activity which has been chosen to go here)
period_002 (...)
activity_003 (...)
etc...

然后 PHP 逻辑将要求按名称和用户分组的行,这样对于给定用户的每个时间表名称,营地中每个选定的小屋都会有一行(例如 25 行代表 25 个小屋)。 “日期”表中的每一行都包含给定时间表的整个日期范围。

这是你的想法吗?

最佳答案

如果我没理解错的话,这是一道数据库建模题。从您的具体问题开始:

Should each new run of a schedule create a new table?

没有。一个表代表一个类型的事物(就像 OO 实现中的一个类一样)。如果您需要区分该表中的行组,那么这是这些行的属性,并且可能是一个独立的实体。因此,您将有一个表,每个“新运行的计划”都有一行,然后使用外键在另一个表中引用它。

Should I do sorting with arrays before I ever enter data into the MySQL table?

没有。输入到数据库表中的订单行绝不能用于赋予意义。如果他们有一些特定的订单,创建该订单的信息应该在表的一列中。当您从数据库中检索 数据时,您可以使用 Order By 子句对数据进行排序。 (始终在您选择数据时包含一个Order By子句。)

您的第二组要点似乎从如何建模数据跳到如何查询数据。所以首先,阅读:

  • 数据库规范化:简而言之,每个实体都应该有自己的表,它们之间的关系由外键定义
  • 实体关系图:不用担心学习所有官方符号,但在 Visio 图表或一张纸上绘制数据确实有助于理解事物之间的关系

一旦您对实体是什么以及它们的规范化结构有了一个不错的了解,剩下的就是如何编写与它们相关的查询:

  • “这个小组是否在最近 X 个计划周期内完成了这项事件?”可能涉及 groups 表之间的 JOINgroups_scheduled_activities 数据透视表(即只存在于关联多个表中的两个或多个表的表)对多关系)和一个 scheduled_periods 表。
  • “不要总是从事件列表的顶部开始......甚至可以确定重要性的优先级”是关于您在显示事件表时如何选择的在 UI 中:可能是涉及优先级因素和随机因素的 Order By 子句。 (某些数据库中的随机排序可能很棘手,但环顾四周,您会发现很多解决方案。)
  • 如果我理解正确,“在另一个时间表中将他们排除在他们将离开的日子的预定列表之外”只是一种持续很长时间的特殊“事件”,并且可能在用户界面。从数据建模的角度来看,这只需要一个事件属性(即 activities 表中的一列)来将这些事件与“正常”事件区分开来。据推测,无论如何,事件都会有一个“持续时间”属性。

关于php - 创建调度程序应用程序 - 过程和概念问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com