Связи между таблицами

Вид материалаДокументы

Содержание


Связь Один-ко-многим
Повторяющиеся группы.
СУБД – это программное обеспечение, предназначенное для создания и хранения БД и управления ими.
ППО БД – прикладное программное обеспечение баз данных. Это некоторый прикладной язык программирования для создания форм, отчето
Непосредственное управление данными во внешней памяти.
Управление буферами оперативной памяти.
Например, если вы вводите данные в какой
3.1. Поддержка целостности данных и их восстановление
3.2. Резервное копирование – полное дублирование (зеркальный диск) или через журналы
3.3. Средства восстановления данных
Подобный материал:
Связи между таблицами

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

После того, как определены поля для связи, следует оценить тип связи.

Связь Один-ко-многим - наиболее часто используемый тип связи между таблицами. В такой связи каждой записи в таблице А может соответствовать несколько записей в таблице В (поля с этими записями называются ключами), а запись в таблице В не может иметь более одной соответствующей ей записи в таблице А.

Многие-ко-многим одной записи в таблице А может соответствовать несколько записей в таблице В, а одной записи в таблице В - несколько записей в таблице А. Такая схема реализуется только с помощью третьей (связующей) таблицы, ключ которой состоит, по крайней мере, из двух полей, одно из которых является общим с таблицей А, а другое - общим с таблицей В.

Один-к-одному запись в таблице А может иметь не более одной связанной записи в таблице В и наоборот. Этот тип связи используется не очень часто, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением Один-к-одному применяют для разделения очень широких таблиц, для отделения части таблицы в целях ее защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице.






Для определения связей между таблицами следует:
  1. закрыть все открытые таблицы и выполнить команду меню * Сервис *Схема данных”
  2. добавить таблицы в окно “Схема данных”;
  3. перенести с помощью мыши ключевое поле одной таблицы в другую,
  4. определить тип связи (1:1, 1:М, М:1) (двойной щелчок по линии связи открывает окно определения типа связей).

Нельзя изменить тип данных для поля, которое связывает таблицу с другой таблицей. Предварительно нужно удалить установленную связь через меню «Схема данных»..

Часто связи таблиц устанавливают при создании таблиц с помощью «мастера подстановок». Например, для поля «Код владельца» таблицы «Автотранспорт» указывается, что список берется из таблицы «Владельцы», полем связи будет «код владельца» этой таблицы, а вот для выбора будут предлагаться ФИО и, к примеру, адрес.




Чтобы избавиться от избыточности данных, необходимо нормализовать таблицу БД, выделив повторяющиеся данные и поместив их в отдельную таблицу. Итак, нормализация – это процесс, позволяющий избавляться от избыточности и сложных структур записей.

Основной принцип БД – каждая информация должна храниться только в одном месте.

Записи с громоздкой структурой не только усложняют схемы базы данных, это создает дополнительные трудности для СУБД при обработке таблиц БД. Поэтому обязательно нужно производить нормализацию таблиц. Кстати, несмотря на свое «грозное» название, нормализация – довольно несложный процесс, многие СУБД могут выполнять его автоматически. И именно здесь проявляется вся мощь механизма внешних ключей: СУБД сама может проанализировать вашу БД, выявить повторяющиеся записи, создать отдельную таблицу, а затем переопределить связи.

Достоинства нормализации на примере 2-х таблиц «Товары» и «Продавцы»:
  1. нет дублирования информации;
  2. при изменении адреса фирмы, достаточно изменить его в только таблице Продавцы;
  3. защита от неправильного ввода: можно выбрать только фирму, которая заранее введена в таблицу Продавцы.

Нормальные формы.

В первой нормальной форме устраняются повторяющиеся атрибуты или группы атрибутов, т.е. производится выявление неявных сущностей, «замаскированных» под атрибуты.

Первая нормальная форма требует, чтобы каждое поле таблицы БД было неделимым и не содержало повторяющихся групп.

Неделимость означает, что поля или атрибуты не должны делиться на более мелкие элементы. Например, адрес. Если осуществляются отдельные действия с улицами или домами, скажем нужно отбирать людей, живущих на одной улице или в одном доме, то их надо хранить отдельно. Например, в БД по выборам, части адреса нужно хранить отдельно в полях – улица, дом, корпус, квартира. В БД где адреса используются только целиком, их делить не надо.

Повторяющиеся группы. Например, если в БД «Библиотека» в заказы добавить поле «Кто выдал книгу», то так как количество библиотекарей ограниченно, то ФИО будут повторяться и удобнее выделить их в отдельную таблицу. Таких справочников (стран, улиц, видов машин и т.п.) много в любой БД.

Во второй нормальной форме устраняются атрибуты, зависящие только от части уникального идентификатора (первичного ключа). Эта часть уникального идентификатора определяет отдельную сущность.

Мы не будем работать со сложными ключами. В простом случае это означает, что у таблицы должен быть ключ.

В третьей нормальной форме устраняются атрибуты, зависящие от атрибутов, не входящих в первичный ключ. Эти атрибуты являются основой отдельной сущности.

Например, в данных об автомашине можно хранить и фамилию ее владельца, и его адрес, телефон, паспортные данные. Но правильным будет вынести их в отдельную таблицу. А затем связать эти две таблицы по коду владельца машины.

Таблицы связываются по принципу – в одной таблице хранится ключ другой таблицы, как одно из полей. Оно называется «внешним ключом». При этом они должны иметь одинаковый тип, за одним исключением. Ключ может быть счетчиком, а связываемое поле – числовым, но в этом случае размер полей должен быть одинаковым – длинное целое.

Если две таблицы связаны – одна называется главной, а другая подчиненной (или связанной, или дочерней). Главной считается та таблица, которая связана по ключу (в которой при связи 1:М одна запись).

Для организации связей в СУБД ACCESS войдите в меню «Сервис», далее в пункт «Схема данных», далее с помощью правой кнопки мыши добавьте таблицы, которые хотите связать. Для организации связи перетащите связываемое поле одной таблицы к ключу другой таблицы. Уровень связи – один-к-одному или один-ко-многим будет определен автоматически и очень просто. Если индексы не допускают совпадений – то один-к-одному, в противном случае - один-ко-многим. Еще раз напоминаю, что для связи многие-ко-многим создается связующая таблица.

Для защиты целостности данных по ссылкам может быть выставлен один из вариантов:
  • запрет удаления записей в главной таблице, если есть связанные записи (обеспечение целостности);
  • каскадное обновление связанные полей (изменения в главной таблице несут за собой автоматическое изменение в подчиненной). Например, при замене владельца транспортного предприятия, автоматически на него будут переписаны и все машины.
  • каскадное удаление связанных записей. При удалении записи в главной таблице удаляются все связанные записи подчиненной таблицы. Например, при удалении владельца из таблицы «Владельцы» удаляются все принадлежащие ему машины из таблицы «Автотранспорт».





Системы управления базами данных

Распределенная база данных - совокупность баз данных, физически распределенная по взаимосвязанным ресурсам вычислительной сети и доступная для совместного использования.

Для баз данных необходимо рассмотреть ее свойство – целостность. Целостность базы данных означает, что БД содержит полную и непротиворечивую информацию, необходимую для корректного функционирования приложений. Для обеспечения целостности накладывают ограничения целостности. Ограничения целостности реляционных БД бывает двух видов: по ключу и по ссылкам.

По ключу означает, что не может быть двух записей с одинаковым значением ключевого поля.

По ссылкам – не может быть поля в подчиненной таблице, для которого не задано значение в главной таблице.

Реляционная модель БД была предложена сотрудником фирмы IBM Эдгаром Коддом (Edgar Codd) в начале 70-х годов. Название Relational DataBases дает повод предположить, что основой данной модели являются связи между таблицами БД. Но в данном случае слово relational следует переводить как «отношение». Связь и отношение, хотя и близкие понятия, но все-таки не одно и то же. В основе реляционной теории БД лежит четко определенная математическая модель. Раздел математики, изучающий отношения, называется реляционной алгеброй. Отсюда и название РБД – базы данных, информация в таблицах которых обрабатывается средствами реляционной алгебры.

Обращение к базам данных осуществляется с помощью системы управления базами данных (СУБД). СУБД не зависит от прикладных программ.

СУБД – это программное обеспечение, предназначенное для создания и хранения БД и управления ими.

Под управлением базами данных понимается обеспечение следующих функций:
  • Создание БД, т.е. таблиц различной структуры и связей между ними
  • хранение БД на внешних носителях и обеспечение доступа для ввода, редактирования и удаления записей
  • просмотр и поиск информации из БД.

ППО БД – прикладное программное обеспечение баз данных. Это некоторый прикладной язык программирования для создания форм, отчетов, расчетных программ и т.д.

Таким образом, при создании информационных систем на основе баз данных используется трехуровневая система




Если прикладное программное обеспечение и СУБД написаны одним разработчиком, то они взаимодействуют на основе собственного языка. Во всех остальных случаях используется универсальный язык взаимодействия SQL (Structured Query Language), что в переводе означает - структурированный язык запросов. Целью его разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Поддержка языка SQL является обязательной для любой СУБД.

Разделение программ работы с базами данных на ППО БД (примерами ее являются Microsoft Access, C++, Visual Basic, Delphi) и СУБД (примерами являются Microsoft Access, Oracle, Paradox, Microsoft SQL Server и IBM DB2) позволяет заменять СУБД на более мощную, не трогая прикладного программного обеспечения, создание которого всегда является значительно более затратным, чем описание структуры файлов и запросов (что требуется для СУБД).

Давайте рассмотрим ситуацию на примере Microsoft Access. Он одновременно является и прикладным программным обеспечением и имеет собственную СУБД. Многие организации создают свои небольшие системы на этом продукте. Преимуществом его является то, что он входит в Microsoft Office, а значит платить за него дополнительно не надо. В то время, как одно рабочее место под Oraсle стоит от 300 до 600 долларов. Остальные фирмы по созданию СУБД придерживаются аналогичной ценовой политики. Кроме того, он удобен для людей, работающих с Word и Excel, так как они имеют одинаковый пользовательский интерфейс (интерфейс - совокупность средств и методов, при помощи которых пользователь взаимодействует с программой).

Но со временем может увеличиться количество пользователей (а Microsoft Access эффективно поддерживает одновременно не более 5-6 пользователей) или объем данных, количество таблиц. В этом случае все описания оставляют на Access, а в качестве СУБД используют Microsoft SQL Server, Paradox или другие. В Microsoft Access даже включена услуга по преобразованию базы данных в формате Access в формат Microsoft SQL Server.

Функции СУБД.

СУБД обеспечивает:
  1. Непосредственное управление данными во внешней памяти. Как работает эта функция в определенном СУБД можно оценить по быстроте обеспечения доступа к данным, скорости поиска, устойчивости к сбоям.

К управлению данными относится
  • описание и сжатие данных БД, работу с транзакциями;
  • манипулирование данными (запись, редактирование, удаление, поиск);
  • физическое размещение и сортировку записей;

    После описания таблиц в Access формируется SQL предложение на создание таблицы вместе со всеми ее связями и индексами и СУБД автоматически выделяет место на диске и создает в нем файлы определенной структуры.

Транзакции

Транзакция - это последовательность операций над БД, рассматриваемых как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД, т.е. в случаях сбоя компьютерного обеспечения во время выполнения комплекса операций одной транзакции или повторяется весь комплекс операций, или производится откат, так чтобы весь комплекс был не выполнен. Примером транзакции (цикла операций) можно считать перевод денег с одного счета на другой в банке. Невозможно, прервать операцию на середине (с одного счета сняты, а на другой еще не поступили). Или перевод списка товаров из БД склада в БД магазина.
  1. Управление буферами оперативной памяти. СУБД обычно работают с БД значительного размера; по крайней мере, этот размер обычно существенно больше доступного объема оперативной памяти. Понятно, что если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственным способом реального увеличения этой скорости является буферизация данных в оперативной памяти. Поэтому в развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов.

Например, если вы вводите данные в какой-либо форме и для поля «тип транспорта» постоянно вызываете список значений, конечно, он должен находиться в оперативной памяти, а не вызываться каждый раз с диска.

3. Безопасность, поддержка целостности данных и их восстановление:

СУБД должна включать в себя следующие функции с целью поддержания безопасности и надежности работы:

3.1. Поддержка целостности данных и их восстановление

Целостность базы данных - свойство базы данных, означающее, что БД содержит полную и непротиворечивую информацию, необходимую для корректного функционирования приложений.

Есть два базовых требования целостности, которые должны поддерживаться в любой реляционной СУБД – по ключу и по ссылкам, мы об этом уже говорили.

3.2. Резервное копирование – полное дублирование (зеркальный диск) или через журналы

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

В случаях с БД нельзя обойтись только резервным копированием в связи с большими объемами информации и числом пользователей. Ведение журнала дает возможность эффективного восстановления информации. Обычно это делается автоматически следующим образом: устанавливается последняя работающая резервная копия и последовательно по журналу выполняются все операции за весь период, следующий за созданием резервной копии.

3.3. Средства восстановления данных

3.4. Средства разграничения доступа

4. Манипулирование данными с помощью языка программирования баз данных

Для манипулирования данными в СУБД необходима поддержка языков БД. Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).

В Microsoft Access поддерживается два языка программирования баз данных Visual Basic for Application (свой внутренний язык) и SQL – язык обращения к СУБД.


Базы данных и СУБД располагаются на сервере. Сервер - в информационных сетях - компьютер или программная система, предоставляющий удаленный доступ к своим службам или ресурсам с целью обмена информацией. Сервер работает по заданиям клиентов. После выполнения задания сервер посылает полученные результаты клиенту, инициировавшему это задание. Сервер баз данных - сервер, выполняющий обработку запросов, направляемых базе данных.

На клиентских компьютерах устанавливается прикладное программное обеспечение баз данных.