【问题标题】:Database Schema for Student Report学生报告的数据库架构
【发布时间】:2014-12-30 18:03:06
【问题描述】:

我正在尝试创建用于创建在线成绩报告的数据库架构。报告包含学校名称、学生姓名、学生老师姓名、缺勤天数、迟到天数、学生当前总成绩、学生完成的所有作业的名称包括每个作业的日期、类别和分数。以下是我到目前为止能够弄清楚的。有人对改进此架构有什么建议吗?

School (school_id, school_name, course_id)

Course(course_id, course_name, teacher_id, student_id)

Teacher(teacher_id, teacher_name, student_id)

Student(student_id, student_name, grade, absent_days, tardy_days, assignment_id)

Assignment(assignment_id, assignment_name, assignment_date, category, score, course_id)

【问题讨论】:

  • 一个老师可以在几所学校任教吗?
  • 您应该阅读有关关系数据库的书籍或教程。因为显然你甚至不知道外键的概念。在您的架构中,一位老师被分配给一位老师,一所学校只有一门课程,一个学生只能有一个作业,...
  • 詹姆斯·邦德...这个数据库只包含一所学校的数据。

标签: database schema


【解决方案1】:

我建议您从学校中删除 course_id。来自课程和老师的 student_id。学生的 assignment_id 如下所述。此外,我可能会将作业拆分为一个作业和一个标记表。

这导致一个学校可以有多个教师教授多个班级的架构,这些班级可以有多个作业。学生属于一所学校,可以有多个作业。这是一个非常简单的模型,您可以考虑添加一个“预订”表,在其中存储哪些学生预订了哪些课程。此外,可能有多名教师教授一门课程,教师在多所学校工作,或者一门课程在多所学校提供。只是一些想法要考虑...

School (school_id, school_name)

Course(course_id, course_name, teacher_id)

Teacher(teacher_id, teacher_name, school_id)

Student(student_id, student_name, absent_days, tardy_days, school_id)

Assignment(assignment_id, assignment_name, assignment_date, category, score, course_id, student_id)

【讨论】:

  • 我只是想确保我理解。您所说的“预订表”是指列出每个班级学生的班级名册吗?因此,例如以下内容: Roster(course_id, student_id)
  • 是的,我就是这个意思。
  • 还有一个问题。从课程和教师中删除 student_id 的目的/逻辑是什么?
  • 我假设像“法语 1 级”这样的课程在数据库中只存在一次,并且可以有几个学生。老师也一样:“Prof X”在数据库中只存在一次,可以有几个学生。正如@Salih Erikci 上面在 cmets 中所说,您真的应该花一些时间阅读关系数据库建模。
【解决方案2】:

Microsoft 免费提供示例学校数据库。如果您觉得有帮助:

https://docs.microsoft.com/en-us/ef/ef6/resources/school-database

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多