- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在阅读 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
附言:要回答您的具体问题:
您的示例几乎肯定会有至少两个其他表:一个用于“学生”,另一个用于“事件”。
在此示例中,“分数”表表示特定学生在特定事件中获得的分数。 “复合主键”由“学生 ID”(进入“学生”表的“外键”)和“事件 ID”(进入事件表的外键)组成。
如果您想要的只是分数,“scores”表就足够了。
但是,如果您想打印出学生的姓名及其分数,则需要“连接”学生表和分数表(对“student_id”执行“内部连接”)
同样,如果您想将事件名称或位置与分数一起打印,您可能需要在“event_id”上对分数和事件进行内部联接。
'希望对您有所帮助!
关于mysql - 谁能向我解释主键的实际作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315355/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!