Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет70/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   66   67   68   69   70   71   72   73   ...   243
Байланысты:
Язык SQL. Базовый курс

CREATE TABLE students
( record_book numeric( 5 ) PRIMARY KEY,
...
);
А можно сделать это и в виде отдельного ограничения:
CREATE TABLE students
( record_book numeric( 5 ),
...
PRIMARY KEY ( record_book )
);
В случае создания составного первичного ключа имена столбцов, входящих в его со-
став, перечисляются в выражении PRIMARY KEY через запятую:
PRIMARY KEY ( column1, column2, ...)
При добавлении первичного ключа автоматически создается индекс на основе B-
дерева для поддержки этого ограничения.
В таблице может быть любое число ограничений UNIQUE, дополненных ограничени-
ем NOT NULL, но первичный ключ может быть только один. PostgreSQL допускает и
отсутствие первичного ключа, хотя строгая теория реляционных баз данных не реко-
мендует так поступать.
Завершаем наш обзор различных видов ограничений рассмотрением такого важно-
го понятия, как
внешний ключ
(foreign key). Внешние ключи являются средством
поддержания так называемой
ссылочной целостности
(referential integrity) между
связанными таблицами. Напомним, что это означает, на примере таблиц «Студенты»
(students) и «Успеваемость» (progress). В первой из них содержатся данные о студен-
тах, а во второй — сведения об их успеваемости. Поскольку в процессе обучения сту-
денты сдают целый ряд зачетов и экзаменов, то в таблице «Успеваемость» для каждо-
го студента может присутствовать несколько строк. Для большинства из них это так
74


и будет, хотя, в принципе, возможна ситуация, когда для какого-то студента в таб-
лице «Успеваемость» не окажется ни одной строки (если, он, например, находится в
академическом отпуске).
Конечно, должна быть возможность определить, какому студенту принадлежат те
или иные оценки, т. е. какие строки в таблице «Успеваемость» с какими строками в
таблице «Студенты» связаны. Для решения этой задачи не требуется в каждой строке
таблицы «Успеваемость» повторять все сведения о студенте: номер зачетной книж-
ки, фамилию, имя и отчество, данные документа, удостоверяющего личность. Доста-
точно включить в состав каждой строки таблицы «Успеваемость» лишь уникальный
идентификатор строки из таблицы «Студенты». В нашем случае это будет номер за-
четной книжки — record_book. Данный атрибут и будет являться внешним ключом
таблицы «Успеваемость». Таким образом, получив строку из таблицы «Студенты»,
можно будет найти все соответствующие ей строки в таблице «Успеваемость», сопо-
ставив значения атрибутов record_book в строках обеих таблиц. В результате мы смо-
жем получить все строки таблицы «Успеваемость», связанные с конкретной строкой
из таблицы «Студенты» по внешнему ключу.
Таблица «Успеваемость» будет


Достарыңызбен бөлісу:
1   ...   66   67   68   69   70   71   72   73   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет