Primary Key
Видео Skillbox Моргунов Е.П. PostgreSQL. Основы языка SQL.pdf – стр. 99.
Естественный ключ – например, никнейм или электронная почта. Плюсы: имеет смысл с точки зрения бизнеса; не требуют дополнительного IO и места на диске, так как эта информация всё равно нужна. Минусы: меняются требования бизнеса – придётся менять ключ; часто ключи больше по размеру → занимают больше места.
Суррогатный – не несёт смысловой нагрузки, служит лишь идентификатором в таблице. Плюсы: гарантированно уникален; всегда понятно, что выбрать в качестве ключа. Минусы: издержки на дополнительный IO и место на диске; несут в себе меньше смысла при работе с данными БД.
Первичный ключ может быть простым или составным (включать несколько столбцов).
CREATE TABLE students (
record_book numeric( 5 ) PRIMARY KEY,
...
);
CREATE TABLE students (
record_book numeric( 5 ),
...
PRIMARY KEY ( record_book )
);
PRIMARY KEY ( имя-столбца1, имя-столбца2, ...)
Foreign Key
Видео Skillbox Моргунов Е.П. PostgreSQL. Основы языка SQL.pdf – стр. 100.
Внешние ключи позволяют связывать строки разных таблиц.
В связанную таблицу нельзя добавить строку с внешним ключом, которого нет в основной таблице. В приведенном ниже примере также указывается действие со строкой связанной таблицы, которое происходит при удалении из основной таблицы: при удалении соответствующей строки из students
, будут также удалены все связанные строки из progress
.
В данном контексте для описания отношений между таблицами можно сказать, что таблица students
является главной, а таблица progress
— подчиненной.
CREATE TABLE progress (
record_book numeric( 5 ),
...
FOREIGN KEY ( record_book )
REFERENCES students ( record_book )
ON DELETE CASCADE
);
📂 SQL | Последнее изменение: 30.01.2024 17:36