Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 Базы данных.doc
Скачиваний:
20
Добавлен:
18.02.2016
Размер:
258.05 Кб
Скачать
  1. Нормализация таблиц при проектировании базы данных.

Нормализация таблиц базы данных - первый шаг на пути проектирования структуры реляционной базы данных. Теория нормализации реляционных баз данных была разработана в конце 70-х годов 20 века. Выделяются шесть нормальных форм, пять из которых так и называются: первая, вторая, третья, четвертая, пятая нормальная форма, а также нормальная форма Бойса-Кодда, лежащая между третьей и четвертой.

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

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

К основным требованиям должна удовлетворять каждая из нормальных форм.

Первая нормальная форма:

  • запрещает повторяющиеся столбцы (содержащие одинаковую по смыслу информацию)

  • запрещает множественные столбцы (содержащие значения типа списка и т.п.)

  • требует определить первичный ключ для таблицы, то есть тот столбец или комбинацию столбцов, которые однозначно определяют каждую строку

Вторая нормальная форма

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

Третья нормальная форма

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

Итогом нормализации базы данных - это устранение (или, по крайней мере, серьезное сокращение) избыточности, дублирования данных. Как следствие, значительно сокращается вероятность появления противоречивых данных, облегчается администрирование базы и обновление информации в ней, сокращается объем дискового пространства.

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

  1. Характеристики основных архитектур баз данных.

Локальные базы данных и архитектура «файл-сервер».

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

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

Однако архитектура «файл-сервер» имеет и существенные недостатки:

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

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

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

Удаленные базы данных и архитектура «клиент-сервер»

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

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

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

  • Снижение нагрузки на сеть, поскольку теперь в ней циркулирует только нужная информация.

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

  • Уменьшение сложности клиентских приложений за счет отсутствия в них кода, связанного с контролем БД и разграничением доступа к ней.

Для реализации архитектуры «клиент-сервер» обычно используются многопользовательские СУБД, например, Oracle или Microsoft SQL Server.

Описанная архитектура является двухуровневой – приложение-клиент и сервер БД. Клиентское приложение также называют сильным, или «толстым», клиентом. Дальнейшее развитие данной архитектуры привело к появлению трехуровнего варианта «клиент-сервер» - приложение-клиент, сервер приложений и сервер БД.

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

Основные достоинства трехуровневой архитектуры «клиент-сервер» состоят в следующем:

  • разгрузка сервера от выполнения части операций, перенесенных на сервер приложений;

  • уменьшение размера клиентских приложений за счет разгрузки их от лишнего кода;

  • единое поведение всех клиентов;

  • упрощение настройки клиентов – при изменении общего кода сервера приложений автоматически изменяется поведение приложений-клиентов.