Методические указания к задаче 2.
Методические указания к задачам
Реляционная база данных: таблицы, столбцы и строки.
С точки зрения пользователя, любая реляционная база данных - это совокупность одной или нескольких таблиц, и ничего кроме таблиц.
Таблицы.
По определению любая таблица:
- является тем компонентом структуры базы данных, в котором содержатся собственно данные;
- содержит данные, соответствующие какому-то заданному объектному типу, где под ним понимается некий класс различимых объектов, или/и событий, или/и концепций реального мира с общими свойствами (например, студенты, кинофильмы, гены, пациенты, погодные условия или бизнес-встречи - это разные объектные типы, поэтому вам следует хранить данные о, скажем, пациентах и бизнес-встречах в разных таблицах);
- является двумерной сеткой, образованной пересечением строк и столбцов.
- содержит на каждом пересечении строки и столбца некий элемент данных, называемый значением;
- всегда содержит не менее одного столбца, но может не содержать ни одной строки (всякая таблица, не имеющая строк, называется пустой таблицей);
- имеет имя, которое внутри любой базы данных, содержащей данную таблицу, является уникальным.
Столбцы
Столбцы любой заданной таблицы отличаются следующими свойствами:
- каждый столбец представляет какой-то конкретный атрибут (свойство) того объектного типа, который отображается этой таблицей (например, в таблице employees некий столбец по имени hire_date мог бы содержать даты найма сотрудников на работу);
- данные, вводимые в любую позицию столбца, являются однозначными (атомарными, неделимыми);
- порядок следования столбцов (при просмотре таблицы слева направо) не имеет значения.
Строки
Перечислим характеристики строк в произвольной заданной таблице:
- каждая строка описывает какой-нибудь объект (реального мира), являющийся уникальной реализацией объектного типа (например, какой-нибудь студент или определенная бизнес-встреча);
- каждая строка в каждом столбце содержит или какое-нибудь значение (ненулевое), или элемент null;
- порядок следования строк при просмотре таблицы (скажем, сверху вниз) не имеет значения;
- в любой таблице в любой паре строк найдется хотя бы один столбец, значения в котором и в строках этой пары различны;
- в любой таблице каждая строка однозначно идентифицируется своим первичным ключом.
Первичные ключи
Очевидно, что каждая база данных должна работать так, чтобы можно было обратиться к произвольному значению, хранящемуся в любой из ее таблиц. Но, поскольку все значения размещаются в таблицах, точнее - на пересечениях строк и столбцов этих таблиц, очевидно и то, что местоположение любого значения однозначно определяется, если известны конкретные таблица, столбец и строка. Не менее очевидно, что любые таблицу и столбец можно однозначно идентифицировать по их уникальным номерам. Однако строки уникальных имен не имеют. Тем не менее нам нужен механизм их однозначной идентификации. Такой механизм в реляционной модели существует и называется первичный ключ (Primary key). Поскольку, как мы видим, первичный ключ - это некая функция на строках произвольной таблицы, ее удобно связать со столбцами этой таблицы, которые тоже принимают свои значения на строках, то есть являются их функциями. Поэтому первичный ключ надо представлять себе как столбец особого рода, использующийся для уникальной идентификации каждой строки таблицы.
Внешние ключи:
Поскольку разные таблицы содержат информацию о разных объектных типах, должен быть способ осмысленного перемещения от таблицы к таблице. Так вот, рассматриваемая модель предоставляет нам такой механизм — внешний ключ (или вторичный ключ — Foreign key), который применяют для соединения одной произвольной таблицы с другой. Любой внешний ключ обладает следующими свойствами:
- является или одним столбцом, или группой столбцов в некоторой таблице, но таким столбцом или группой таких столбцов, что их значения или связаны со значениями столбцов другой какой-то таблицы, или содержат ссылки на значения столбцов этой таблицы;
- позволяет строкам из одной какой-нибудь таблицы иметь соответствующие им строки в другой таблице;
- таблица, которая содержит внешний ключ, называется указывающей, или дочерней, а таблица, на которую этот внешний ключ указывает, - указываемой, или материнской;
- устанавливает прямую взаимосвязь с первичным (или альтернативным) ключом материнской таблицы. Поэтому внешний ключ может принимать только те значения, которые уже принял первичный (или альтернативный) ключ в материнской таблице, или специальное значение NULL, если соответствующим столбцам разрешается его принимать. Это ограничение называется ссылочной целостностью. Например, любая строка в таблице appointments, содержащей, скажем, специальную информацию о визите к врачу, должна иметь связанную с ней строку в материнской таблице patients, где находится, предположим, специальная информация о тех пациентах, которые, кроме всего прочего, совершают визиты к врачу. В противном случае появились бы визиты к врачу несуществующих пациентов или визиты неизвестно кого. Любая строка произвольной дочерней таблицы, не имеющая связанной строки в материнской таблице, называется висячей;
- может иметь имя, отличное от имени родительского ключа;
- значения внешнего ключа в общем случае не являются уникальными в собственной таблице.