База данных. ЭУМК Базы данных. Пояснительная записка Теоретический раздел Практический раздел Раздел контроля знаний Вспомогательный раздел Пинск
Скачать 2.33 Mb.
|
Часть 3 БД Запросы Запросы Запросы Пересылка запросов и ответов на них Б Д На втором этапе, получив от всех узлов сообщения о правильности выполнения операций (что свидетельствует об отсутствии сбоев и отказов аппаратно-программного обеспечения), управляющий компонент выдает всем узлам команду фиксации изменений. После этого транзакция считается завершенной, ее результат необратимым. Основным достоинством модели распределенной БД является то, что пользователи всех узлов (при исправных коммуникационных средствах) получают информацию с учетом всех последних изменений. Второе преимущество состоит в экономном использовании внешней памяти компьютеров, что позволяет организовать БД больших объемов. К недостаткам модели распределенной БД относится следующее: жесткие требования к производительности и надежности каналов связи, а также большие затраты коммуникационных и вычислительных ресурсов из-за их связывания на все время выполнения транзакций. При интенсивных обращениях к распределенной БД, большом числе взаимодействующих узлов, низкоскоростных и ненадежных каналах связи обработка запросов по этой схеме становится практически невозможной. Модель тиражирования данных, в отличие от технологии распределенных БД, предполагает дублирование данных (создание точных копий) в узлах сети (рис. 4). Копия 1 БД Копия 2 БД Копия 3 Запросы Запросы Пересылка изменений в БД Запросы БД Рис. 4. Модель тиражирования БД Данные всегда обрабатываются как обычные локальные. Поддержку идентичности копий друг другу в асинхронном режиме обеспечивает компонент системы, называемый репликатором (replicator). При этом между узлами сети могут передаваться как отдельные изменения, так и группы изменений. В течении некоторого времени копии БД могут отличаться друг от друга. К основным достоинствам модели тиражирования БД (в сравнении с предыдущей моделью) относятся: более высокая скорость доступа к данным, так как они всегда есть в узле; существенное уменьшение передаваемого по каналам связи потока информации, поскольку происходит передача не всех операций доступа к данным, а только изменений в БД; повышение надежности механизмов доступа к распределенным данным, поскольку нарушение связи не приводит к потере работоспособности системы. Основной недостаток модели тиражирования БД заключается в том, что на некотором интервале времени возможно «расхождение» копий БД. Если отмеченный недостаток некритичен для прикладных задач, то предпочтительно иметь схему с тиражированием БД. Доступ к общим данным. При обслуживании обращений к общим данным средства управления БД должны обеспечивать по крайней мере два основных метода доступа: монопольный и коллективный. Основными объектами доступа в различных системах могут быть целиком БД, отдельные таблицы, записи, поля записей, элементы приложения такие, как отчеты, запросы, экранные формы. Монопольный доступ обычно используется в двух случаях: во-первых, когда требуется исключить доступ к объектам со стороны других пользователей (например, при работе с конфиденциальной информацией); во-вторых, когда производятся ответственные операции с БД, не допускающие других действий, например, изменение структуры БД. В первом случае пользователь с помощью диалоговых средств СУБД или прикладной программы устанавливает явную блокировку. Во втором случае пользователь также может установить явную блокировку, либо положиться на СУБД. Последняя обычно автоматически устанавливает неявную (без ведома пользователя или приложения) блокировку, если это необходимо. В режиме коллективного доступа полная блокировка на используемые объекты, как правило, не устанавливается. Коллективный доступ возможен, например, при одновременном просмотре таблиц. Попытки получить монопольный доступ к объектам коллективного доступа должны быть пресечены. Например, в ситуации когда один или несколько пользователей просматривают таблицу, а другой пользователь собирается удалить эту же таблицу. Для организации коллективного доступа в СУБД применяется механизм блокировок. Суть блокировки состоит в том, что на время выполнения какой- либо операции в БД доступ к используемому объекту со стороны других потребителей временно запрещается или ограничивается. Например, при копировании таблицы она блокируется от изменения, хотя и разрешено просматривать ее содержимое. Рассмотрим типичный набор блокировок. В конкретных программах схемы блокирования объектов могут отличаться от описываемых. Выделим четыре вида блокировок, перечисленных в порядке убывания строгости ограничений на возможные действия: полная блокировка; блокировка от записи; предохраняющая блокировка от записи; предохраняющая полная блокировка. Полная блокировка. Означает полное завершение всяких операций над основными объектами (таблицами, отчетами и экранными формами). Этот вид блокировок обычно применяется при изменении структуры таблицы. Блокировка от записи. Накладывается в случаях, когда можно использовать таблицу, но без изменения ее структуры или содержимого. Такая блокировка применяется, например, при выполнении операции слияния данных из двух таблиц. Предохраняющая блокировка от записи. Предохраняет объект от наложения на него со стороны других операций полной блокировки, либо блокировки от записи. Этот вид блокировки позволяет тому, кто раньше «захватил» объект, успешно завершить модификацию объекта. Предохраняющая блокировка о записи совместима с аналогичной блокировкой (предохраняющей блокировкой от записи), а также с предохраняющей полной блокировкой. Примером необходимости использования этой блокировки является режим совместного редактирования таблицы несколькими пользователями. Предохраняющая полная блокировка. Предохраняет объект от наложения на него со стороны других операций только полной блокировки. Обеспечивает максимальный уровень совместного использования объектов. Такая блокировка может использоваться, например, для обеспечения одновременного просмотра несколькими пользователями одной таблицы. В группе пользователей, работающих с одной таблицей, эта блокировка не позволит никому изменить структуру общей таблицы. При незавершенной операции с некоторым объектом и запросе на выполнение новой операции с этим же объектом производится попытка эти операции совместить. Совмещение возможно тогда, когда совместимыми оказываются блокировки, накладываемые конкурирующими операциями. В отношении перечисленных выше четырех блокировок действуют следующие правила совмещения: при наличии полной блокировки над объектом нельзя производить операции, приводящие хотя бы к одному из видов блокировок (полная блокировка несовместима ни с какой другой блокировкой); блокировка от записи совместима с аналогичной блокировкой и предохраняющей полной блокировкой; предохраняющая блокировка от записи совместима с обоими видами предохраняющих блокировок; предохраняющая полная блокировка совместима со всеми блокировками, кроме полной. Обычно в СУБД каждой из выполняемых с БД операций соответствует определенный вид блокировок, которую эта операция накладывает на объект. Пользователям современных СУБД , работающим в интерактивном режиме, не нужно помнить все тонкости механизма блокировки, поскольку система достаточно «разумно» осуществляет автоматическое блокирование во всех случаях, когда это требуется. При этом система сама стремится предоставить всем пользователям наиболее свободный доступ к объектам. При необходимости можно воспользоваться командными и языковыми средствами явного определения блокировок. Тупики. Если не управлять доступом к совместно используемым объектам, то между потребителями ресурсов могут возникать тупиковые ситуации. Следует отличать понятие блокировки в смысле контроля доступа к объектам от блокировки в смысле тупикового события. Существует два основных вида тупиков: взаимные (deadlock) и односторонние (livelock). Простейшим случаем взаимного тупика является ситуация, когда каждый из двух пользователей стремится захватить данные, уже захваченные другим пользователем (рис. 5). В этой ситуации пользователь-1 ждет освобождения ресурса N, в то время как пользователь-2 ожидает освобождения от захвата ресурса М. Следовательно, никто из них не может продолжить работу. Возможны и более сложные ситуации, когда выполняются обращения трех и более пользователей к нескольким ресурсам. Односторонний тупик возникает в случае требования получить монопольный доступ к некоторому ресурсу как только он станет доступным и невозможности удовлетворить это требование. Системы управления распределенными БД, очевидно должны иметь соответствующие средства обнаружения или предотвращения конфликтов, а также разрешения возникающих конфликтов. Рис. 5. Пример взаимного тупика Пользователь 1 Пользователь 2 М N Захват ресурса Требование ресурса ПРАКТИЧЕСКИЙ РАЗДЕЛ ЛАБОРАТОРНАЯ РАБОТА №1 ОСНОВЫ РАБОТЫ В MS SQL SERVER 1 Цель работы 1) Изучить интерфейс среды управления SQL сервером -Management Studio. 2) Изучить правила создания таблиц посредством конструктора баз данных в MS SQL Server. 3) Получить начальные практические навыки создания базы данных посредством графического интерфейса среды Management Studio. 2 Задание 1) Создайте учетную запись пользователя MS SQL Server. 2) Создайте новую базу данных. 3) Создайте нового пользователя базы данных. 4) Соединитесь с базой данных под учетной записью пользователя. 5) Создайте структуру базы в соответствии с порядком выполнения работы. 6) Выполните резервное копирование базы данных. 3 Порядок выполнения работы 3.1 Открытие среды SQL Server Management Studio 3.2 Соединение с SQL Server 3.3 Создание учетной записи 3.4 Создание базы данных 3.5 Создание нового пользователя 3.6 Соединение с базой данных 3.6 Соединение с базой данных 3.7 Подключение к базе данных 3.8 Создание структуры базы данных 3.8.1 Типы данных 3.9 Создание таблиц в конструкторе таблиц 3.10 Резервное копирование базы данных 3.1 Открытие среды SQL Server Management Studio * В меню Пуск последовательно выберите пункты: Все программы, Microsoft SQL Server, а затем - команду Среда SQL Server Management Studio. * В диалогом окне Соединение с сервером подтвердите заданные по умолчанию параметры и нажмите кнопку Подключиться. Для соединения необходимо, чтобы поле Имя сервера содержало имя компьютера, на котором установлен SQL Server. Если компонент Database Engine представляет собой именованный экземпляр, то поле «Имя сервера» должно также содержать имя экземпляра в формате <имя_компьютера>\<имя_экземпляра>. 3.2 Соединение с SQL Server 1. Открыть приложение Management Studio путём его выбора из папки Microsoft SQL Server стартового меню (Пуск —> Microsoft SQL Server 2008 — Среда SQL Server Management Studio). В данный момент мы соединяемся с сервером как администратор Windows (рис. 1.1). Рис. 1.1. С о е д и н е н и е с S Q L Server 2008 2. Выбрать имя сервера. MS SQL Server использует два режима Проверки подлинности: Проверка подлинности Windows и Проверка подлинности MS SQL Server. Для проверки подлинности по умолчанию используется проверка подлинности Windows. Проверка подлинности Windows— это режим, который использует для подключения к серверу только логины Windows (рис. 1.1). В этом случае пользователям нет необходимости вводить какие-то пароли при подключении к SQL Server, если они уже вошли в сеть Windows. Для использования проверки подлинности SQL Server вначале необходимо создать учетную запись в самом SQL Server. В отличие от логинов Windows, логины SQL Server - это самостоятельные учетные записи со своими именами и паролями, информация о которых хранится в системной базе данных master. При подключении к серверу при помощи логина SQL Server вам придется явно указать имя логина и пароль. 3.3 Создание учетной записи Создайте новую учетную запись с именем STUDENT. В Management Studio список учетных записей, сконфигурированных на сервере, содержится в папке \Security\Logins. Чтобы добавить новую учетную запись, необходимо выделить Безопасность в контекстном меню и выбрать пункт Имена входа, правой контекстной кнопкой мыши нажать Создать имя входа. В открывшемся окне (рис. 1.2) в поле Имя входа введите STUDENT. Далее выберите переключатель Проверка подлинности SQL Server и в Пароль наберите goodstud или другие символы. Снимите флажок Пользователь должен сменить пароль при следующим входе. Остальные поля оставьте без изменений. Рис. 1.2. Создание новой учетной записи 3.4 Создание базы данных Базу данных может создавать только пользователь с правами администратора. Выберите в контекстном меню папки Базы данных команду Создать базу данных. В поле Имя базы данных введите имя создаваемой базы данных (БД) - Borei (рис. 1.3). Здесь также можно изменить путь сохранения создаваемой БД. Обратите внимание, что создаётся пустая база данных (контейнер). Рис. 1.3. Создание новой базы данных После создания БД окно Обозреватель объектов обновится. В ветке Базы данных появится новая база данных BOREI. Эта база данных принадлежит пользователю по имени sysadmiu (системный администратор). 3.5 Создание нового пользователя Создание пользователя в SQL Server 2008 осуществляется посредством создания учетной записи. Пользователи базы данных -это специальные объекты, которые создаются на уровне базы данных и используются для предоставления разрешений в базе данных (на таблицы, представления, хранимые процедуры). Логины и пользователи БД - это совершенно разные объекты. Чтобы добавить в базу Borei нового пользователя, надо: 1. выделить узел \Базы данных\ BORER Безопасность\ Пользователи и в контекстном меню выбрать пункт Создать пользователя. 2. В открывшемся окне в поля Имя пользователя и Имя входа ввести имя - Student. 3. В членстве в роли базы данных установить флажок db_owner—»ОК (рис. 1.4). Таким образом, на основе учетной записи Student будет создан новый пользователь для БД Borei с правами владельца этой базы данных. Рис. 1.4. Добавление в БД нового пользователя 3.6 Соединение с базой данных Чтобы пользователь Student мог подсоединиться к созданной базе данных с целью создания её структуры, следует выполнить несколько подготовительных действий. 1. Войдите в окно свойств SQL Server: в окне Обозреватель объектов выберите корневой элемент (название машины, на которой запущен сервер) и вызовите для него контекстное меню. Выберите пункт Свойства. Откроется окно Свойства сервера (рис. 1.5). Рис.1.5. Окно Свойства сервера 2. Выберите способ аутентификации: на вкладке Безопасность в разделе Серверная проверка подлинности выберите опцию проверка подлинности SQL Server and Windows. 3. При нажатии Разрешения откроется окно Имена входа или роли. 4. В окне Имена входа или роли выберите имя Student, поставите галочку. 5. Устанавливаем права доступа к серверу для выбранной учётной записи: в списке Разрешения для Student ставим птички в колонке Явное возле пунктов Проверка подлинности сервера и Соединение SQL (рис. 1.6). Рис. 1.6. Установление прав доступа к серверу 6. Заканчиваем подготовительные действия: нажимаем ОК в окне Свойства сервера. Появится предупреждение о том, что сервер необходимо перезагрузить, чтобы изменения вступили в силу. Нажимаем ОК. 7. Для перезагрузки сервера в окне Обозреватель объектов корневом элементе вызываем контекстное меню и выбираем пункт Перезагрузить — Yes. Будет произведен перезапуск службы сервера. Примечание. Выполнять пункты 1-2 надо один раз. Пункты 3-7 необходимо выполнять для каждой учётной записи (нового логина). 3.7 Подключение к базе данных Чтобы выполнять действия, описанные ниже, нужно быть подключенным к серверу под учетной записью Student или sysadmin. Для соединения с сервером под учетной записью Student, надо выполнить следующие шаги: • нажать Подключится к обозревателю объектов; • в поле Server Name введите имя сервера (оставьте то, что выводится по умолчанию); • в поле Проверка подлинности выберите Проверка подлинности SQL Server; • в поле Имя входа введите Student, в поле Пароль – goodstud или другие символы. 3.8 Создание структуры базы данных Создание учебной базы данных будет выполняться на основе известного из СУБД ACCESS примера BOREI. База данных BOREI является весьма характерной для торговли. Предположим, что Вам поручено разработать базу данных некоторой компании. В процессе создания информационной модели (datamodeling) Вы определите, как минимум, следующие объекты (сущности или абстрактные объекты): клиенты (clients), заказы клиентов (orders), заказано или сведения о заказе (ordered), собственно товары (goods), сотрудники компании (employees), доставка (deliveries), а также поставщиков сырья (suppliers), типы или категории товаров (types). При нашем дальнейшем изучении можно увидеть, что база данных BOREI содержит восемь таблиц в точности соответствующих вышеприведённым объектам. 3.8.1 Типы данных При выборе типа данных для столбца следует отдавать предпочтение типу, который позволит хранить любые возможные для этого столбца значения и занимать при этом минимальное место на диске. Типы данных в MS SQL Server можно разделить на восемь категорий: 1. Целочисленные данные • bit (1 байт). Может хранить только значения 0, 1 или null (пустое значение, сообщающее об отсутствии данных). Его удобно использовать в качестве индикатора состояния – включено/выключено, да/нет, истина/ложь. • tinyint (1 байт).Целые значения от 0 до 255. • smallint (2 байта). Диапазон значений от -215 (-32768) до 215 (3767). • int (4 байта). Может содержать целочисленные данные от -231 (-2147483648) до 231 (21474833647). • bigint (8 байт). Включает в себя данные от -263 (9223372036854775808) до 263 (9223372036854775807). Удобен для хранения очень больших чисел, не помещающихся в типе данных int. 2. Текстовые данные • char. Содержит символьные не Unicode-данные фиксированной длины до 8000 знаков. • varchar. Содержит символьные не Unicode-данные переменной длины до 8000 знаков. • nchar. Содержит данные Unicode фиксированной длины до 4000 символов. Подобно всем типам данных Unicode его удобно использовать для хранения небольших фрагментов текста, которые будут считываться разноязычными клиентами. • nvarchar. Содержит данные Unicode переменной длины до 4000 символов. 3. Десятичные данные • decimal. Содержит числа с фиксированной точностью от -1038-1 до 1038-1. Он использует два параметра: точность и степень. Точностью называется общее количество знаков, хранящееся в поле, а степень – это количество знаков справа от десятичной запятой. • numeric. Это синоним типа данных decimal – они идентичны. 4. Денежные типы данных • money (8 байт). Содержит денежные значения от -263 до 263 с десятичной точностью от денежной единицы. Удобен для хранения денежных сумм, превышающих 214768,3647. • smallmoney (4 байта). Содержит значения от -214748,3648 до 214748,3647 с десятичной точностью. 5. Данные с плавающей точкой • float. Содержит числа с плавающей запятой от -1,79Е+38 до 1,79Е+38. • real. Содержит числа с плавающей запятой от -3,40Е+38 до 3,40Е+38. 6. Типы данных даты и времени • datetime (8 байт). Содержит дату и время в диапазоне от 1 января 1753 года до 31 декабря 9999 года с точностью 3,33 мс. • smalldatetime (4 байта). Содержит дату и время, начиная от 1 января 1900 года и заканчивая 6 июнем 2079, с точностью до 1 минуты. 7. Двоичные типы данных • binary. Содержит двоичные данные фиксированной длины до 8000 байт. • varbinary. Содержит двоичные данные переменной длины до 8000 байт. 8. Специализированные типы данных • sql_variant. Используется для хранения значения с различными типами данных. • timestamp. Используется для установки временных меток записей при вставке, которые соответствующим образом обновляются. Удобен для отслеживания изменений в данных. • uniqueidentifier. Глобальный уникальный идентификатор. • xml. Используется для хранения целых документов или фрагментов XML. |