Кто-нибудь может объяснить мне, что на самом деле делают первичные ключи?

Я читаю книгу Поля Дюбуа «Библиотека разработчика 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;

Мы сделали комбинацию двух столбцов ПЕРВИЧНЫМ КЛЮЧОМ. Это гарантирует, что у нас не будет одинаковых оценок учащегося за данный тест или викторину. Обратите внимание, что уникальна комбинация event_id и student_id. В таблице оценок ни одно из значений не является уникальным само по себе. Будет несколько строк оценки для каждого значения event_id (по одной на учащегося) и несколько строк для каждого значения student_id (по одной для каждого викторины и теста ) снято студентом

Что мне непонятно, так это объединение двух столбцов в один первичный ключ ... Это означает, что мне трудно представить себе, что на самом деле происходит под капотом ... Это берет коллекцию чисел [95, 210], например, и используя это как «ключ» ... Уместно ли рассматривать первичный ключ как ключ к хешу?

Раньше я всегда думал о первичных ключах как о не более чем уникальные идентификаторы для таблицы ... но теперь в этом контексте я обнаруживаю, что на самом деле делает первичный ключ. Может ли кто-нибудь рассказать мне о ключах SQL?

5
задан Shakti Singh 6 September 2011 в 05:39
поделиться