MySQL评级数据库结构

标签 mysql

我正在尝试创建一个数据库来存储每个家庭作业的学生成绩,我希望能够存储成绩以及学生获得特定成绩的次数,例如学生获得了A+ 30次,每个学生,以及学生获得了多少成绩。以及一个成绩的分值是多少,例如 A 值 4.3

所以我想知道构建 MySQL 数据库的最佳方法是什么,我需要添加什么,需要删除什么,以及如何存储像 4.3 这样的数字。

到目前为止我的数据库

CREATE TABLE grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
grade INT UNSIGNED NOT NULL,
student_work_id INT UNSIGNED NOT NULL,
student_id INT UNSIGNED NOT NULL,
date_created DATETIME NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE work (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_id INT UNSIGNED NOT NULL,
title TEXT NOT NULL,
content LONGTEXT NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS student (
id int(8) NOT NULL auto_increment,
student varchar(20) NOT NULL,
PRIMARY KEY  (`id`)
)

输出示例。

student |   grade   |   count

    1       A           10
    1       C           2
    1       F           4
    2       B           20
    2       B-          3
    2       C+          10


student |   grade   |   points

    1       A           4.3
    2       B+          3.3
    3       B-          2.7
    4       D+          1.3


student |   total grades

    1       90
    2       80
    3       100
    4       1

最佳答案

我认为学生-年级-作业模式就可以了。您应该通过查询来计算学生的成绩数,而不是在数据库中维护该信息。 在概念层面(不是严格的 mysql),我会做这样的事情。

table student (
  id int (primary key)
  varchar name
  ...                           // other student attributes (e.g. phone number)
)

table grade (
  id int (primary key)
  name varchar                  // e.g. "A+", "B-", etc.
  float points                  // grade value in points
)

table assignment (
  id int (primary key)
  name varchar                  // assignment name
  student_id int (foreign key)  // student that completed the particular assignment
  grade_id int (foreign key)    // grade achieved in particular assignment
  ...                           // other assignment attributes (e.g. due date)
)

关于MySQL评级数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024988/

相关文章:

java - 如何测试JDBC驱动是否安装正确,DB是否可以连接?

Mysql If条件INNER JOIN

python - 通过游标从 mySQL 中选择记录返回一个 None 对象

php - 在 Laravel 中向数据透视表添加列

php - 有没有办法从查询字符串中获取值 [product_code]1INSAZE 并使用它来运行 sql 查询

php - CodeIgniter 以错误的顺序执行数据库查询(可能是并行的?)

php - 多个数组插入数据库

MySQL,WHERE 逻辑不正确

MySQL "Unknown Column in On Clause"

javascript - 如何使用 PDO 从 php 文件插入数据?