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