如何与数据库表(sql 和 phpmyadmin)建立关系,使其对每条记录(PK)都是唯一的?

How to make a relation to database tables(sql and phpmyadmin) such that it's unique for every record(PK)?

我有 4 table

  1. 学生
  2. 大学
  3. 学位
  4. 课程

学院和学位与学生相关联

table course(subjects) 与学位相关 // 每个学位的具体课程

我想要一个新的 table,我可以在其中保存学生的成绩,以便每次在学生 table 中创建新记录时,学生成绩的唯一 table (与课程相关)已创建。

我尝试在课程 table 中为其创建一个字段,但每次我通过 SQL 命令更新学生的成绩时,在我看来成绩是共享的。

就像"student(Many) -> course(Many) -> course_grade(1, shared)"。 我说得有道理吗?

我希望每个学生的 course_grade 都是独一无二的。这是否可以通过仅使用 phpmyadmin 来实现,还是我需要编程(PHP 因为这是基于网络的)干预并为每个创建的学生记录创建一个 table?

如何实现我想要的?

不知道我是否理解你的问题,但你绝对不能为每个学生创建一个table。

如果你想存储每个学生在每门课程中的成绩,你必须创建一个关系table,它的列只是:学生,课程,成绩

这样,每次您想保存学生的成绩时,只需使用其 ID、课程 ID 和成绩(整数、枚举或其他)插入此 table。

在这个table中做一个SELECT以获得学生的成绩。加入"student"table获取他们的名字等

编辑 primary/foreign 键:

一个主键是使每个条目"unique"的列。 例如在 table "student" 中你可能有一个 "id" 或 "student_id" 列,也许有 auto_increment,这应该是你的主键(显然只能每个 table)一个。

另一方面,

外键是一种告诉MySQL两个不同table中的两列代表同一事物的方法.虽然这不是强制性的,但是 "just" 好的做法。 在你的情况下,这个新的 table 应该有一个外键:

  1. 引用student.id的学生(table"student"的主键)
  2. 引用 course.id 的课程(table "course" 的主键)

创建外键不是必需的,但这是一个很好的(也是常见的)做法。这样,MySQL 将抛出错误,例如,如果您尝试使用 table "student" 中不存在的学生 ID 在 table 中保存一行。

我建议你阅读有关外键、主键、索引等的概念。如 W3school:http://www.w3schools.com/sql/sql_foreignkey.asp