数据库设计-当学生记录本身也需要相互关联时,我们应该如何设计师生关系



因此,我们一直在努力尝试并找出如何进行优化。


在一个简单的世界里,这可能会通过一个像这样的简单的多对多桥接表来解决:

  • teachers_students_mappings
id
1 2 3 4 2 1

由于您已经有了一个id_number,它是唯一的,并提供了实现您有一个而不是两个Rachel Do的机制,因此将其用作Students表的PRIMARY KEY。不要为每个学生设置另一个id

另一方面,如果你有一个StudentHistory表,记录每个学生或为每个学生采取的各种行动,那么它需要自己的PRIMARY KEY。这似乎是一个单独的话题。

因此,当";插入";或";更新";学生一排,使用

INSERT INTO Students (id_number, name, foo, ...)
VALUES ("9898123", "Rachel Doe", 123, ...)
ON DUPLICATE KEY UPDATE
foo = VALUES(foo), ...;

或者(如果来自SELECT(:

INSERT INTO Students (id_number, name, foo, ...)
SELECT id_number, name, foo, ...
FROM other table ...
ON DUPLICATE KEY UPDATE
foo = VALUES(foo), ...;

在输入新记录的数据之前,必须检查id_number是否存在。在这种情况下,您必须返回标识,而不是插入该记录。

相关内容

最新更新