Реализация ограничений в СУБД MySQL
Суть стратегии каскадирования заключается в том, что допускается выполнение необходимой транзакции и при этом вносятся соответствующие изменения в тех отношениях, которые связаны с текущем (с тем, в который в данный момент производится транзакция). Изменения в отношениях, связанных с текущем реализуются с целью не допустить нарушения ссылочной целостности и сохранить при этом все имеющиеся связи… Читать ещё >
Реализация ограничений в СУБД MySQL (реферат, курсовая, диплом, контрольная)
Реализация ограничений семантической и ссылочной целостности в СУБД MySQL
В наши дни люди часто говорят о базах данных. Компьютеры составляют неотъемлемую часть современного общества, поэтому нередко можно услышать фразы вроде «Я поищу твою запись в базе данных». И речь идет не о больших ящиках, где хранятся груды папок, а о компьютерных системах, предназначенных для ускоренного поиска информации.
Компьютеры так прочно вошли в нашу жизнь, потому что их можно запрограммировать на выполнение утомительных, повторяющихся операций и решение задач, которые нам самим было бы не под силу решить без их вычислительной скорости и емкости информационных носителей. Помещение информации на бумагу и разработка схемы хранения бумаг в папках и картотеках — достаточно четко отработанный процесс, но многие вздохнули с облегчением, когда задача свелась к перемещению электронных документов в папки на жестком диске.
Одной из функций баз данных является упорядочение и индексация информации. Как и в библиотечной картотеке, не нужно просматривать половину архива, чтобы найти нужную запись. Все выполняется гораздо быстрее.
Не все базы данных создаются на основе одних и тех же принципов, но традиционно в них применяется идея организации данных в виде записей. Каждая запись имеет фиксированный набор полей. Записи помещаются в таблицы, а совокупность таблиц формирует базу данных.
В настоящее время на рынке существует большое количество как баз данных, так и СУБД. По данным статистики использования различных программных продуктов на платформе Jelastic лидирующую позицию занимает СУБД MySQL — посредством нее управляются 47% всех баз данных в Европе. Таким образом, СУБД MySQL является достаточно популярным средством для управления БД, что, соответственно, позволяет сделать вывод о большом числе пользователей этой системы. В связи с различным уровнем профессиональных навыков и квалификации пользователей возникает необходимость создания определенных программных ограничений, поддерживающих непротиворечивость данных, хранимых в базе. Изучение средств реализации различного вида ограничений целостности в СУБД MySQL с целью дальнейшего использования ее в профессиональной деятельности обуславливает актуальность данного курсового проекта.
Целью курсовой работы является изучение реализации ограничений семантической и ссылочной целостности в СУБД MySQL.
Задачами работы являются следующие:
? изучение теоретического материала, касающегося общих сведений о СУБД MySQL, синтаксиса, а также ее характеристик, особенностей и возможностей;
? формулировка и обоснование различных ограничений семантической и ссылочной целостности, реализуемых в информационных системах;
? реализация фрагмента информационной системы в СУБД MySQL с учетом необходимых ограничений целостности.
Курсовой проект состоит из введения, теоретической и практической части, скриншота программы с ее пояснением, заключения, списка используемой литературы.
1. Теоретические основы реализации семантической и ссылочной целостности в СУБД MySQL
1.1 Общая характеристика СУБД MySQL
MySQL — система управления реляционными базами данных.
Реляционная база данных хранит информацию в отдельных таблицах, а не в одном большом хранилище, благодаря чему достигается высокая производительность и гибкость. Часть «SQL» слова «MySQL» обозначает «Structured Query Language» («Язык структурированных запросов»). SQL — наиболее общий стандартизованный язык доступа к базам данных; он соответствует стандарту ANSI/ISO SQL".
Также следует отметить, что MySQL — система с открытым исходным кодом: любой желающий имеет возможность использовать и модифицировать это программное обеспечение по своему усмотрению. Каждый пользователь имеет право получить данное программное обеспечение посредством сети Интернет бесплатно. Программное обеспечение MySQL распространяется по лицензии GPL (GNU General Public License), которая регламентирует, что разрешено, а что нет в отношении программного обеспечения.
Немаловажным является тот факт, что СУБД MySQL является клиент-серверной системой, включающей много поточный SQL-сервер, поддерживающий различные платформы, несколько клиентских программ и библиотек, инструменты администрирования и широкий диапазон программных интерфейсов приложений (API-интерфейсов).
Для работы с базой данных необходима СУБД (система управления базами данных), т. е. программа, которая берет на себя все заботы, связанные с доступом к данным. Она содержит команды, позволяющие создавать таблицы, вставлять в них записи, искать и даже удалять таблицы.
MySQL — это быстрая, надежная, открыто распространяемая СУБД. MySQL, как и многие другие СУБД, функционирует по модели «клиент / сервер». Под этим подразумевается сетевая архитектура, в которой компьютеры играют роли клиентов либо серверов. На рис. 1.1 изображена схема передачи информации между компьютером клиента и жестким диском сервера.
Рис. 1.1. Схема передачи данных в архитектуре «клиент / сервер»
СУБД управляет одной или несколькими базами данных. База данных представляет собой совокупность информации, организованной в виде множеств. Каждое множество содержит записи унифицированного вида. Сами записи состоят из полей. Обычно множества называют таблицами, а записи — строками таблиц.
Такова логическая модель данных. На жестком диске вся база данных может находиться в одном файле. В MySQL для каждой базы данных создается отдельный каталог, а каждой таблице соответствуют три файла. В других СУБД могут использоваться иные принципы физического хранения данных.
Строки таблиц могут быть связаны друг с другом одним из трех способов. Простейшее отношение — «один к одному». В этом случае строка первой таблицы соответствует одной единственной строке второй таблицы. На диаграммах такое отношение выражается записью 1:1.
Отношение «один ко многим» означает ситуацию, когда строка одной таблицы соответствует нескольким строкам другой таблицы. Это наиболее распространенный тип отношений. На диаграммах он выражается записью 1: N.
Наконец, при отношении «многие ко многим» строки первой таблицы могут быть связаны с произвольным числом строк во второй таблице. Такое отношение записывается как N: M.
СУБД
Программист, работающий с базой данных, не заботится о том, как эти данные хранятся, и приложения, взаимодействующие с СУБД, не знают о способе записи данных на диск. «Снаружи» виден лишь логический образ данных, и это позволяет менять код СУБД, не затрагивая код самих приложений.
Подобная обработка данных осуществляется посредством языка четвертого поколения (4GL), который поддерживает запросы, записываемые и исполняемые немедленно. Данные быстро утрачивают свою актуальность, поэтому скорость доступа к ним важна. Кроме того, программист должен иметь возможность формулировать новые запросы. Они называются не регламентированными (ad hoc), поскольку не хранятся в самой базе данных и служат узкоспециализированным целям.
Язык четвертого поколения позволяет создавать схемы — точные определения данных и отношений между ними. Схема хранится как часть базы данных и может быть изменена без ущерба для данных.
Схема предназначена для контроля целостности данных. Если, к примеру, объявлено, что поле содержит целочисленные значения, то СУБД откажется записывать в него числа с плавающей запятой или строки. Отношения между записями тоже четко контролируются, и несогласованные данные не допускаются. Операции можно группировать в транзакции, выполняемые по принципу «все или ничего».
СУБД обеспечивает безопасность данных. Пользователям предоставляются определенные права доступа к информации. Некоторым пользователям разрешено лишь просматривать данные, тогда как другие пользователи могут менять содержимое таблиц.
СУБД поддерживает параллельный доступ к базе данных. Приложения могут обращаться к базе данных одновременно, что повышает общую производительность системы. Кроме того, отдельные операции могут «распараллеливаться» для еще большего улучшения производительности.
Наконец, СУБД помогает восстанавливать информацию в случае непредвиденного сбоя, незаметно для пользователей создавая резервные копии данных. Все изменения, вносимые в базу данных, регистрируются, поэтому многие операции можно отменять и выполнять повторно.
СУБД MySQL обладает рядом особенностей и возможностей. Выделим наиболее важные из характеристик, присущих различным аспектам работы приложения.
К отличительным чертам физической организации хранения и обработки данных, имеющимся в СУБД MySQL, можно отнести следующие:
? программный код написан на языке С++;
? СУБД MySQL является кроссплатформенным приложением с интерфейсами С, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tel.
? возможность работы в многопроцессорных системах;
? обеспечение транзакционного и нетранзакционного механизмов хранения;
? использование очень быстрых дисковых таблиц (MylSAM) со сжатием индексов на основе бинарных деревьев (В-деревьев);
? возможность сравнительно простого добавление другого механизма хранения. Это удобно, если требуется добавить SQL-интерфейс к базе данных собственной разработки;
? быстродействие системы распределения памяти, основанной на потоках;
? возможность хранения в памяти хеш-таблиц как временных;
? функции SQL реализованы с использованием высоко оптимизированной библиотеки классов и должны выполняться предельно быстро. Как правило, какого-либо распределения памяти после инициализации запроса не выполняется;
? код MySQL протестирован с помощью инструментов поиска утечки памяти;
? сервер доступен как отдельная программа для использования в клиент-серверной сетевой среде. Кроме того, он также поставляется в виде библиотеки, которая может быть встроена в отдельные автономные приложения. Такие приложения могут применяться в изолированной среде или среде, не имеющейдоступа к сети;
На синтаксическом уровне данных выделяются следующие характеристики:
? множество типов данных для столбцов таблиц: знаковые / беззнаковые целые и пространственные типы OpenGIS;
? записи фиксированной и переменной длины;
? полная поддержка операций и функций в конструкциях SELECT и WHERE запросов;
? полная поддержка конструкций GROUP BY и ORDER BY. Поддержка групповых функций (COUNT (), COUNT (DISTINCT…), AVG (), STD (), SUM (), MAX (), MIN () ИGROUP_CONCAT ());
? поддержка LEFT OUTER JOIN и RIGHT OUTER JOIN как с синтаксисом SQL, так и с синтаксисом ODBC;
? поддержка псевдонимов для таблиц и столбцов, как того требует стандарт SQL.
? операторы DELETE, insert, REPLACE и UPDATE возвращают количество строк, которые были изменены. Авангард-чемпион. Вместо этого можно задать возврат количества строк, соответствующих запросу, для чего потребуется установить соответствующий флаг при подключении к серверу;
? специфическая для MySQL команда SHOW может быть использована для извлечения информации о базах данных, таблицах и индексах. Команда EXPLAIN позволяет просмотреть, как оптимизатор выполняет запрос;
В СУБД MySQL существуют также относящиеся к работе с таблицами особенности. Ниже представлены некоторые из них:
? имена функций не конфликтуют с именами таблиц и столбцов;
? возможность смешивать таблицы из разных баз данных в одном запросе;
? система, основанная на паролях и привилегиях, является исключительно гибкой и безопасной и позволяет организовать верификацию средствами хоста. Пароли защищены, поскольку весь трафик паролей во время соединения с сервером шифруется;
? поддержка работы баз данных огромных объемов. Например, компания MySQL AB применяет сервер MySQL для обслуживания базы данных, содержащей 50 миллионов записей. Известна также организация, использующая сервер MySQL для обслуживания базы данных из 60 000 таблиц, которая хранит около 5 миллиардов записей;
? возможность иметь до 64 индексов на таблицу (в версиях, предшествующих MySQL 4.1.2, допускалось до 32 индексов). Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов. Максимальная ширина индекса составляет 1000 байт (500 байт в версиях, предшествующих MySQL 4.1.2). Для индекса может применяться префикс столбцов с типами CHAR, VARCHAR, BLOB и TEXT;
? клиентам предоставлена возможность подключаться к серверу MySQL, используя сокеты TCP/IP на любой платформе. В Windows-системах семейства NT (NT, 2000 или ХР) клиенты могут подключаться с использованием именованных каналов. В системах на базе UNIX клиенты могут подключаться через файлы сокетов UNIX-доменов;
? интерфейс Connector/ODBC позволяет MySQL поддерживать клиентские программы, которые используют ODBC-соединения. Например, для подключения к серверу MySQL можно использовать MS Access. Клиентское программное обеспечение может выполняться под управлением Windows или UNIX. Исходные тексты интерфейса Connector/ODBC доступны. Поддерживаются все функции ODBC 2.5, равно как и множество других;
? интерфейс Connector/JDBC позволяет MySQL взаимодействовать с клиентскими программами на Java, в которых используются JDBC-подключения. Клиентское программное обеспечение может выполняться под управлением Windows или UNIX. Исходные тексты интерфейса Connector/JDBC доступны;
? полностью поддерживаются несколько кодовых таблиц, включая latinl (ISO-8859−1), german, big5, ujis и другие. Например, в именах таблиц и столбцов разрешается применять скандинавские символы наподобие «а', 'а» и 'б'. Начиная с версии MySQL 4.1, также обеспечивается поддержка Unicode;
? все данные сохраняются в выбранной кодировке. Все сравнения столбцов с нормальными строками чувствительны к регистру;
? сортировка выполняется в соответствии с выбранной кодировкой (по умолчанию используется шведский набор). Во время запуска сервера MySQL это можно изменить. Сервер MySQL поддерживает множество различных кодировок, причем они могут быть указаны как во время компиляции, так и во время выполнения;
? сервер MySQL имеет встроенную поддержку SQL-операторов для проверки, оптимизации и восстановления таблиц. Эти операторы можно выполнять в режиме командной строки, используя клиентское приложение mysqlcheck. MySQL включает также myisamchk — очень быструю утилиту командной строки для реализации тех же операций над таблицами MylSAM;
? все программы MySQL можно запускать на выполнение с опцией — help или-? для получения быстрой подсказки.
Таким образом, СУБД MySQL является достаточно мощным инструментом для разработки приложений, различных по структуре и назначению. Присущие СУБД MySQL особенности и возможности позволяют реализовать достаточно сложные по своей структуре, объемные базы данных, состоящие из множества таблиц с данными определенных типов. Характер связи между таблицами также может быть в полной мере указан для всех отношений. Специфические команды позволяют быстро выполнять ряд операций с таблицами, полями и содержащимися в них данными. Особый интерес для нас в рамках данного курсового проекта представляет такая область работы СУБД MySQL, как поддержание целостности данных путем ограничений семантической и ссылочной целостности. Определим в пункте 1.3. собственно понятия целостности и ее видов, а также выделим непосредственно операторы и функции, способствующие ограничению целостности данных в приложении.
1.3 Семантическая и ссылочная целостность данных
В ходе разработки фрагмента информационной системы в СУБД MySQL возникает задача обеспечения целостности данных. Рассмотрим само понятие целостности.
Целостность — состояние данных, когда они сохраняют свое информационное содержание и однозначность интерпретации в условиях случайных воздействий.
Предложения, описывающие целостность данных называют ограничениями целостности.
Реализацию ограничений целостности данных рассматривают как защиту данных от непреднамеренных ошибок (случайного искажения или разрушения) и их предотвращения, т. е. как реализацию такой функции защиты данных, как безопасность. Следовательно, проблема целостности состоит в обеспечении правильности данных в БД в любой момент времени. Однако эта цель может быть достигнута лишь в определенных пределах. В частности, система не может контролировать правильность каждого отдельного значения, вводимого в БД (хотя их можно проверить на правдоподобность). Однако, несмотря на исключения необходимо обеспечить возможность поддержки высокой степени целостности в БД. Поддержание целостности следует рассматривать как защиту данных от неверных (в противоположность незаконным) изменений или разрушений.
1.3.1 Семантическая целостность данных
Семантическая целостность данных — необходимое условие функционирования информационной системы любого типа. Приведем перечень основных ограничений семантической целостности. В качестве примера выберем базу данных «Салон магии», состоящую из таких таблиц, как «Клиент», «Мастер», «Услуга». В данном параграфе приводятся теоретические способы реализации того или иного ограничения целостности. В главе II будут более подробно рассмотрены практические способы реализации приведенных видов ограничения целостности данных.
Каждый объект в реляционной модели данных характеризуется идентификатором, назначающимся первичным ключом, уникальным по значению. В связи с этим в процессе функционирования ИС осуществляется обеспечение целостности данных путем сравнения вводимого значения первичного ключа с имеющимися в базе данных и при совпадении значений — запрет добавления записи с таким же первичным ключом.
Приведем пример: пусть в базе данных «Салон магии» в таблице «Клиент» имеется объект «Клиент», характеризующийся определенным набором свойств в зависимости от информационных задач. В качестве первичного ключа можно выбрать такое свойство, как «серия и номер паспорта» или «id клиента». В данном случае первичный ключ является составным, так как отдельно серия или номер паспорта не являются уникальными значениями, а ключ «id клиента» может являться как составным, так и простым.
Во многих случаях необходима проверка уникальности значений свойств, не назначенных идентификатором, при этом говорят о назначении атрибута возможным ключом. Для объекта «Клиент» возможным ключом может являться такой атрибут, как «номер банковской карты» или «номер бонусной карты клиента». Такой тип ограничения, как и проверка целостности первичного ключа, является структурным, контролируемым путем проверки равенства вводимых и уже имеющихся данных.
Другим видом ограничения целостности является ограничение реальных значений, содержащихся в базе данных. Существует несколько подвидов данного ограничения:
1) Допустимые значения находятся в заданном интервале. Данное ограничение предполагает, что значение свойства находится в определенном диапазоне значений. Допустим, в салоне красоты существует возрастной ценз работников: мастер не может быть младше 20 и старше 50 лет. Таким образом, ограничение целостности выглядит так «Для каждого объекта класса „Мастер“ значение атрибута „возраст“ находится в диапазоне 20−50 лет».
2) Значение атрибута является перечислимым. При добавлении или редактировании данных предлагается выбрать из списка определенное значение поля, однако добавлять собственное значение запрещено. В нашей базе данных такие атрибуты, как пол клиента в таблице «Клиент», являются перечислимыми. Данное ограничение формируется перечислением всех возможных значений и запретом на ввод других.
3) Значение атрибута является условно перечислимым: данные выбираются из списка, при этом существует возможность добавление элемента в список. Применяя данное ограничение целостности к атрибуту «наименование услуги» таблицы «Услуга», получаем следующую формулировку «Значение свойства „наименование услуги“ является условно перечислимым и может принимать либо произвольное значение, либо одно из перечня, сформированного на основе включения уникальных значений уже введенных данных по указанному свойству».
4) Ограничение по формату: данные имеют строго определенный внешний вид. Это ограничение применяется чаще остальных, так как оно связано, прежде всего, с типом данных, содержащихся в атрибуте. Приведем пример нескольких видов ограничения целостности по формату:
? Значения свойств «фамилия», «имя», «отчество» имеют следующий вид: первый символ — прописная буква кириллицы, последующие — строчные. Недопустим ввод цифр.
? Формат даты рождения клиентов и мастеров, дат посещения салона, а также отпуска или больничного, предоставляемых мастерам — ДД/ММ/ГГ.
5) Запрет на NULL — значение атрибута. Такой вид ограничения распространяется прежде всего на идентификатор объекта, являющийся первичным ключом, а также на те свойства, пустое значение которых недопустимо.
К примеру, помимо идентификатора, недопустимо пустое значение таких полей, как Ф.И.О. клиента или мастера, или отсутствие информации о предоставленных клиенту услугах при указании общей стоимости, которую заплатил клиент.
6) Ограничение на значения семантически связанных полей. В данном случае на них накладываются определенные условия или функциональные зависимости. Так, в нашей базе данных значения полей «дата начала отпуска» и «дата окончания отпуска» являются семантически связанными: первая дата является меньшей, чем вторая. В этом случае следует сформулировать ограничение целостности в следующем виде: «Для каждого объекта заданного класса между значениями свойств С1 и С2 должно всегда выполняться условие: С1<�С2».
Важным аспектом реализации ограничений семантической целостности является то, что на значение свойства могут накладываться одновременно несколько видов ограничений. Например, значение свойства «возраст» в таблице «Мастер» имеет ограничение по интервалу (20−50 лет), по формату (только числовое значение), также возможен выбор значения из списка-интервала.
1.3.2 Ссылочная целостность данных
Ссылочная целостность в реляционной базе данных — это согласованность между связанными таблицами. Ссылочная целостность обычно поддерживается путем комбинирования первичного ключа и внешнего ключа. Для соблюдения ссылочной целостности требуется, чтобы любое поле в таблице, объявленное внешним ключом, могло содержать только значения из поля первичного ключа родительской таблицы.
Поддержание ссылочной целостности обеспечивает семантическую адекватность совокупности взаимосвязанных реляционных отношений соответствующему фрагменту предметной области при выполнении транзакций (удаление, редактирование, добавление кортежей) в отдельных реляционных отношениях.
В практике реализации ссылочной целостности наиболее широко используются две стратегии: стратегия ограничения (запрета) и стратегия каскадирования, значительно реже — стратегия установки значений по умолчанию, стратегия игнорирования и стратегия установки неопределенного значения (в NULL).
Суть стратегии ограничения заключается в том, что накладывается запрет на транзакции, выполнение которых может повлечь за собой нарушение ссылочной целостности. Следует заметить, что данная стратегия является достаточно простой с точки зрения ее реализации. В рамках ее выполнения предстоит лишь проверить наличие в дочернем отношении кортежей, связанных с активным кортежем в родительском отношении. Под активным картежом будем понимать такой картеж, над которым выполняется транзакция. При выполнении такой транзакции, как удаление кортежа в основном отношении, сохранится ссылочная целостность, если будет реализовано следующее ограничение целостности: «При попытке удаления кортежа в реляционном отношении „Мастер“ реализовывать стратегию ограничения (запрета на удаление), при условии, что в порожденном отношении „Услуга“ существуют кортежи, непосредственно связанные с удаляемым». Таким образом, при реализации данной стратегии выполнение операции удаления кортежа из основного отношения будет возможным, если в порожденном отношении не найдется кортежа, непосредственно связанного с удаляемым (для данного случая — если отсутствуют данные об услугах данного мастера). Заметим, в данном случае недопустимо использование стратегии ограничения для операции удаления кортежа в порожденном отношении. Наиболее приемлемой здесь будет стратегия игнорирования либо стратегия каскадирования.
Суть стратегии каскадирования заключается в том, что допускается выполнение необходимой транзакции и при этом вносятся соответствующие изменения в тех отношениях, которые связаны с текущем (с тем, в который в данный момент производится транзакция). Изменения в отношениях, связанных с текущем реализуются с целью не допустить нарушения ссылочной целостности и сохранить при этом все имеющиеся связи. Чаще всего изменение начинается в родительском отношении и каскадно выполняется в порожденном отношении. Следует заметить, что последнее может в свою очередь выступать в качестве материнского для каких-либо других отношений. В связи с этим может возникнуть необходимость соответствующих изменениях (транзакциях) и в этих отношениях. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это самая сложная стратегия, но она хороша тем, что при этом не нарушается связь между кортежами родительского и дочернего отношений.
Стратегия установки неопределенного значения допускает выполнение требуемой операции, при этом все возникающие некорректные значения внешних ключей должны быть изменены на null-значения. Эта стратегия имеет два недостатка. Во-первых, для нее требуется допустить использование null-значений. Во-вторых, кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. Установить, с каким кортежем родительского отношения были связаны измененные кортежи дочернего отношения, после выполнения операции уже нельзя. На практике такая стратегия используется крайне редко.
Как было отмечено ранее, в некоторых случаях для поддержания ссылочной целостности используется стратегия установки по умолчанию. В рамках данной стратегии разрешается выполнение требуемой операции, но все возникающие некорректные значения внешних ключей при этом изменяются на некоторое значение, которое принятое по умолчанию. Достоинство этой стратегии по сравнению с предыдущей в том, что она позволяет не пользоваться null-значениями. Недостатки заключаются в следующем. Во-первых, в родительском отношении должен быть некий кортеж, потенциальный ключ которого принят как значение по умолчанию для внешних ключей. В качестве такого «кортежа по умолчанию» обычно принимают специальный кортеж, заполненный нулевыми значениями (не null-значениями!). Этот кортеж нельзя удалять из родительского отношения, и в этом кортеже нельзя изменять значение потенциального ключа. Таким образом, не все кортежи родительского отношения становятся равнозначными, поэтому приходится прилагать дополнительные усилия для отслеживания этой неравнозначности. Это плата за отказ от использования null-значений. Во-вторых, как и в предыдущем случае, кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. Установить, с каким кортежем родительского отношения были связаны измененные кортежи дочернего отношения, после выполнения операции уже нельзя.
И, наконец, стратегия ингнорирования (IGNORE), суть которой заключается в том, что разрешено выполнять любые транзакции, не обращая при этом внимание на нарушения ссылочной целостности.
Фактически такую стратегию даже нельзя назвать стратегией сохранения ссылочной целостности: в этом случае в дочернем отношении могут появляться некорректные значения внешних ключей, и вся ответственность за целостность базы данных ложится на пользователя, его внимательность и корректность при выполнении различных транзакций.
Таким образом, на данный момент выделяется шесть видов ограничений семантической целостности и три стратегии ограничений ссылочной целостности. Необходимость поддержания семантической целостности данных обусловлена различными видами информации, содержащейся в базе, что и приводит к такому делению, как ограничение по интервалу, перечислимому значению и т. д. Ограничения же ссылочной целостности имеют значение в связи с логикой построения отношений между данными, содержащимися в базе.
Определив виды семантической и ссылочной целостности, перейдем к рассмотрению организации ограничений целостности средствами СУБД MySQL на примере фрагмента информационной системы «Салон магии».
2. Реализация ограничений семантической и ссылочной целостности в СУБД MySQL на примере фрагмента ИС «Салон магии»
таблица связь ограничение семантический
В данной главе рассмотрим реализацию запросов инструментальными средствами СУБД MySQL. В качестве примера возьмем фрагмент информационной системы «Салон магии». Данная предметная область является вполне подходящей для демонстрации различных видов запросов.
2.1 Построение ядра инфологической модели ИС
Прежде чем построить ядро инфологической модели будущего фрагмента информационной системы, определим перечень информационных задач, на основании которых принимается решение о построении той или иной инфологической модели.
Среди возможных групп информационных задач можно выделить следующие:
1. задачи, относящиеся к информации о клиентах салона:
· по заданному идентификатору клиента выдать следующую информацию: Ф.И.О. клиента, контактный телефон;
? выдать наименование услуг, которые повторно избирались клиентами.
2. задачи, связанные с данными о мастерах салона:
? по заданному идентификатору мастера выдать следующую информацию: Ф.И.О. мастера, клиента, обратившегося к нему;
? по указанному идентификатору мастера выдать список оказываемых им услуг. список может содержать название или код услуги.
2.2 Создание базы данных в MySQL
Прежде чем приступить к непосредственной реализации запросов создадим базу данных в MySQL и назовем ее «magiya» затем наполним ее материалом. В ней будет две таблицы: первую таблицу назовем «masters» с полями «IDmasters», «FIO_m» и «usluga». Выведем описание типов созданной таблицы на рисунке 2.1, и продемонстрируем вид заполненной таблицы на рисунке 2.2.
Рис. 2.1. Наименования и типы полей таблицы «masters»
Рис. 2.2. Таблица «masters»
Аналогично создадим и заполним вторую таблицу и назовем ее «klients» с полями «IDklients», «FIO_k», «telefon», «usluga». Покажем описание типов созданной таблицы на рисунке 2.3 и заполненную данными таблицу на рисунке 2.4.
Рис. 2.3. Наименования и типы полей таблицы «klients»
Рис. 2.4. Таблица «klients»
Теперь, когда у нас есть заполненная и готовая к работе база данных, мы можем начать создавать запросы.
2.3 Создание запросов в MySQL
Существует большое количество запросов, покажем наглядно реализацию большинства из них.
Первый запрос. Перекрестный.
Выводится таблица с перекрестными данными о мастерах, их услугах и клиентах, пользующихся той или иной услугой.
Рис. 2.5. Перекрестный запрос
Второй запрос. На количество.
Посчитаем, сколько раз пользовались услугой «taro».
Mysql> SELECT SQL_CALC_FOUND_ROWS * FROM klients WHERE usluga = «taro»; Mysql> SELECT FOUND_ROWS ();
Рис. 2.6. Запрос на количество
Заключение
В процессе выполнения курсовой работы была изучена система управления базами данных MySQL, ее основные особенности и возможности, касающиеся обеспечения целостности данных Изучая теоретический материал, мы выявили особенности СУБД MySQL, относящиеся к различным аспектам функционирования системы: физическая организация данных, синтаксис языка, особенности используемых операторов. Кроме того, мы определили все виды целостности данных — как семантической, так и ссылочной — и отметили, каким образом в СУБД MySQL реализуются те или иные ограничения. В целом, рассматривая система управления базами данных представляет собой развитое, многообразное сетевое средство создания и использования БД, различных по своему составу, объему и функциональному назначению. В СУБД MySQL реализованы механизмы, необходимые для обеспечения целостности данных: установление формата данных в атрибутах, определение характера связей в реляционных отношениях, назначение атрибута первичным и внешним ключом.
В практической части работы на примере небольшого фрагмента информационной системы «Салон магии» нами были поставлены информационные задачи, возникающие при использовании ИС, на их основе сформулированы все виды ограничений целостности, реализованные впоследствии средствами СУБД MySQL. Данная система предоставляет возможности ограничения целостности следующих видов:
а) семантическая целостность: по перечислимому типу, интервалу, формату, на значение функционально связанных полей, запрет на пустое поле;
б) ссылочная целостность: реализация стратегий каскадирования, игнорирования и запрета.
Таким образом, нами была достигнута цель курсового проекта — изучение реализации ограничений семантической и ссылочной целостности в СУБД MySQL, и решены поставленные на начальном этапе задачи.
1) Гольцман В. MySQL 5.0. Библиотека программиста: Питер; Санкт-Петербург; 2010. — 253 с.
Интернет-источники:
2) http://www.mysql.ru,
3) http://www.sql.ru
4) http://www.weblibrary.biz
5) Семенова З. В. Защита данных в информационных системах: Учебное пособие. — Омск: Изд-во ОмГПУ, 2005. — 144 с.