gpt4 book ai didi

sql - 简单的数据库表设计/布局

转载 作者:行者123 更新时间:2023-12-04 20:34:03 27 4
gpt4 key购买 nike

我只是想知道,作为一个假设示例,针对以下场景布局表格的最佳方式是什么:

假设我正在编写一个用于跟踪学生出勤的应用程序。每年年初,我都想添加所有学生(我将手动执行此操作 - 现在,是否应该为这里的每个学生分配一个学生 ID?让我们将该表称为“学生”)。现在,每天,我都会在表 Students 中显示所有学生,并允许用户选择出勤。

那么,我应该如何布置我的 table 呢? (如果您不明白我的意思,我的意思是应该在每一列、每一行中输入什么数据......)例如,可能有一个包含学生 ID 的学生表,每天为每个学生创建一个新行出勤表,其中第 1 列:学生 ID,第 2 列:日期,第 3 列:状态(出席/缺席)。然而,这似乎效率并不高。你觉得怎么样?

更新:从所有这些第一个答案来看,学生出勤表中的每一行似乎都有一个学生(他/她被指定为出席/缺席),但是如果我是否每行包含多个学生 ID,例如某一天缺席的所有学生?这会更好还是更糟(可能是模棱两可的)?实际上,我开始认为效率会降低,因为这一举措甚至可以帮助的唯一行动已经可以轻松完成。嗯...

最佳答案

学生

  • STUDENT_ID,pk
  • FIRST_NAME
  • LAST_NAME

STUDENT_ATTENDANCE

  • STUDENT_ID、pk、fk
  • ABSENT_DATE,PK

不需要 IS_ABSENT 列 - 有日期表明学生缺勤以及缺勤日期。缺席的天数可能少于出席的天数,因此仅存储缺席的日期。

将主键设置为两列的组合可确保不会出现重复项。

what if I were to include more than one student id per row, say for all students absent on some day? Would that be better or worse

然后,您可以将附加的 Student_id 存储为单列中的逗号分隔列表,或者存储每个附加的 Student_id 的附加列。每个 Student_id 的附加列永远不会起作用 - 您每年都会为每个新学生添加一列。连接 Student_ids 列表更为现实,但如果您想报告特定学生或学生组,则提取详细信息会很困难。由于字符限制,它存在无法存储单列中可能缺少的每个 Student_id 的风险。

我建议使用我建议的STUDENT_ATTENDANCE表。

关于sql - 简单的数据库表设计/布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611313/

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