МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Омский государственный педагогический университет» Факультет педагогики и психологии детства Кафедра педагогики и психологии детства Сравнительная характеристика реализации семантической целостности в СУБД MySQL и MsAccess Курсовая работа по направление подготовки бакалавров 230700.62 Прикладная информатика профиль "Прикладная информатика в образовании" Выполнил: студент 33 группы Пушкарёв Валерий _______________________ (подпись) Научный руководитель: Басгаль Виктория Викторовна Оценка ________________ «___» _______________ 20___г. _______________________ (подпись) Оглавление Введение ...................................................................................................................... 3 Глава 1. Теоретические особенности обеспечения семантической целостности ..... 5 1.1. Общая характеристика СУБД mySQL ........................................................ 5 1.2. Обеспечение целостности данных в СУБД MySQL.................................. 9 1.3. Общая характеристика СУБД MsAccess .................................................. 11 1.4. Целостность данных в СУБД MsAccess ................................................... 13 Глава 2. Практические особенности реализации семантической целостности ...... 16 2.1. Построение ядра инфологической модели ИС ........................................ 16 2.2 Создание базы данных в MySQL................................................................ 16 2.3. Создание запросов в MySQL ..................................................................... 18 2.4. Создание базы данных в MsAccess ........................................................... 19 Заключение ................................................................................................................. 23 Список источников .................................................................................................... 24 2 Введение В настоящее время на рынке существует большое количество как баз данных, так и СУБД. По данным статистики использования различных программных продуктов на платформе Jelastic лидирующую позицию занимает СУБД MySQL – посредством нее управляются 47 % всех баз данных в Европе. Таким образом, СУБД MySQL является достаточно популярным средством для управления БД, что, соответственно, позволяет сделать вывод о большом числе пользователей этой системы. В связи с различным уровнем пользователей профессиональных возникает необходимость навыков и квалификации создания определенных программных ограничений, поддерживающих непротиворечивость данных, хранимых в базе. Изучение средств реализации различного вида ограничений целостности в СУБД MySQL с целью дальнейшего использования ее в профессиональной деятельности обуславливает актуальность данного курсового проекта. В MsAccess в полной мере реализовано управление реляционными базами данных. Система поддерживает первичные и внешние ключи и обеспечивает целостность данных на уровне ядра. Кроме того, таблицы в MsAccess снабжены средствами проверки допустимости данных, предотвращающими некорректный ввод вне зависимости от того, как он осуществляется, а каждое поле таблицы имеет свой формат и стандартные описания, что существенно облегчает ввод данных. MsAccess поддерживает все необходимые типы полей. Для того, чтобы сравнить характеристики целостности СУБД MySQL и MsAccess, мы разберем их по отдельности. Для достаточного понимания обеих СУБД. Целью данной работы является сравнение характеристики реализации семантической целостности в СУБД MySQL и MsAccess. 3 Задачами курсовой работы являются: Изучение теоретического материала, касающегося общих сведений о СУБД MySQL и MsAccess, синтаксиса, а также ее характеристик, особенностей; Формулировка и обоснование различных ограничений целостности, реализуемых в информационных системах; Реализация запросов для приведения примера; 4 Глава 1. Теоретические особенности обеспечения семантической целостности 1.1. Общая характеристика СУБД mySQL MySQL – система управления реляционными базами данных. Реляционная база данных хранит информацию в отдельных таблицах, а не в одном большом хранилище, благодаря чему достигается высокая производительность и гибкость[4]. Также следует отметить, что MySQL – система с открытым исходным кодом: любой желающий имеет возможность использовать и модифицировать это программное обеспечение по своему усмотрению. Каждый пользователь имеет право получить данное программное обеспечение бесплатно. Немаловажным является тот факт, что СУБД MySQL является клиентсерверной системой, включающей многопоточный SQL-сервер, поддерживающий различные платформы, несколько клиентских программ и библиотек, инструменты администрирования и широкий диапазон программных интерфейсов приложений (API-интерфейсов). Для работы с базой данных необходима СУБД (система управления базами данных), т.е. программа, которая берет на себя все заботы, связанные с доступом к данным. Она содержит команды, позволяющие создавать таблицы, вставлять в них записи, искать и даже удалять таблицы.. MySQL – это быстрая, надежная, открыто распространяемая СУБД. MySQL, как и многие другие СУБД, функционирует по модели "клиент/сервер". Под этим подразумевается сетевая архитектура, в которой компьютеры играют роли клиентов либо серверов. СУБД управляет одной или несколькими базами данных. База данных представляет собой совокупность информации, организованной в виде множеств. Каждое множество содержит записи унифицированного вида. 5 Сами записи состоят из полей. Обычно множества называют таблицами, а записи — строками таблиц. Такова логическая модель данных. На жестком диске вся база данных может находиться в одном файле. В MySQL для каждой базы данных создается отдельный каталог, а каждой таблице соответствуют три файла. В других СУБД могут использоваться иные принципы физического хранения данных. Строки таблиц могут быть связаны друг с другом одним из трех способов. Простейшее отношение — "один к одному". В этом случае строка первой таблицы соответствует одной единственной строке второй таблицы. На диаграммах такое отношение выражается записью 1:1. Отношение "один ко многим" означает ситуацию, когда строка одной таблицы соответствует нескольким строкам другой таблицы. Это наиболее распространенный тип отношений. На диаграммах он выражается записью 1:N. Наконец, при отношении "многие ко многим" строки первой таблицы могут быть связаны с произвольным числом строк во второй таблице. Такое отношение записывается как N:M. Программист, работающий с базой данных, не заботится о том, как эти данные хранятся, и приложения, взаимодействующие с СУБД, не знают о способе записи данных на диск. "Снаружи" виден лишь логический образ данных, и это позволяет менять код СУБД, не затрагивая код самих приложений. СУБДобеспечивает безопасность данных. Пользователям предоставляются определенные права доступа к информации. Некоторым пользователям разрешено лишь просматривать данные, тогда как другие пользователи могут менять содержимое таблиц. СУБДподдерживает параллельный доступ к базе данных. Приложения могут обращаться к базе данных одновременно, что повышает общую 6 производительность системы. Кроме того, отдельные операции могут "распараллеливаться" для еще большего улучшения производительности. Наконец,СУБДпомогает восстанавливать информацию в случае непредвиденного сбоя, незаметно для пользователей создавая резервные копии данных. Все изменения, вносимые в базу данных, регистрируются, поэтому многие операции можно отменять и выполнять повторно. К организации хранения и обработки данных, имеющимся в СУБД MySQL, можно отнести[4]: ● программный код написан на языке С++; ● СУБД MySQL является кроссплатформенным приложением с интерфейсами С, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tel. ● возможность работы в многопроцессорных системах; ● обеспечение транзакционного и нетранзакционного механизмов хранения; ● использование очень быстрых дисковых таблиц (MylSAM) со сжатием индексов на основе бинарных деревьев (В-деревьев); ● возможность сравнительно простого добавление другого механизма хранения. Это удобно, если требуется добавить SQL-интерфейс к базе данных собственной разработки; ● быстродействие системы рапределения памяти, основанной на потоках; ● возможность хранения в памяти хеш-таблиц как временных; ● функции SQL реализованы с использованием высоко оптимизированной библиотеки классов и должны выполняться предельно быстро. Как правило, какого-либо распределения памяти после инициализации запроса не выполняется; ● кодMySQL протестирован с помощью инструментов поиска утечки памяти; ● сервер доступен как отдельная программа для использования в 7 клиент-серверной сетевой среде. Кроме того, он также поставляется в виде библиотеки, которая может быть встроена в отдельные автономные приложения. Такие приложения могут применяться в изолированной среде или среде, не имеющей доступа к сети; Выделяются следующие характеристики: ● множество типов данных для столбцов таблиц; ● записи фиксированной и переменной длины; ● полная поддержка операций и функций в конструкциях SELECT и WHERE запросов; В СУБД MySQL существуют также относящиеся к работе с таблицами особенности. Ниже представлены некоторые из них[2]: ● имена функций не конфликтуют с именами таблиц и столбцов; ● возможность смешивать таблицы из разных баз данных в одном запросе; ● система, основанная на паролях и привилегиях, является исключительно гибкой и безопасной и позволяет организовать верификацию средствами хоста. Пароли защищены, поскольку весь трафик паролей во время соединения с сервером шифруется; ● поддержка работы баз данных огромных объемов; ● возможность иметь до 64 индексов на таблицу; ● клиентам предоставлена возможность подключаться к серверу MySQL, используя сокеты TCP/IP на любой платформе; ● все данные сохраняются в выбранной кодировке. Все сравнения столбцов с нормальными строками чувствительны к регистру; ● сортировка выполняется в соответствии с выбранной кодировкой серверMySQL имеет встроенную поддержку SQL-операторов для проверки, оптимизации и восстановления таблиц. Таким образом, СУБД MySQL 8 является достаточно мощным инструментом для разработки приложений, различных по структуре и назначению. Присущие СУБД MySQL особенности и возможности позволяют реализовать достаточно сложные по своей структуре, объемные базы данных, состоящие из множества таблиц с данными определенных типов. Характер связи между таблицами также может быть в полной мере указан для всех отношений. Команды позволяют быстро выполнять ряд операций с таблицами, полями и содержащимися в них данными. 1.2. Обеспечение целостности данных в СУБД MySQL В ходе разработки фрагмента информационной системы в СУБД MySQL возникает задача обеспечения целостности данных. Рассмотрим само понятие целостности. Целостность – состояние данных, когда они сохраняют свое информационное содержание и однозначность интерпретации в условиях случайных воздействий. Предложения, описывающие целостность данных называют ограничениями целостности. Реализацию ограничений целостности данных рассматривают как защиту данных от непреднамеренных ошибок (случайного искажения или разрушения) и их предотвращения, т.е как реализацию такой функции защиты данных, как безопасность. Следовательно, проблема целостности состоит в обеспечении правильности данных в БД в любой момент времени. Однако эта цель может быть достигнута лишь в определенных пределах. В частности, система не может контролировать правильность каждого отдельного значения, вводимого в БД (хотя их можно проверить на правдоподобность). Однако, несмотря на исключения необходимо обеспечить возможность поддержки высокой степени целостности в БД. Поддержание целостности следует рассматривать как защиту данных от 9 неверных (в противоположность незаконным) изменений или разрушений. Семантическая целостность данных – необходимое условие функционирования информационной системы любого типа. Каждый объект в реляционной модели данных характеризуется идентификатором, назначающимся первичным ключом, уникальным по значению. В связи с этим в процессе функционирования ИС осуществляется обеспечение целостности данных путем сравнения вводимого значения первичного ключа с имеющимися в базе данных и при совпадении значений запрет добавления записи с таким же первичным ключом. Во многих случаях необходима проверка уникальности значений свойств, не назначенных идентификатором, при этом говорят о назначении атрибута возможным ключом. Для объекта «Клиент» возможным ключом может являться такой атрибут, как «номер банковской карты» или «номер бонусной карты клиента». Такой тип ограничения, как и проверка целостности первичного ключа, является структурным, контролируемым путем проверки равенства вводимых и уже имеющихся данных. Другим видом ограничения целостности является ограничение реальных значений, содержащихся в базе данных. Существует несколько подвидов данного ограничения: 1) Допустимые значения находятся в заданном интервале. Данное ограничение предполагает, что значение свойства находится в определенном диапазоне значений. 2) Значение атрибута является перечислимым. При добавлении или редактировании данных предлагается выбрать из списка определенное значение поля, однако добавлять собственное значение запрещено 3) Значение атрибута является условно перечислимым: данные выбираются из списка, при этом существует возможность добавление элемента в список. 4) Ограничение по формату: данные имеют строго определенный 10 внешний вид. Это ограничение применяется чаще остальных, так как оно связано, прежде всего, с типом данных, содержащихся в атрибуте. Запрет на NULL – значение атрибута. Такой вид ограничения 5) распространяется прежде всего на идентификатор объекта, являющийся первичным ключом, а также на те свойства, пустое значение которых недопустимо. Ограничение на значения семантически связанных полей. В 6) данном случае на них накладываются определенные условия или функциональные зависимости. Важным аспектом реализации ограничений семантической целостности является то, что на значение свойства могут накладываться одновременно несколько видов ограничений. 1.3. Общая характеристика СУБД MsAccess MicrosoftAccess - это функционально полная реляционная СУБД[5]. В ней предусмотрены все необходимые вам средства для определения и обработки данных, а также для управления ими при работе с большими объемами информации. Что касается легкости использования, то MicrosoftAccess совершил здесь настоящий переворот, и многие для создания своих собственных баз данных и приложений обращаются именно к нему. Система управления базами данных предоставляет возможность контролировать задание структуры и описание своих данных, работу с ними и организацию коллективного пользования этой информацией. СУБД также существенно увеличивает возможности и облегчает каталогизацию и ведение больших объемов хранящейся в многочисленных таблицах информации. СУБД включает в себя три основных типа функций: определение данных, обработка данных и управление данными. Все эти функциональные 11 возможности в полной мере реализованы в MicrosoftAccess. Предназначение СУБД MsAccess СУБД Access предназначена для разработки баз данных реляционного типа для локального их использования на персональных компьютерах и для работы с этими базами. Также «MicrosoftAccess» предоставляет большое количество внутренних средств по оптимизации работы проектируемого приложения. К ним относятся: - загрузка модулей по требованию; - оптимизация дерева вызовов; - использование файлов MDE; - автоматическая поддержка компилированного состояния; - использование библиотек Windows API; - индивидуальная настройка системы; - эффективное использование индексов; - встроенный оптимизатор запросов. Система управления базами данных (СУБД) обычно поддерживает 4 основных типа отношений между таблицами: один-к-одному(1:1); один-ко-многим(1:N); много-к-одному(N:1); много-ко-многим(N:M); Связь мы рассматривали в разделе 1.1. В СУБД Access процесс создания реляционной базы данных включает создание схемы данных. Схема данных наглядно отображает таблицы и связи между ними, а также обеспечивает использование связей при обработке данных. В схеме данных устанавливаются целостности связей в базе данных. 12 параметры обеспечения Таким образом, осуществляется неразрывная связь внемашинного проектирования базы данных с этапом ее создания с помощью СУБД. В схеме данных, построенной по нормализованной модели данных предметной области, могут быть установлены одно-однозначные и одно-многозначные связи. Для таких связей обеспечивается поддержание целостности взаимосвязанных данных, при которой не допускается наличия в базе данных подчиненной записи без связанной с ней главной, при первоначальной загрузке базы данных и ее корректировках. Связи, определенные в схеме данных, используются автоматически при разработке многотабличных форм, запросов, отчетов, существенно упрощая процесс их конструирования. 1.4. Целостность данных в СУБД MsAccess При создании схемы данных пользователь включает в неё таблицы и устанавливает связи между ними. Для связей типа 1:1 и 1:М можно задать параметр обеспечения связной целостности данных, а также автоматическое каскадное обновление и удаление связанных записей. Обеспечение связной целостности данных означает, что Access при корректировке базы данных обеспечивает для связанных таблиц контроль за соблюдением следующих условий: - в подчиненную таблицу не может быть добавлена запись с несуществующим в главной таблице значением ключа связи; - в главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице; - изменение значений ключа связи в записи главной таблицы невозможно, если в подчиненной таблице имеются связанные с ней записи. При попытке пользователя нарушить эти условия в операциях добавления и удаления записей или обновления ключевых данных в 13 связанных таблицах Access выводит соответствующее сообщение и не допускает выполнения операции. Установление между двумя таблицами связи типа 1:М или 1:1 и задание для нее параметров целостности данных возможно только при следующих условиях: - связываемые поля имеют одинаковый тип данных, причем имена полей могут быть различными; - обе таблицы сохраняются в одной базе данных access; - главная таблица связывается с подчиненной по первичному простому или составному ключу (уникальному индексу) главной таблицы. Access автоматически отслеживает целостность связей при добавлении и удалении записей и изменении значений ключевых полей, если между таблицами в схеме данных установлена связь с параметрами обеспечения целостности. При действиях, нарушающих целостность связей таблиц, выводится сообщение. Access не позволяет установить параметр целостности для связи таблиц, если ранее введенные в таблицы данные не отвечают требованиям целостности. Кроме указанных ограничений целостности, которые в общем виде не определяют семантику БД, вводится понятие семантической поддержки целостности. Структурная, языковая и ссылочная целостность определяют правила работы СУБД с реляционными структурами данных. Требования поддержки этих трех видов целостности говорят о том, что каждая СУБД должна уметь это делать, а разработчики должны это учитывать при построении баз данных с использованием реляционной модели. И эти требования поддержки целостности достаточно абстрактны, они определяют допустимую форму представления и обработки информации в реляционных базах данных. Но с другой стороны, эти аспекты никак не касаются содержания базы данных. Для определения некоторых ограничений, которые связаны с содержанием 14 базы данных, требуются другие методы. Именно эти методы и сведены в поддержку семантической целостности. Семантическая поддержка может быть обеспечена двумя путями: декларативным и процедурным путем[4].Декларативный путь связан с наличием механизмов в рамках СУБД, обеспечивающих проверку и выполнение ряда декларативно заданных правил-ограничений, называемых чаще всего "бизнес-правилами" или декларативными ограничениями целостности. Выделяются следующие виды декларативных ограничений целостности: - Ограничения целостности атрибута: значение по умолчанию, задание обязательности или необязательности значений (Null), задание условий на значения атрибутов; - Ограничения целостности, задаваемые на уровне доменов, при поддержке доменной структуры. Эти ограничения удобны, если в базе данных присутствуют несколько столбцов разных отношений, которые принимают значения из одного и того же множества допустимых значений; - Ограничения целостности, задаваемые на уровне отношения. Некоторые семантические правила невозможно преобразовать в выражения, которые будут применимы только к одному столбцу; - Ограничения целостности, задаваемые на уровне связи между отношениями: задание обязательности связи, принципов каскадного удаления и каскадного изменения данных, задание поддержки ограничений по мощности связи. Эти виды ограничений могут быть выражены заданием обязательности или необязательности значений внешних ключей во взаимосвязанных отношениях; 15 Глава 2. Практические особенности реализации семантической целостности 2.1. Построение ядра инфологической модели ИС Прежде чем построить ядро инфологической модели будущего фрагмента информационной системы, определим перечень информационных задач, на основании которых принимается решение о построении той или иной инфологической модели. Для примера возьмем "Парикмахерская" учитывая, что у каждого парикмахера своя работа. Среди возможных групп информационных задач можно выделить следующие задачи: Относящиеся к информации о клиентах парикмахерской: по заданному идентификатору клиента выдать следующую информацию: ФИО клиента, контактный телефон; ● выдать наименование стиля, либо другую работу парикмахера, которую повторно избирали клиенты. Задачи, связанные с данными о парикмахерах: ● по заданному идентификатору парикмахера выдать следующую информацию: ФИО парикмахера, клиента, обратившегося к нему; ● выдать список клиентов, которые обратились к парикмахерам с одной и той же работой(стилем). 2.2 Создание базы данных в MySQL Для начало работы нам необходимо создать саму БД. Назовем её "Barbershop" (Парикмахерская) рис 2.1. Рис 2.1 Создание БД 16 Создадимдветаблицы: "barber"(Парикмахер), "klients". Для таблицы "barber" на рис 2.2 отображены все поля т и тип данных. И соответственно на рис 2.3 для таблицы "klients". Рис 2.2 Отображение таблицы "barber" и тип полей Рис 2.3 Отображение таблицы "klients" и тип полей Заполним наши таблицы данными рис 2.4. 17 Рис 2.4 Заполненные таблицы "barber" и "klients" Теперь у нас есть заполненная и готовая к работе база данных, мы можем начать создавать запросы. 2.3. Создание запросов в MySQL Запрос - Перекрестный Выводится таблица с перекрестными данными об парикмахерах, их стилях работы и клиентах, которые пользуются их услугой. Результат выведен на рисунке 2.5. Таблица вышла немного кривая, но это не мешает нам анализировать результат. Рис 2.5 Перекрестный запрос 18 Запрос на количество Посчитаем сколько людей стригутся под стиль "канадка". Результат выведен на рисунке 2.6. Рис 2.6 Запрос на количество Теперь перейдём к СУБД MsAccess и попробуем сравнить. 2.4. Создание базы данных в MsAccess Для начала, создадим базу данных в MsAccess и назовём её "Парикмахерская" рис 2.7. Рис 2.7 Создание БД в MsAccess 19 Затем наполним её двумя таблицами: "Парикмахеры", "Клиенты". Заполним их аналогично таблицам из раздела 2.2. базы данных mySQL. Их пример видим на рис 2.8. Рис 2.8 Заполненные таблицы: "Парикмахеры", "Клиенты" 2.5 Создание запросов в MsAccess Запрос - Перекрестный Для него мы используем мастер запросов. Свободно выбираем нужные таблицы и получаем запрос рис 2.9. 20 Рис 2.9 Перекрестный запрос Запрос на количество Будем также считать сколько же людей стригутся под стиль "канака". Для этого мы будем использовать "Конструктор запросов", добавим нужные таблицы, сделаем необходимые действия, чтобы получить требуемый запрос рис 2.10. И получим наш запрос рис 2.11. Рис 2.10 Выполнение в конструкторе запросов 21 Рис 2.11 Запрос на количество Анализируя проделанную работу. Для того, чтобы сравнить нужно учитывать много факторов, но мы будем отталкиваться исключительно от проделанной нами работы. Нужно учесть, что СУБД MySQL свободная реляционная система управления базами данных. Также гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц. MsAccessэто все же платная версия. Но взамен для нашего удобства представлен графический интерфейс. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных. Многие компоненты позволяют вызывать скрипты на языке VBA, поэтому MsAccess позволяет разрабатывать приложения и БД практически «с нуля» или написать оболочку для внешней БД. На стадии создания базы данных мы потратили достаточное время, чтобы сделать это в MySQL нежели в MsAccess. Обнаружили проблему с запросами, пришлось выбирать наиболее подходящий в MySQL. В MsAccess мы можем выбрать Мастер запросов или же Конструктор запросов, которые нам помогли в этом. Это более легкий способ. При создании запросов в MySQL встречали много ошибок, которые нужно было исправлять.Но довольно полезно то, что можно подключать эти СУБД между собой. 22 Заключение В результате реализации запросов и множеств сравнений мы сделали сравнительную характеристику реализации семантической целостности в СУБД MySQL и MsAccess. СУБД Access предоставляет необходимые средства для работы с базами данных неискушенному пользователю, позволяя ему легко и просто создавать базы данных, вводить в них информацию, обрабатывать запросы и формировать отчеты. К сожалению, встроенная система помощи недостаточно понятно объясняет начинающему пользователю порядок работы, поэтому возникает необходимость в пособии. Популярность MySQL сервера определяется не только тем, что пакет распространяется бесплатно и имеет высокую производительность, но ещё и тем, что имеет множество достоинств, многих из которых нет у других СУБД. И виртуальный магазин, и сервер знакомств, и всевозможные сайты, предоставляющие платные услуги, — все нуждаются в возможности обрабатывать и хранить большие объемы информации. MySQL предоставляет всем эту возможность совершенно бесплатно. Это действительно одна из самых мощных, быстрых и надежных СУБД. В ходе выполнения курсовой работы были приведены примеры запросов, которыепоказывают подробную их реализацию. Они иллюстрируют свою сложность. Все поставленные нами задачи были выполнены. 23 Список источников 1. Карпова Т.С. Учебное пособие подготовлено по материалам лекционных курсов:Базы данных модели, разработка, реализация 2002. - 304с. 2. Корнеев И.К. Машурцов В.А. Учебное пособие: Информационные технологии в управлении - 2009. — 224 с. 3. Дейт К. Дж. Учебное пособие по работе с базами данных: Введение в системы баз данных - 2006.-1328с. 4. Кригель А, Трухнов Б. Учебное пособие по основам SQL и реляционных баз данных SQL: Библия пользователя - 2010. - 752 с. 5. Блюттман К., Фриз У. Анализ данных в Access. Сборник рецептов. – Питер, 2008. - 352 с. 6. Мирошниченко Г. Реляционные базы данных. Практические приемы оптимальных решений. – СПб. : БХВ-Петербург, 2005. – 400 с. 7. Кренке Д. Теория и практика построения баз данных. – Питер, 2005. – 864 с. 8. Поль Дюбуа. MySQL полное руководство. Второе издание – Вильямс– 1168 стр. 9. Гольцман В. MySQL 5.0. Библиотека программиста: Питер; СанктПетербург; 2010. - 253 стр. 10.Полубояров В.В. Использование MS SQL Server 2008 Analysis Services для построения хранилищ данных; 2010. – 488стр. 24