11)Ключи и связи
Customers |
*CustomersID о-> |
CompanyName |
City |
Country |
Orders |
*CustomerID |
OrderId |
OrderDate |
Freight |
ShipAddres |
Поскольку записи в таблице неупорядочены, как правило, требуется1 или несколько полей для уникальной идентификации каждой записи – такое поле (поля) называется первичным ключом (PK)
PK любой таблицы обязан содержать уникальные, непустые значения для каждой записи.
*Если PK состоит больше, чем из 1 поля, он называется составным первичным ключом.
Как правил, любая СУБД состоит из нескольких связанных таблиц.
*Поле, указывающее на запись в другой таблице, связанной с данной записью, называется внешним ключом.
Поле/набор полей, чьи значения совпадают с имеющимся значением PK другой таблицы – такое взаимоотношении между таблицами называется связью.
Связь между таблицами устанавливается путём присваивания значений внешнего ключа одной таблицы значениям первичного ключа другой таблицы.
*Если каждый клиент в таблице customer может разместить только 1 заказ, то говорят, что эти 2 таблицы связаны соотношением 1:1.
*Если каждый клиент в таблице customer может разместить 0,1 или много заказов, то эти 2 таблицы связаны соотношением 1: многим или соотношением master-detail.
*Если группе записей из таблицы А соответствует множество записей из таблицы В, то такое соотношение называется многие ко многим(many-to-many)
Наиболее часто используется (many-to-many).
* Таблица, содержащая внешний ключ называется detail-таблицей.
*Таблица, содержащая PK, определяющий возможные значения внешних ключей называется master-таблицей.
*Группа связанных таблиц называется схемой БД.
*Информация о таблицах, полях, первичных и внешних ключах, а так же иных объектах БД называется метаданными.
*Любые операции с данными в БД (выбор, вставка, удаление, обновление, изменение, выбор метаданных) называется запросом к БД (query). Обычно запросы формируются на к-либо языке (зависит от СУБД).
12) Ссылочная целостность
– формируется в виде правил, которые выполняют современные СУБД:
1) Первичный ключ любой таблицы должен содержать непустые, уникальные значения для данной таблицы. Если СУБД контролирует уникальность PK, то при попытке присвоить PK значение, уже имеющееся в другой записи СУБД генерирует сообщение об ошибке, которое может быть передано в приложение, с помощью которого пользователь манипулирует с данными.
2) Для таблицы one-to-many:
Внешний ключ detail-таблицы должен содержать только те значения, которые имеются среди значений первичного ключа master-таблицы.
Если корректность значений вн-х ключей не контролируется СУБД, то говорят, о нарушении ссылочной целостности, в противном случае, при попытке присвоить вн-му ключу значение, отсутствующее среди значений первичных ключей master-таблицы, либо при удалении/модификации записей master-таблицы, приводящих к нарушению ссылочной целостности, СУБД сгенерирует диагностическое сообщение , которое передаётся в клиентское приложение.