我正在阅读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;
Run Code Online (Sandbox Code Playgroud)
我们将两列的组合作为PRIMARY KEY.这确保了我们不会为给定测验或测试的学生提供重复分数.请注意,event_id和student_id的组合是唯一的.在分数表中,这两个值本身都不是唯一的.每个event_id值将有多个分数行(每个学生一个),并且学生每个student_id值(每个测验和测试一个)有多行
我不清楚的是将两列合并为一个主键......意思是,我很难想象底下实际发生了什么......它正在收集数字[95,210]示例并将其用作"密钥"...将主键视为哈希的关键是否合适?
以前我一直认为主键只不过是表的唯一ID.但是现在在这种情况下,我发现自己实际上是一个主键.任何人都可以给我低调的SQL键吗?
主键本质上是一个具有非空约束的唯一键。(如前所述,它用于强制数据的引用完整性)
它只是一种不同类型的主键:
代理键/人工键=通常是一个连续的数字
http://en.wikipedia.org/wiki/Surrogate_key
自然键 = 使行唯一的列
http://en.wikipedia.org/wiki/Natural_key
这里http://www.geeksengine.com/database/design/primary-key-constraint.php是对差异的很好的解释。
| 归档时间: |
|
| 查看次数: |
980 次 |
| 最近记录: |