【问题标题】:mysql DB management - hours for each studentmysql 数据库管理 - 每个学生的小时数
【发布时间】:2020-10-20 03:39:09
【问题描述】:

我将编写一些代码来检索和添加/删除学生注册的时间。比如……

  • 学生 1:

    • 10 月 20 日:
      • 12 点
      • 下午 4 点
      • 晚上 7 点
    • 10 月 21 日:
      • 晚上 8 点
  • 学生 2

    • 10 月 19 日
      • 下午 1 点
      • 下午 6 点

我正试图围绕如何在 phpmyadmin 上创建这种类型的表格设置,每个学生都有动态的小时数、不同的时间和不同的日子。我是 mysql 管理的新手,对连接和东西有点熟悉,现在才开始将我的数据库扩展到像这样更复杂的东西。到目前为止我学到的是枚举不是我想去的地方。只是不确定起点...

什么是做这种事情的好策略?

谢谢,

【问题讨论】:

  • 专业提示:停止思考 12 小时制,而采用 24 小时 UTC。
  • 另外,我强烈建议您习惯于手动编写CREATE TABLE 语句,而不是使用 phpMyAdmin。您是否考虑过改用 MySQL Workbench 之类的工具?
  • 我同意,兄弟。我要那样做。不管你怎么想,都是不同的时间。不过,这不是让我感到困惑的部分......另外,我不知道你是否知道,但 phpmyadmin 允许你手动编写 Create Tables。您可以使用 GUI 界面方式或普通 mysql 语句方式。
  • 那么你有什么困惑?
  • 令我困惑的是如何创建一个包含每个学生的表格,但他们有动态小时数以及动态小时数以及动态天数。我认为你不能只用一张桌子来做,因为据我所知,一张桌子必须是 n x n。我不知道如何处理多个表...

标签: mysql


【解决方案1】:

您需要创建多对多关系

首先我尝试简单快速地解释它: 1-您需要为几个小时制作一张桌子,每个小时有 1 行。 2-我猜你已经有一个学生表 3- 现在你需要一个只包含 2 列的表,第一列是小时表 ID,第二列是学生 ID。

最后你只需要像这样执行选择命令:

select * from StudentHours Table where student-id = 1;

详细信息:

关系数据库系统通常不允许您在两个表之间实现直接的多对多关系。考虑跟踪发票的示例。如果有许多发票具有相同的发票编号,并且您的一位客户询问该发票编号,您将不知道他们指的是哪个编号。这是为每张发票分配唯一值的原因之一。

为避免此问题,您可以使用第三个表(称为连接表)将多对多关系分解为两个一对多关系。连接表中的每条记录都包含一个匹配字段,该字段包含它连接的两个表的主键值。 (在连接表中,这些匹配字段是外键。)这些外键字段填充了数据,因为连接表中的记录是从它连接的任一表中创建的。

多对多关系的典型示例是学生和班级之间的关系。一个学生可以注册多个班级,一个班级可以包含多个学生。

以下示例包括一个 Student 表,其中包含每个学生的记录,以及一个 Classes 表,其中包含每个班级的记录。连接表 Enrollments 创建了两个一对多的关系,即两个表之间的关系。

【讨论】:

  • 感谢您提供详细信息。我想我开始明白了。两个问题。如果我需要学生安排的那一天,我会有“3 多关系”吗?所以我只会添加一个表几天,然后将该ID添加到student_hours表中,尽管它是student_hrs_days表?第二个问题是关于那个 select 命令。看起来这选择了某些学生 ID,所以我想做一些连接或内部连接语句,以便在我想要存储它时为每个学生将它们全部放在一起?再次感谢。
  • 你好兄弟,但是不,many2many 关系可以包含所有内容,例如你只需要在你的小时表中添加一个日期列。确切地说,你必须使用内部连接,我没有指出,因为它已经让每个人都感到困惑。不过不难,开始建你的数据库,上手后你会发现它很简单,你可以使用phpmyadmin可视化设计器,可以让它非常EZ
  • 如果您还有问题,我可以尝试使用 teamviewer 或 anydesk 向您展示,
  • 谢谢,有道理。明天我会试一试,然后我会进入 join 和 inner-join 的东西。至少我有明天的方向。非常感谢!
  • 当然,请记住,它看起来超级难,但非常简单,开始吧,
猜你喜欢
  • 2022-08-18
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2012-10-04
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多