Основные этапы проектирования баз данных
Концептуальное (инфологическое) проектирование – построение формализованной модели предметной области. Такая модель строится с использованием стандартных языковых средств, обычно графических, например ER-диаграмм. Такая модель строится без ориентации на какую-либо конкретную СУБД.
Основные элементы данной модели:
1. Описание объектов предметной области и связей между ними.
2. Описание информационных потребностей пользователей.
3. Описание документооборота. Описание документов, используемых как исходные данные для БД и документов, составляемых на основе БД.
4. Описание алгоритмических зависимостей между данными.
5. Описание ограничений целостности, т.е. требований к допустимым значениям данных и к связям между ними.
Логическое (даталогическое) проектирование – отображение инфологической модели на модель данных, используемую в конкретной СУБД, например на реляционную модель данных. Для реляционных СУБД даталогическая модель – набор таблиц, обычно с указанием ключевых полей, связей между таблицами.
Физическое проектирование – реализация даталогической модели средствами конкретной СУБД, а также выбор решений, связанных с физической средой хранения данных: выбор методов управления дисковой памятью, методов доступа к данным, методов сжатия данных.
На этапе инфологического проектирования в ходе сбора информации о предметной области требуется выяснить:
1 основные объекты предметной области; 2 атрибуты объектов;
3 связи между объектами; 4 основные запросы к БД.
- Информационно-логическая модель предметной области
Инфологическая модель является средством структуризации предметной области и понимания концепции семантики данных. Инфологическую модель можно рассматривать в основном как средство документирования и структурирования формы представления информационных потребностей, которая обеспечивает непротиворечивое общение пользователей и разработчиков системы.
Все внешние представления интегрируются на инфологическом уровне, где формируется инфологическая (каноническая) модель данных, которая не является простой суммой внешних представлений данных.
Инфологический уровень представляет собой информационно-логическую модель (ИЛМ) предметной области, из которой исключена избыточность данных и отображены информационные особенности объекта управление без учета особенностей и специфики конкретной СУБД. То есть инфологическое представление данных ориентированно преимущественно на человека, который проектирует или использует базу данных.
Логический (концептуальный) уровень построен с учетом специфики и особенностей конкретной СУБД. Этот уровень представления данных ориентирован больше на компьютерную обработку и на программистов, которые занимаются ее разработкой. На этом уровне формируется концептуальная модель данных, то есть специальным способом структурированная модель предметной области, которая отвечает особенностям и ограничениям выбранной СУБД. Модель логического уровня, поддерживаемую средствами конкретной СУБД, называют еще даталогической.
- Схемы и подсхемы данных
Схема системы базы данных (от англ. Databasescheme) - ее структура, описанная на формальном языке, поддерживаемом системой управления базами данных (СУБД). В реляционных базах данных схема определяет таблицы, поля в каждой таблице, а также отношения между полями и таблицами.
Схемы в общем случае хранятся в словаре данных. Хотя схема определена на языке базы данных в виде текста, термин часто используется для обозначения графического представления структуры базы данных.
- Проектирование баз данных по принципам нормализации.
При проектировании БД информационной системы проводится анализ целей этой системы и выявляются требования к ней пользователей.
Результатом проектирования должны стать таблицы, корректно и эффективно представляющие объекты и их взаимосвязи.
Реляционная БД считается корректной и эффективной, если обладает следующими характеристиками:
1) отсутствие избыточности; 2) согласованность, предотвращающая потери данных;
3) минимальное использование NULL-значений.
Схемой реляционной базы данных называется набор заголовков отношений, входящих в базу данных, и их связей. Схема содержит структурную и семантическую информацию.
Некую единую сводную таблицу, в которой представлены все необходимые данные о предметной области, называют универсальным отношением.
Подобная генеральная таблица может быть весьма неэффективной из-за двух основных изъянов разработки: избыточности и несогласованности.
Использование универсального отношения, содержащего избыточные данные, может порождать три проблемы несогласованности, называемые аномалиями: аномалии вставки, удаления и обновления.
Процесс упорядочения, структурирования представляемых данных называется нормализацией.
Недостатки глобальной таблицы:
- жесткость; - ненадежность;
- повышенный расход ресурсов; - избыточность.
Под жесткостью понимается обязательная модификация самой таблицы при изменении постановки задачи.
Избыточность– необходимость хранения полной информации, например, названия фирмы в каждой записи о товаре.
Потенциальная противоречивость– необходимость изменять значение атрибута во всех записях, при ошибке программирования дорого обходится.
Аномалия включения– не может быть записей о поставщике, если он не поставил ни одного товара.
Аномалия удаления– при удалении всех товаров, поставляемых поставщиком, теряется его адрес и др.
Нормализация– это процесс проектирования, позволяющий гарантировать эффективность структур данных в реляционной БД. При проектировании данные разбиваются на несколько связанных таблиц, с соблюдением специальных требований нормализации.
Основой процесса нормализации является предложенный Э.Коддом в рамках реляционной теории формальный аппарат, называемый нормализацией отношений.
Следует отметить, что процесс нормализации не имеет отношения к физическому размещению данных. Речь идет только о пользовательском и глобальном логическом представлении данных
Процесс проектирования реляционной базы на основе метода нормализации преследует две основных цели: * избежать избыточности хранения данных;
* устранить аномалии обновления отношений.
- Функциональные зависимости
Реляционная база данных содержит как структурную, так и семантическую информацию.
Структура базы данных определяется числом и видом включенных в нее отношений, и связями типа "один ко многим", существующими между кортежами этих отношений.
Семантическая часть описывает множество функциональных зависимостей, существующих между атрибутами этих отношений. Дадим определение функциональной зависимости.
Если даны два атрибута X и Y некоторого отношения, то говорят, что Y функционально зависит от X, если в любой момент времени каждому значению X соответствует ровно одно значение Y. Функциональная зависимость обозначается X -> Y.
Отметим, что X и Y могут представлять собой не только единичные атрибуты, но и группы, составленные из нескольких атрибутов одного отношения. Можно сказать, что функциональные зависимости представляют собой связи типа "один ко многим", существующие внутри отношения.
Детерминантом функциональной зависимости X -> Y называется X (атрибут или группа атрибутов в левой части зависимости).
Некоторые функциональные зависимости могут быть нежелательны.
Избыточная функциональная зависимость - зависимость, заключающая в себе такую информацию, которая может быть получена на основе других зависимостей, имеющихся в базе данных.
- Нормальные формы. Характеристики 1NF, 2NF, 3NF, BCNF
Отношение находится в 1NF, если любые значения всех атрибутов являются атомарными и в отношении нет повторяющихся групп.
Очевидно, если произвольное отношение отвечает требованиям реляционной модели, оно соответственно удовлетворяет определению 1NF.
Отношение находится в 2NF, если оно соответствует 1NF и его неключевые атрибуты полностью зависят от всего первичного ключа.
Отношение находится в 3NF, если оно соответствует 2NF и не содержит транзитивных зависимостей.
Отношение находится в BCNF, если оно соответствует 3NF и если и только если любая функциональная зависимость между её полями сводится к полной функциональной зависимости от возможного ключа.
- Понятие и назначение денормализации
Денормализация (англ. denormalization) — намеренное приведение структуры базы данных в состояние, не соответствующее критериям нормализации, обычно проводимое с целью ускорения операций чтения из базы за счет добавления избыточных данных.
Устранение аномалий данных в соответствии с теорией реляционных баз данных требует, чтобы любая база данных была нормализована, то есть соответствовала требованиям нормальных форм (как минимум, первых трёх). Соответствие требованиям нормализации минимизирует избыточность базы данных и обеспечивает наибольшую теоретически доступную гибкость.
Однако нормализация вступает в противоречие с требованиями эффективности работы с базой данных. В результате нормализации целостные таблицы разбиваются на связанные ссылками наборы таблиц. Запрос к одной ненормализованной таблице как по времени, так и по памяти эффективнее запроса, выбирающего те же данные из группы связанных таблиц.
Вследствие этого в ситуациях, когда эффективность оказывается более важна, чем гибкость и объём БД, может проводиться денормализация — преобразование БД, при котором связанные ссылками таблицы объединяются для более эффективного доступа. При денормализации возможно появление дублирования информации в БД.
- Операции реляционной алгебры
Операции реляционной алгебры являются замкнутыми — работают с отношениями и результат является отношением.
Теоретико множественные функции:
· Объединение
· Пересечение
· Разность
· Прямое произведение
· Специальные реляционные алгебры:
· Выборка («Ограничение»)
· Проекция
· Соединение
· Деление
- Языки запросов. Запрос по образцу (QBE)
Языки запросов - это искусственный язык, на котором делаются запросы к базам данным и другим информационным системам, особенно к информационно-поисковым системам. Язык, на котором формулируются запросы к поисковым системам называется языком поисковых запросов или информационно-поисковым языком. В различных поисковых системах язык запросов может различаться, однако обычно он является некоторым подобием языка регулярных выражений с дополнениями, связанными со спецификой работы той или иной поисковой системы. Знание и правильное применение языка запросов конкретной поисковой машины улучшает и упрощает пользователю процесс поиска информации. Язык поисковых запросов состоит из логических операторов, префиксов обязательности, возможности учета расстояния между словами, морфологии языка, регистра слов, расширенных операторов, возможностей расширенного поиска, уточнения поиска.
QBE - запрос по образцу – средство для отыскания необходимой информации в базе данных. Он формируется не на специальном языке, а путем заполнения бланка запроса в окне Конструктора запросов.
- Язык запросов SQL, общие характеристики
SQL – запросы: универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.Вопреки существующим заблуждениям, SQL в его чистом (базовом) виде является информационно-логическим языком, а не языком программирования. Вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений, с учётом которых язык уже вполне может рассматриваться в качестве языка программирования.SQL основывается на реляционной алгебре.Язык SQL делится на четыре части:
* операторы определения данных (англ. DataDefinitionLanguage, DDL)
* операторы манипуляции данными (англ. DataManipulationLanguage, DML)
* операторы определения доступа к данным (англ. DataControlLanguage, DCL)
* операторыуправлениятранзакциями (англ. TransactionControlLanguage, TCL)
Запрос — команда, которую вы даете вашей программе базы данных. Запросы это часть языка DML. Все запросы в SQL состоят из одиночной команды. Структура этой команды обманчиво проста, потому что вы должны расширять ее так, чтобы выполнить высоко сложные оценки и обработки данных.
Sql - это запросы, которые составляются (программистами) из последовательности SQL – инструкций. Эти инструкции задают, что надо сделать с входным набором данных для генерации выходного набора. Все запросы Access строит на основе SQL – запросов, чтобы посмотреть их, необходимо в активном окне проектирования запроса выполнить команду Вид/SQL.
Существует несколько типов запросов: на выборку, на обновление, на добавление, на удаление, перекрестный запрос, создание таблиц. Наиболее распространенным является запрос на выборку. Запросы на выборку используются для отбора нужной пользователю информации, содержащейся в таблицах. Они создаются только для связанных таблиц.
- Основы синтаксиса SQL, выражения и основные операторы языка
Программа на языке SQL представляет собой простую линейную последовательность операторов языка SQL. Язык SQL в своем чистом виде операторов управления порядком выполнения запросов к БД (типа циклов, ветвлений, переходов) не имеет.
Операторы языка SQL строятся с применением:
· зарезервированных ключевых слов;
· идентификаторов (имен) таблиц и столбцов таблиц;
· логических, арифметических и строковых выражений, используемых для формирования критериев поиска информации в БД и для вычисления значений ячеек результирующих таблиц;
· идентификаторов (имен) операций и функций, используемых в выражениях.
Все ключевые слова, имена функций и, как правило, имена таблиц и столбцов представляются 7-мибитными символами кодировки ASCII (иначе говоря - латинскими буквами).
В языке SQL не делается различия между прописными (большими) и строчными (маленькими) буквами, т.е., например, строки SELECT, Select, select представляют собой одно и то же ключевое слово.
Запрещено использование ключевых слов и имен функций в качестве идентификаторов таблиц и имен столбцов. Полный список ключевых слов и имен функций (а он весьма обширен) можно найти в документации на конкретную СУБД.
Оператор начинается с ключевого слова-глагола (например, CREATE - создать, UPDATE - обновить, SELECT - выбрать и т.п.) и заканчивается знаком ; (точка с запятой). Оператор записывается в свободном формате и может занимать несколько строк. Допустимыми разделителями лексических единиц в операторе являются:
· один или несколько пробелов,
· один или несколько символов табуляции,
· один или несколько символов новая строка.
- Разделы (подъязыки) SQL. Типы запросов SQL
Embedded SQL
Это способ записи SQL-выражений прямо в тексте программы. Выражения SQL обрамляются специальными тегами, которые препроцессором (прекомпилятором) преобразуются в конструкции языка программирования.
Наиболее известными являются DB2-прекомпилятор (для традиционных языков программирования для мэйнфреймов) и SQLJ.
Static SQL
Использование статических запросов позволяет снизить временную стоимость обращений к базе данных. Это достигается за счет введения дополнительного шага BIND, выполняемого один раз при установке приложения на указанную БД.
После обработки файла с embedded SQL DB2-прекомпилятор создает особый DBRM (DataBase Request Module) файл, который содержит описание SQL-выражений во внутреннем формате. Для того, чтобы приложение могло взаимодействовать с БД, необходимо связать (BIND) SQL-выражения с БД, то есть, трансформировать DBRM в некоторую описательную сущность в БД, называемую планом (PLAN). Из каждого исходного модуля приложения, взаимодействующего с БД, получается один DBRM. Соответственно, один план может содержать описания для многих модулей. Обыкновенно в этом случае план составляют из пакетов (PACKAGE), а каждый пакет из одной DBRM. Именно пакеты содержат информацию, необходимую БД для быстрого выполнения запроса. Заполнение этой информации будет происходить на этапе BIND еще перед запуском приложения. На этом же шаге происходит валидация запроса - проверка соответствия колонок, типов хост-переменных и т.д. фактическим объектам в БД.
Также объединение static + embedded SQL присутствует в PL/SQL, и, судя по всему, в хранимых процедурах на Transact-SQL.
Dynamic SQL
Динамические запросы применяют в тех случаях, когда неизвестен вид выполняемого запроса (например, в общих клиентах для БД), а также в скриптовых языках, когда о ни о какой компиляции / прекомпиляции не может быть речи. SQL-выражение указывается как строка-значение некоторой переменной. Перед выполнением данного выражение СУБД должна его разобрать и составить план. БД поддерживают осуществление такой подготовки явно (шаг prepare statement) или неявно. Запросы, которым prepare делается явно, называют prepared SQL. Это позволяет один раз подготовить план, а затем много раз быстро выполнять запрос.
Parameterized SQL
Это способ записи prepared SQL с указанием мест для хост-переменных.
Все статические SQL, в которых используются хост-переменные, являются параметризованными - явно отделены SQL-выражения от переменных, по-другому статический SQL не записать. Однако, термин "Parameterized SQL" как правило применяется к динамическим запросам. В строку запроса вставляются спецсимволы '?', и СУБД, при составлении плана, понимает, что при выполнении запроса нужно ожидать некоторое количество хост-переменных определенных типов. Так как план запроса составляется по "голому" запросу без значений переменных, то невозможно изменение запроса путем проведения SQLINJ.
- Основные версии и реализации языка SQL
Реляционная СУБД MicrosoftSQL Server появилась в 1989 году и с тех пор значительно изменилась. Улучшилась масштабируемость продукта, его целостность, удобство администрирования, производительность и функциональные возможности.
Первая версия Microsoft SQL Server, совместно разработанная компаниями Microsoft и Sybase, предназначалась для платформы OS/2. Последующие версии этого сервера баз данных предназначались для платформы Windows NT и со временем были тесно интегрированы с этой операционной системой. Для других платформ версии этого сервера не выпускались и не выпускаются.
Версии Microsoft SQL Server:
1992 г. – v 4.2;
1996 г. – v 6.5;
1999 г. – v 7.0;
2000 г. – v 2000;
2005 г. – v 2005;
2008 г. – v 2008.
В версии 2000 появилась возможность работать с языком XML (eXtensibleMarkupLanguage).
Версия 2000 имеет 6 вариантов: Enterprise, Standard, Developer, Personal, Desktop, Compact Edition.
Существуют различные утилиты, 2 из которых: SQLEnterpriseManager, ISQL (для создания запросов).
Используется язык TransactSQL (TSQL), который основан на стандарте языка SQL – ANSISQL/92. Язык TransactSQL расширен (дополнен) операторами процедурного характера.
Свойства сервера:
1) Поддерживается высокая масштабируемость. SQL Server является масштабируемой БД, это значит, что она может хранить значительные объемы данных и поддерживать работу многих пользователей, осуществляющих одновременный доступ к базе данных.
2) Обеспечение репликации – позволяет поддерживать несколько копий базы данных на различных компьютерах с целью повышения общей производительности системы, а также обеспечивает синхронизацию всех копий. Посредством репликации обновляются данные на общем сервере (пример – слияние данных в конце дня).
3) Поддерживаются RAID-массивы.
4) Обеспечивается многоуровневая защита и санкционирование доступа.
5) Средства резервного копирования.
6) Специальные программные средства для экспорта и импорта данных.
Минимальная конфигурация SQLServer при создании базы данных создает 2 файла: *.mdf и *.ldf (системные и пользовательские).
Система SQL Server может быть реализована либо как клиент-серверная система, либо как автономная "настольная" система. Тип проектируемой вами системы зависит от количества пользователей, которые должны одновременно осуществлять доступ к базе данных, и от характера работ, которые должны выполняться.
- Оператор выборки SELECT, предложения (секции) оператора SELECT
Оператор SELECT является наиболее важным оператором из всех операторов SQL. С его помощью производится выборка (поиск) данных из таблиц БД, которые помещаются в таблицу – результат.
Оператор SELECT имеет следующий формат.
SELECT <Список_выбора>
[INTO <Новая_таблица>]
FROM <Исходная_таблица>
[WHERE <Условие_отбора>]
[GROUP BY <Ключи_группировки>]
[HAVING <Условие_отбора>]
[ORDER BY <Ключи_сортировки> [ASC | DESC] ]
Обязательными элементами в записи оператора являются список выборки и раздел FROM.
- Групповые операции в SQL, агрегатные функции
GROUP BY – выполняет группировку строк таблицы по определенным критериям.
GROUP BY [ALL] <условие группировки> [,…,n]
ORDER BY – предназначен для упорядочения набора данных, возвращаемого после выполнения запроса.
Запросы могут производить обобщённое групповое значение полей точно так же, как и значение одного поля. Это делается с помощью агрегатных функций. Агрегатные функции производят одиночное значение для всей группы таблицы.
Cписок этих функций:
COUNT выдаёт количество строк или не-NULL значений полей, которые выбрал запрос.
SUM выдаёт арифметическую сумму всех выбранных значений данного поля.
AVG выдаёт усреднение всех выбранных значений данного поля.
MAX выдаёт наибольшее из всех выбранных значений данного поля.
MIN выдаёт наименьшее из всех выбранных значений данного поля.
- Основные типы данных языка SQL
* Символьные типы данных - содержат буквы, цифры и специальные символы.
CHAR или CHAR(n) -символьные строки фиксированной длины. Длина строки определяется параметром n. CHAR без параметра соответсвует CHAR(1). Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины строки.
VARCHAR(n) - символьная строка переменной длины. Для хранения данных этого типа отводится число байт, соответствующее реальной длине строки.
INTEGER или INT- целое, для хранения которого отводится, как правило, 4 байта. (Замечание: число байт, отводимое для хранения того или иного числового типа данных зависит от используемой СУБД и аппаратной платформы, здесь приводятся наиболее "типичные" значения) Интервал значений от - 2147483647 до + 2147483648
SMALLINT - короткое целое (2 байта), интервал значений от - 32767 до +32768
* Вещественные типы данных - описывают числа с дробной частью.
FLOAT и SMALLFLOAT - числа с плавающей точкой (для хранения отводится обычно 8 и 4 байта соответсвенно).
DECIMAL(p) - тип данных аналогичный FLOAT с числом значащих цифр p.
DECIMAL(p,n) - аналогично предыдущему, p - общее количество десятичных цифр, n - количество цифр после десятичной запятой.
* Денежные типы данных - описывают, естественно, денежные величины. Если вваша система такого типа данных не поддерживает, то используйте DECIMAL(p,n).
MONEY(p,n) - все аналогично типу DECIMAL(p,n). Вводится только потому, что некоторые СУБД предусматривают для него специальные методы форматирования.
* Дата и время - используются для хранения даты, времени и их комбинаций. Большинство СУБД умеет определять интервал между двумя датами, а также уменьшать или увеличивать дату на определенное количество времени.
DATE - тип данных для хранения даты.
TIME - тип данных для хранения времени.
INTERVAL - тип данных для хранения верменного интервала.
DATETIME - тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд).
* Двоичные типы данных - позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова:
BINARY BYTE BLOB
* Последовательные типы данных - используются для представления возрастающих числовых последовательностей.
SERIAL - тип данных на основе INTEGER, позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последовательности целых чисел.
В заключение следует сказать, что для всех типов данных имеется общее значение NULL - "не определено". Это значение имеет каждый элемент столбца до тех пор, пока в него не будут введены данные.
- Операторы вставки, удаления, модификации данных
Запрос вставкиОператор INSERT применяется для добавления записей в таблицу. Формат оператора:
<оператор_вставки>::=INSERT INTO <имя_таблицы>
[(имя_столбца [,...n])] {VALUES (значение[,...n])| <SELECT_оператор>}
Здесь параметр имя_таблицы представляет собой либо имя таблицы базы данных, либо имя обновляемого представления. Первая форма оператора INSERT с параметром VALUES предназначена для вставки единственной строки в указанную таблицу. Список столбцов указывает столбцы, которым будут присвоены значения в добавляемых записях. Список может быть опущен, тогда подразумеваются все столбцы таблицы (кроме объявленных как счетчик), причем в определенном порядке, установленном при создании таблицы. Если в операторе INSERT указывается конкретный список имен полей, то любые пропущенные в нем столбцы должны быть объявлены при создании таблицы как допускающие значение NULL, за исключением тех случаев, когда при описании столбца использовался параметр DEFAULT. Список значений должен следующим образом соответствовать списку столбцов:
• количество элементов в обоих списках должно быть одинаковым;
• должно существовать прямое соответствие между позицией одного и того же элемента в обоих списках, поэтому первый элемент списка значений должен относиться к первому столбцу в списке столбцов, второй – ко второму столбцу и т.д.
• типы данных элементов в списке значений должны быть совместимы с типами данных соответствующих столбцов таблицы.
Запрос удаленияОператор DELETE предназначен для удаления группы записей из таблицы.
Формат оператора:
<оператор_удаления> ::=DELETE FROM <имя_таблицы>[WHERE <условие_отбора>]
Здесь параметр имя_таблицы представляет собой либо имя таблицы базы данных, либо имя обновляемого представления. Если предложение WHERE присутствует, удаляются записи из таблицы, удовлетворяющие условию отбора. Если опустить предложение WHERE, из таблицы будут удалены все записи, однако сама таблица сохранится.
Запрос обновленияОператор UPDATE применяется для изменения значений в группе записей или в одной записи указанной таблицы.
Формат оператора:
<оператор_изменения> ::= UPDATE имя_таблицы SET имя_столбца=
<выражение>[,...n] [WHERE <условие_отбора>]
Параметр имя_таблицы – это либо имя таблицы базы данных, либо имя обновляемого представления. В предложении SET указываются имена одного и более столбцов, данные в которых необходимо изменить. Предложение WHERE является необязательным. Если оно опущено, значения указанных столбцов будут изменены во всех строках таблицы. Если предложение WHERE присутствует, то обновлены будут только те строки, которые удовлетворяют условию отбора. Выражение представляет собой новое значение соответствующего столбца и должно быть совместимо с ним по типу данных.
- Понятие вложенных подзапросов
Вложенный подзапрос - это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) фразу предложения SELECT или других предложений, использующих WHERE фразу. Вложенный подзапрос может содержать в своей WHERE (HAVING) фразе другой вложенный подзапрос и т.д. Нетрудно догадаться, что вложенный подзапрос создан для того, чтобы при отборе строк таблицы, сформированной основным запросом, можно было использовать данные из других таблиц (например, при отборе блюд для меню использовать данные о наличии продуктов в кладовой пансионата).
Существуют простые и коррелированные вложенные подзапросы. Они включаются в WHERE (HAVING) фразу с помощью условий IN, EXISTS или одного из условий сравнения ( = | <> | < | <= | > | >= ). Простые вложенные подзапросы обрабатываютя системой "снизу вверх". Первым обрабатывается вложенный подзапрос самого нижнего уровня. Множество значений, полученное в результате его выполнения, используется при реализации подзапроса более высокого уровня и т.д.
Запросы с коррелированными вложенными подзапросами обрабатываются системой в обратном порядке. Сначала выбирается первая строка рабочей таблицы, сформированной основным запросом, и из нее выбираются значения тех столбцов, которые используются во вложенном подзапросе (вложенных подзапросах). Если эти значения удовлетворяют условиям вложенного подзапроса, то выбранная строка включается в результат. Затем выбирается вторая строка и т.д., пока в результат не будут включены все строки, удовлетворяющие вложенному подзапросу (последовательности вложенных подзапросов).
- Обзор основных современных СУБД
Среди наиболее ярких представителей систем управления базами данных можно отметить: Lotus Approach, Microsoft Access, Borland dBase, Borland Paradox, Microsoft Visual FoxPro, Microsoft Visual Basic, а также баз данных Microsoft SQL Server и Oracle, используемые в приложениях, построенных по технологии “клиент-сервер”. Фактически, у любой современной СУБД существует аналог, выпускаемый другой компанией, имеющий аналогичную область применения и возможности, любое приложение способно работать со многими форматами представления данных, осуществлять экспорт и импорт данных благодаря наличию большого числа конвертеров. Общепринятыми, также, являются технологи, позволяющие использовать возможности других приложений, например, текстовых процессоров, пакетов построения графиков и т.п., и встроенные версии языков высокого уровня (чаще – диалекты SQL и/или VBA) и средства визуального программирования интерфейсов разрабатываемых приложений. Поэтому уже не имеет существенного значения на каком языке и на основе какого пакета написано конкретное приложение, и какой формат данных в нем используется. Более того, стандартом “де-факто” стала “быстрая разработка приложений” или RAD (от английского RapidApplicationDevelopment), основанная на широко декларируемом в литературе “открытом подходе”, то есть необходимость и возможность использования различных прикладных программ и технологий для разработки более гибких и мощных систем обработки данных. Поэтому в одном ряду с “классическими” СУБД все чаще упоминаются языки программирования VisualBasic 4.0 и Visual C++, которые позволяют быстро создавать необходимые компоненты приложений, критичные по скорости работы, которые трудно, а иногда невозможно разработать средствами “классических” СУБД. Современный подход к управлению базами данных подразумевает также широкое использование технологии “клиент-сервер”.
Таким образом, на сегодняшний день разработчик не связан рамками какого-либо конкретного пакета, а в зависимости от поставленной задачи может использовать самые разные приложения. Поэтому, более важным представляется общее направление развития СУБД и других средств разработки приложений в настоящее время.
- Архитектура клиент-сервер, основные принципы и характеристики
Клиент-сервер – это модель взаимодействия компьютеров в сети. Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса, а компьютер, желающий им воспользоваться, – клиентом. Конкретный сервер характеризуется видом ресурса, которым он владеет. Так, если ресурсом являются базы данных, то речь идет о сервере баз данных, назначение которого – обслуживать запросы клиентов, связанные с обработкой данных.
Взаимодействие сервера БД и приложения-клиента происходит следующим образом: клиент формирует SQL-запрос и отсылает его серверу. Сервер, приняв запрос, выполняет его и результат возвращает клиенту. В клиентском приложении в основном осуществляется интерпретация полученных от сервера данных, реализация интерфейса с пользователем и ввод данных, а также реализация части бизнес-правил.
Технология клиент-сервер подразумевает 4 основных принципа (элемента):
1. Логическое разделение двух типов объектов (запрашивающих и выделяющих, информационно-вычислительные ресурсы);
2. Функциональное разделение и «обособление» процессов;
3. Организация связи (мониторинг, управление) между процессами;
4. Использование различных вычислительных платформ (многоплатформенность);
Преимущества архитектуры "клиент-сервер":
• большинство вычислительных процессов происходит на сервере; таким образом снижаются требования к вычислительным мощностям компьютера клиента;
• снижается сетевой трафик за счет посылки сервером клиенту только тех данных, которые он запрашивал; например, если необходимо сделать из таблицы объемом 10 000 записей выборку, результатом которой будут всего 2 записи, сервер выполнит запрос и перешлет клиенту набор данных из 2 записей;
• упрощается наращивание вычислительных мощностей в условиях развития программного обеспечения и возрастания объемов обрабатываемых данных: проще и чаще дешевле усилить мощности на сетевом сервере или полностью заменить сервер на более мощный, нежели наращивать мощности или полностью заменять 100-500 клиентских компьютеров;
• БД на сервере представляет собой, как правило, единый файл, в котором содержатся таблицы БД, ограничения целостности и другие компоненты БД. Взломать такую БД, даже при наличии умысла, тяжело; значительно увеличивается защищенность БД от ввода неправильных значений, поскольку сервер БД проводит автоматическую проверку соответствия вводимых значений наложенным ограничениям и автоматически выполняет необходимые бизнес-правила.
• сервер реализует управление транзакциями и предотвращает попытки одновременного изменения одних и тех же данных; различные уровни изоляции транзакций позволяют определить поведение сервера при возникновении ситуаций одновременного изменения данных;
• безопасность системы возрастает за счет переноса большей части бизнес-правил на сервер; падает удельный вес противоречащих друг другу бизнес-правил в клиентских приложениях, выполняющих разные действия над БД; определить такие противоречивые бизнес-правила в приложениях клиента все еще можно, однако намного труднее их выполнить ввиду автоматического отслеживания сервером БД правильности данных.
- Характеристики СУБД MicrosoftSQL Server
Реляционная СУБД MicrosoftSQL Server появилась в 1989 году и с тех пор значительно изменилась. Улучшилась масштабируемость продукта, его целостность, удобство администрирования, производительность и функциональные возможности.
Первая версия Microsoft SQL Server, совместно разработанная компаниями Microsoft и Sybase, предназначалась для платформы OS/2. Последующие версии этого сервера баз данных предназначались для платформы Windows NT и со временем были тесно интегрированы с этой операционной системой. Для других платформ версии этого сервера не выпускались и не выпускаются.
Версии Microsoft SQL Server:
1992 г. – v 4.2;1996 г. – v 6.5;1999 г. – v 7.0;2000 г. – v 2000;2005 г. – v 2005;
2008 г. – v 2008.
В версии 2000 появилась возможность работать с языком XML (eXtensibleMarkupLanguage).
Версия 2000 имеет 6 вариантов: Enterprise, Standard, Developer, Personal, Desktop, Compact Edition.
Существуют различные утилиты, 2 из которых: SQLEnterpriseManager, ISQL (для создания запросов).
Используется язык TransactSQL (TSQL), который основан на стандарте языка SQL – ANSISQL/92. Язык TransactSQL расширен (дополнен) операторами процедурного характера.
Свойства сервера:
1) Поддерживается высокая масштабируемость. SQL Server является масштабируемой БД, это значит, что она может хранить значительные объемы данных и поддерживать работу многих пользователей, осуществляющих одновременный доступ к базе данных.
2) Обеспечение репликации – позволяет поддерживать несколько копий базы данных на различных компьютерах с целью повышения общей производительности системы, а также обеспечивает синхронизацию всех копий. Посредством репликации обновляются данные на общем сервере (пример – слияние данных в конце дня).
3) Поддерживаются RAID-массивы.
4) Обеспечивается многоуровневая защита и санкционирование доступа.
5) Средства резервного копирования.
6) Специальные программные средства для экспорта и импорта данных.
Минимальная конфигурация SQLServer при создании базы данных создает 2 файла: *.mdf и *.ldf (системные и пользовательские).
Система SQL Server может быть реализована либо как клиент-серверная система, либо как автономная "настольная" система. Тип проектируемой вами системы зависит от количества пользователей, которые должны одновременно осуществлять доступ к базе данных, и от характера работ, которые должны выполняться.
- Назначение и основные функции Microsoft SQL Server Management Studio
Среда SQL Server Management Studio — это интегрированная среда для доступа, настройки, управления, администрирования и разработки всех компонентов SQL Server. Среда Среда SQL Server Management Studio объединяет большое число графических средств с набором полнофункциональных редакторов сценариев для доступа к SQL Server разработчиков и администраторов с любым опытом работы
Среда SQL Server Management Studio объединяет в едином интерфейсе возможности программ Enterprise Manager, Query Analyzer и Analysis Manager, входивших в состав более ранних выпусков SQL Server. Кроме того, среда Среда SQL Server Management Studio работает со всеми компонентами SQL Server, например со службами Службы Reporting Services, Integration Services, а также с SQL Server Compact 3.5 с пакетом обновления 1 (SP1). Разработчики получают знакомую среду, а администраторы баз данных — единую полнофункциональную программу, объединяющую простые в использовании графические средства и богатые возможности для создания сценариев.
- Работа в архитектуре клиент-сервер с MS Access и MS SQL Server
Для работы с реляционными БД требуется обеспечить решение двух основных задач:
· собственно работу с БД, включающую создание и ведение БД (создание структур таблиц, добавление записи в таблицу, удаление записи, обновление, выборка нужной записи);
· создание пользовательских приложений, включающих разработку пользовательского интерфейса по работе с базой данных.
Для решения указанных задач современные СУБД в своем составе могут содержать следующие программные средства: языки процедурного программирования, средства визуального программирования (графический интерфейс, мастера, построители и т.п.), средства создания объектно-ориентированных приложений. Кроме этого, при разработке пользовательских программ во многих СУБД допускается использование других языков программирования, а также использование библиотек разного рода. Так, например, при работе с СУБД Access можно использовать средства программирования и мастера Access и язык программирования VBA (Visual BASIC forApplication).
При работе с клиент-серверными системами ситуация немного сложнее. Здесь в работе участвуют два типа компьютеров (сервер и клиент) и, соответственно, различают клиентское и серверное программное обеспечение. Серверное программное обеспечение включает язык программирования, поддерживающий создание и ведение базы данных, также реализацию поступающих от клиентов запросов пользователей к базе данных. Пользовательские приложения создаются и работают на компьютерах-клиентах (АРМ пользователя). Именно эти компьютеры должны иметь, наряду со средствами формирования запросов к базе данных, средства разработки интерфейса. В связи с этим, для клиент-серверных СУБД программное обеспечение разделяется на две части: программное обеспечение – клиент и программное обеспечение – сервер. Заметим, что наряду с программным обеспечением – клиент, при разработке пользовательских программ в конкретной СУБД могут использоваться другие языки программирования, специальные библиотеки, другие системы программирования (определенные для этой СУБД). В качестве примера приведем возможные варианты использования программного обеспечения для организации клиент-серверного взаимодействия в СУБД Microsoft SQL Server.