gpt4 book ai didi

mysql - 谁能向我解释主键的实际作用?

转载 作者:可可西里 更新时间:2023-11-01 07:02:58 26 4
gpt4 key购买 nike

我正在阅读 Paul DuBois 的一本名为“MySQL 开发人员库”的书,他在书中说:

CREATE TABLE score
(
student_id INT UNSIGNED NOT NULL,
event_id INT UNSIGNED NOT NULL,
score INT NOT NULL,
PRIMARY KEY (event_id, student_id),
INDEX (student_id),
FOREIGN KEY (event_id) REFERENCES grade_event (event_id),
FOREIGN KEY (student_id) REFERENCES student (student_id)
) ENGINE = InnoDB;

We made the combination of the two columns a PRIMARY KEY. This ensures that we won't have duplicate scores for a student for a given quiz or test. Note that it's the combination of event_id and student_id that is unique. In the score table, neither value is unique by itself. There will be multiple score rows for each event_id value (one per student), and multiple rows for each student_id value (one for each quiz and test) taken by the student

我不清楚的是将两列组合为一个主键...意思是,我很难想象引擎盖下实际发生的事情...它需要一组数字 [95, 210] 例如并将其用作“键”...将主键视为哈希的键是否合适?

以前我一直认为主键只不过是表的唯一 ID。但现在在这种情况下,我发现自己正在做主键的实际作用。任何人都可以告诉我 SQL key 的最低限度吗?

最佳答案

“主键”是关系数据库中的一个基本概念。它们是(注定) 识别表中行的方法。

主键绝对只是一个“唯一 ID”。

是的,一个“主键”可能(而且通常会)包含不止一列。

这是“多对多”关系表的一个很好的链接:

http://www.tekstenuitleg.net/en/articles/software/database-design-tutorial/many-to-many.html

附言:要回答您的具体问题:

  1. 您的示例几乎肯定会有至少两个其他表:一个用于“学生”,另一个用于“事件”。

  2. 在此示例中,“分数”表表示特定学生在特定事件中获得的分数。 “复合主键”由“学生 ID”(进入“学生”表的“外键”)和“事件 ID”(进入事件表的外键)组成。

  3. 如果您想要的只是分数,“scores”表就足够了。

  4. 但是,如果您想打印出学生的姓名及其分数,则需要“连接”学生表和分数表(对“student_id”执行“内部连接”)

  5. 同样,如果您想将事件名称或位置与分数一起打印,您可能需要在“event_id”上对分数和事件进行内部联接。

'希望对您有所帮助!

关于mysql - 谁能向我解释主键的实际作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315355/

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