Методические рекомендации по изучению учебной дисциплины, задания на домашнюю контрольную работу №2 для учащихся заочной формы обучения по специальности 2-40 01 01


Ниже приведены типы данных, используемые в базе данных MySQL



страница2/5
Дата09.08.2019
Размер2.95 Mb.
#128178
ТипМетодические рекомендации
1   2   3   4   5

Ниже приведены типы данных, используемые в базе данных MySQL.


Целые числа. Общий вид указания типа данных:
префиксINT [UNSIGNED]
Необязательный флаг UNSIGNED задает, что будет создано поле для хранения беззнаковых чисел (больших или равных 0).

Дробные числа. Точно так же, как целые числа подразделяются в MySQL на несколько разновидностей, MySQL поддерживает и несколько типов дробных чисел. В общем виде они записываются так:


ИмяТипа[(length, decimals)] [UNSIGNED]
Здесь length - количество знакомест (ширина поля), в которых будет размещено дробное число при его передаче, decimals - количество знаков после десятичной точки, которые будут учитываться.

Строки. Строки представляют собой массивы символов. Обычно при поиске по текстовым полям по запросу SELECT не берется в рассмотрение регистр символов. Тип строки, которая может хранить не более length символов, где length принадлежит диапазону от 1 до 255.


VARCHAR (length) [BINARY]
При занесении некоторого значения в поле такого типа из него автоматически вырезаются концевые пробелы. Если указан флаг BINARY, то при запросе SELECT строка будет сравниваться с учетом регистра. VARCHAR и TINYTEXT может хранить не более 255 символов. TEXT может хранить не более 65 535 символов.

Бинарные данные. Бинарные данные - это почти то же самое, что и данные в формате TEXT, но только при поиске в них учитывается регистр символов. TINYBLOB- может хранить не более 255 символов. BLOB может хранить не более 65 535 символов. MEDIUMBLOB может хранить не более 16 777 215 символов. LONGBLOB может хранить не более 4 294 967 295 символов. BLOD-данные не перекодируются автоматически, если при работе с установленным соединением включена возможность перекодирования текста "на лету".

Дата и время. MySQL поддерживает несколько типов полей, специально приспособленных для хранения дат и времени в различных форматах DATE- дата в формате ГГГГ-ММ-ДД. TIME- время в формате ЧЧ:ММ:СС. DATETIME-дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС

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

В один домен могут входить значения из нескольких колонок, объединенных помимо одинакового типа данных еще и логически. Если два значения берутся из одного и того же домена, то можно выполнить сравнение этих двух значений. Каждый элемент данных в отношении может быть определен с указанием его адреса в формате А[i, j], где А – элемент данных, i – строка отношения, j – номер атрибута отношения. Количество атрибутов в отношении определяет его порядок. Множество значений А[i, j] при постоянном i и всех возможных j образуют кортеж или просто строку таблицы. Количество всех кортежей в отношении определяет его мощность или кардинальное число. Мощность отношения в отличие от порядка отношения может со временем меняться. Совокупность всех кортежей образует тело отношения или таблицу. Поскольку отношения являются математическими множествами, которые по определению не могут содержать совпадающих элементов, никакие два кортежа в отношении не могут быть дубликатами друг друга в любой момент времени.

Создание базы данных MySQL выполняется с помощью команды CREATE DATABASE. Синтаксис команды:

CREATE DATABASE database_name

где database_name - имя, которое будет присвоено создаваемой

базе данных.
Для удаления базы данных MySQL используется команда DROP DATABASE. Синтаксис:
DROP DATABASE database_name
где database_name - задает имя базы данных, которую необходимо

удалить.


MySQL для хранения данных использует три типа таблиц: с фиксированной длиной строки, с динамической длиной строки и сжатые таблицы.

Таблицы с фиксированной длиной строки применяется по умолчанию, если в таблице нет полей с типом VARCHAR, BLOB или TEXT. Все поля типа CHAR, NUMERIC и DECIMAL дополняются в конце пробелами. Высокая скорость работы. Легко кэшируются. Легко восстановить после краха, так как все строки имеют постоянную длину. Не требуют реорганизации ( помощью isamchk), до тех пор, пока не будет удалено очень много записей, и вы захотите освободить место на диске.


Обычно такие таблицы занимают больше места, чем таблицы с динамической длиной строки.

Таблицы с динамической длиной строки применяются, если в таблице есть поля с типом VARCHAR, BLOB или TEXT. Все строки динамические (CHAR хранятся как VARCHAR, кроме тех у которых длина меньше 4). Каждое поле имеет дополнительный бит, который устанавливается, если строковое поле равно "" ( строка ), или если числовое поле равно 0 ( не то же самое, когда поле может иметь значение NULL).Непустые строки хранятся в виде {_} {_}Обычно такие таблицы занимают намного меньше места, чем таблицы с фиксированной длиной. Ожидаемая длина строки вычисляется по формуле: 3+(количество полей + 7)/8+(количество полей типа CHAR)+(размер числовых типов в бинарном виде )+(длина всех строк )+(количество NULL-полей + 7)/8.

Таблицы "только для чтения" можно получить с помощью утилиты pack_isam. Эту утилиту получают все покупатели, которые приобрели расширенную поддержку MySQL. Основная характеристика - занимают мало места.

Использование индексов. Все индексы (PRIMARY, UNIQUE и INDEX) хранятся в B-дереве. В строковых типах автоматически происходит сжатие начальных и конечных пробелов.

Индексы используются для:


  • быстрого поиска записей по условию WHERE;

  • объединения таблиц с посредством JOIN;

  • поиска MAX() и MIN() значений для ключевых полей ;

  • сортировки и группировки таблиц (......ORDER BY и GROUP BY);

  • извлечения данных не из таблицы с данными, а из индексного файла.

Создание таблицы производится командой CREATE TABLE.
CREATE TABLE table_name(column_name1 type, column_name2 type,...)
где table_name - имя новой таблицы;

column_name - имена колонок (полей), которые будут

присутствовать в создаваемой таблице;

type - определяет тип создаваемой колонки.

Удаление таблицы производится командой DROP TABLE
DROP TABLE table_name
где table_name - имя удаляемой таблицы.
Вставку нового столбца можно осуществить при помощи следующей конструкции:
ALTER TABLE table_name ADD field_name parametrs
где table_name - имя таблицы, в которой будет вставлен новый

столбец;

field_name - имя вставляемого столбца;

parametrs - параметры, описывающие вставляемый столбец.


Изменить свойства одного или нескольких столбцов можно при помощи следующей конструкции:
ALTER TABLE table_name CHANGE field_name_old

field_name_new parametrs


где table_name - имя таблицы, в которой находится изменяемый

столбец;

field_name_old - имя столбца изменяемого столбца;

field_name_new - новое имя изменяемого столбца (должно

равняться field_name_old, если мы не хотим

поменять имя столбца);

parametrs - новые параметры столбца.

Удаление столбца можно сделать при помощи следующей конструкции:


ALTER TABLE table_name DROP field_name

где table_name - имя таблицы, в которой будет удален столбец;

field_name - имя удаляемого столбца.
Вставка записи осуществляется командой INSERT INTO

INSERT INTO table_name(field_name1, field_name2,...) values('content1', 'content2',...)

Удаление записи осуществляется командой DELETE FROM
DELETE FROM table_name WHERE (выражение)
Данная команда удаляет из таблицы table_name все записи, для которых выполнено выражение. Выражение - это просто логическое выражение.

Обновление записи осуществляется командой UPDATE


UPDATE table_name SET field_name1='var1', field_name2='var2',... WHERE (выражение)
Поиск записей осуществляется командой SELECT
SELECT * FROM table_name WHERE (выражение) [order by field_name [desc][asc]]
Ошибки времени выполнения происходят из-за просчетов проектирования, ошибок кодирования, сбоев оборудования и по многим другим причинам. В большинстве языков программирования ошибка времени выполнения, такая как Переполнение стека или Деление на 0 прекращает нормальную работу и возвращает управление в операционную систему. В SQL есть специальный механизм, называемый Обработкой исключений, который позволяет "защитить" программу так, что она сможет продолжать выполнение даже при наличии ошибок. Условие ошибки называется Исключением. Исключения могут быть внутренне определены (исполнителем SQL) или определены пользователем.

Когда возникает ошибка, соответствующее исключение возбуждается. Это значит, что нормальное выполнение останавливается, и управление передается на часть обработки исключений вашего блока или подпрограммы SQL. Внутренние исключения возбуждаются неявно (автоматически) системой исполнения; пользовательские исключения возбуждаются явно, посредством предложений Raise, которые могут также возбуждать предопределенные исключения.

 Для обработки возбуждаемых исключений пишутся отдельные программы, называемые Обработчиками исключений. После выполнения обработчика исключений исполнение текущего блока заканчивается, и окружающий блок продолжает свое выполнение со следующего предложения. Если окружающего блока нет (т.е. текущий блок не вложен в другой блок), то управление возвращается в хост-окружение.
Тема 4.3 Триггеры и хранимые процедуры
Триггеры и их назначение. Хранимые процедуры и их назначение.

SQL для процедур и триггеров. Операторы присваивания, объявления переменных, генерации исключения, вызова процедур, ветвления, цикла. Обработка ошибок: Обработка исключений, ошибок SQL. Команды создания, удаления и модификации триггеров и хранимых процедур (InterBase, MySQL, Oracle)

Литература: [6]; [11, с. 275-284]
Методические рекомендации
Хранимая процедура (stored procedure) – это именованный набор команд Transact-SQL, хранящийся непосредственно на сервере и представляющий собой самостоятельный объект базу данных. Она существует независимо от таблиц или каких-либо других объектов баз данных. Хранимая процедура может быть вызвана клиентской программой, другой хранимой процедурой или триггером. Возможно управлять правами доступа пользователей к хранимы процедурам. Прежде чем выполнить хранимую процедуру, сервер генерирует для неё так называемый план исполнения (execution plan), выполняет её оптимизацию и компиляцию. Выполняется кэширование плана исполнения процедуры, а также оптимизированного компилирования кода. Использование хранимых процедур реализует принцип модульного проектирования.

Системные хранимые процедуры (system stored procedures) – это хранимые процедуры, поставляемые в составе SQL Server. Предназначены для выполнения различных административных действий. Такие процедуры имеют префикс sp_ . Они хранятся в базе данных master.

Пользовательские хранимые процедуры (user-defined stored procedures) – это процедуры созданные пользователями, реализующие те или иные действия (полноценный объект баз данных). Следствием этого является то, что каждая хранимая процедура хранится в конкретной базе данных.

Временные хранимые процедуры (temporary stored procedures) – эти процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Бывают локальные и глобальные.

Локальные временные хранимые процедуры(local temporary stored procedure) – могут быть вызваны только из того соединения, в котором они были созданы. При создании такой процедуры необходимо дать ей имя, начинающееся символом #. Они хранятся в базе данных tempdb и автоматически удаляются при отключении пользователя.

Глобальные временные хранимые процедуры (global temporary stored procedure) – доступны для любых соединений сервера, на котором была создана соответствующая глобальная временная хранимая процедура. При создании такой процедуры необходимо дать ей имя, начинающееся символом ## и удаляются при перезапуске или остановке сервера, а также при закрытии соединения в контексте которого были созданы.

Для создания хранимой процедуры на языке Transact-SQL используется SQL-оператор CREATE PROCEDURE. Синтаксис данного оператора для MS SQL:
CREATE PROC [ EDURE ] procedure_name [ ; number ]

[ { @parameter data_type }

[ VARYING ] [ = default ] [ OUTPUT ]

] [ ,...n ]

[ WITH

{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]



[ FOR REPLICATION ]

AS sql_statement [ ...n ]


Procedure_name – имя создаваемой процедуры. Используются префиксы sp_, #, ## (значение указано выше). Как видно из синтаксиса, не допускается указывать имя владельца, которому будет принадлежать создаваемая процедура, а также имя базы данных, в которой должна быть размещена процедура. Чтобы разместить хранимую процедуру в конкретной базе данных нужно создать её в контексте этой базы данных.

Number – идентификационный номер хранимой процедуры, однозначно определяющий её в группе процедур. На пример: orderproc;1, orderproc;2. Процедура orderproc объединяет в себе две процедуры. При вызове DROP PROCEDURE orderproc, будут удалены все процедуры этой группы;

@Parameter – имя параметра, который будет использоваться создаваемой хранимой процедурой для передачи входных или выходных данных. Имена параметров должны начинаться с символа @. В одной хранимой процедуре может использоваться до 1024 параметров.

Data_type – тип данных, который будет иметь соответствующий параметр хранимой процедуры. Можно использовать все типы данных, включая text, ntext и image и пользовательские типа данных. Однако, тип данных cursor может использоваться только как выходной параметр (с указанием ключевого слова OUTPUT).

VARYING – ключевое слово, которое используется совместно с параметром OUTPUT, имеющим тип данных cursor. В качестве выходного параметра будет представлено результирующее множество.

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

OUTPUT – его наличие указывает, что параметр предназначается для возвращения данных из хранимой процедуры. Но этот параметр также может использоваться и для передачи значений в процедуру. Значение соответствующего параметра при вызове процедуры может быть задано только с помощью локальной переменной. Нельзя использовать выражения и константы, допустимые для обычных параметров.

n – количество определённых параметров.

Для вызова хранимой процедуры используется оператор EXECUTE.

Синтаксис оператора:

[ [ EXEC [ UTE ] ]

{

[ @return_status = ]



{procedure_name [ ;number ] | @procedure_name_var

}

[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] }]



[ ,…n ]

[ WITH RECOMPILE]

Более короткий вариант:

EXEC procedure_name

[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] } ]

[ ,…n]
Указывая ключевое слово OUTPUT, вы предписываете присвоить соответствующей локальной переменной (внешней по отношению к процедуре) при завершении хранимой процедуры значение соответствующего параметра. При этом значения параметров могут изменяться в ходе процедуры. Таким способом можно получить информацию о процедуре.

Триггер – поименованный объект БД, который ассоциирован с таблицей и активируемый при наступлении определенного события, события связанного с этой таблицей.

Синтаксис создания триггера


CREATE [DEFINER = { имя_ пользователя | CURRENT_USER }]TRIGGER имя_триггера время_триггера событие_срабатывания_триггера ON имя_таблицы FOR EACH ROW выражение_выполняемое_при_срабатывании_триггера
Время_триггера - определяет время свершения действия триггера. BEFORE означает, что триггер выполнится до завершения события срабатывания триггера, а AFTER означает, что после. Например, при вставке записей (см. пример выше) наш триггер срабатывал до фактической вставки записи и вычислял сумму. Такой вариант уместен при предварительном вычислении каких-то дополнительных полей в таблице или параллельной вставке в другую таблицу.

Событие_срабатывания_триггера:

- INSERT: т.е. при операциях вставки или аналогичных ей выражениях (INSERT, LOAD DATA, и REPLACE);

- UPDATE: когда сущность (строка) ;

- DELETE: когда запись удаляется (запросы, содержащие выражения DELETE и/или REPLACE).
Тема 4.4 Работа с BLOB и функции, определенные

пользователем
BLOB и их назначение. Функции пользователя (UDF). Объявление внешней функции в СУБД (InterBase, MySQL,Oracle)

Литература: [6]; [11, с. 285-288]


Методические рекомендации
При реализации на языке SQL сложных алгоритмов, которые могут потребоваться более одного раза, сразу встает вопрос о сохранении разработанного кода для дальнейшего применения. Эту задачу можно было бы реализовать с помощью хранимых процедур, однако их архитектура не позволяет использовать процедуры непосредственно в выражениях, т.к. они требуют промежуточного присвоения возвращенного значения переменной, которая затем и указывается в выражении. Естественно, подобный метод применения программного кода не слишком удобен. Многие разработчики уже давно хотели иметь возможность вызова разработанных алгоритмов непосредственно в выражениях.

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

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

В SQL имеются следующие классы функций пользователя:



  • Scalar – функции возвращают обычное скалярное значение, каждая может включать множество команд, объединяемых в один блок с помощью конструкции BEGIN...END;

  • Inline – функции содержат всего одну команду SELECT и возвращают пользователю набор данных в виде значения типа данных TABLE;

  • Multi-statement – функции также возвращают пользователю значение типа данных TABLE, содержащее набор данных, однако в теле функции находится множество команд SQL (INSERT, UPDATE и т.д.). Именно с их помощью и формируется набор данных, который должен быть возвращен после выполнения функции.

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

Литература: [10]; [11, с. 263-274]


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

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

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

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

Характеристики транзакций описываются в терминах ACID (Atomicity, Consistency, Isolation, Durability – неделимость, согласованность, изолированность, устойчивость). Транзакция неделима в том смысле, что представляет собой единое целое. Все ее компоненты либо имеют место, либо нет. Не бывает частичной транзакции, если может быть выполнена лишь часть транзакции, она отклоняется.

Транзакция является согласованной, потому что не нарушает бизнес-логику и отношения между элементами данных. Это свойство очень важно при разработке клиент-серверных систем, поскольку в хранилище данных поступает большое количество транзакций от разных систем и объектов. Если хотя бы одна из них нарушит целостность данных, то все остальные могут выдать неверные результаты.

Транзакция всегда изолирована, поскольку ее результаты самодостаточны. Они не зависят от предыдущих или последующих транзакций – это свойство называется сериализуемостью и означает, что транзакции в последовательности независимы.

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

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

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



  • блокировка записи – транзакция блокирует строки в таблицах таким образом, что запрос другой транзакции к этим строкам будет отменен;

  • блокировка чтения – транзакция блокирует строки так, что запрос со стороны другой транзакции на блокировку записи этих строк будет отвергнут, а на блокировку чтения – принят.

В СУБД используют протокол доступа к данным, позволяющий избежать проблемы параллелизма. Его суть заключается в следующем:

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

  • транзакция, предназначенная для модификации строки данных, накладывает на нее блокировку записи;

  • если запрашиваемая блокировка на строку отвергается из-за уже имеющейся блокировки, то транзакция переводится в режим ожидания до тех пор, пока блокировка не будет снята;

  • блокировка записи сохраняется вплоть до конца выполнения транзакции.

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

Под управлением транзакциями понимается способность управлять различными операциями над данными, которые выполняются внутри реляционной СУБД. Прежде всего, имеется в виду выполнение операторов INSERT, UPDATE и DELETE. Например, после создания таблицы (выполнения оператора CREATE TABLE) не нужно фиксировать результат: создание таблицы фиксируется в базе данных автоматически. Точно так же с помощью отмены транзакции не удастся восстановить только что удаленную оператором DROP TABLE таблицу.

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

Существуют три команды, которые используются для управления транзакциями:



  • COMMIT – для сохранения изменений;

  • ROLLBACK – для отмены изменений;

  • SAVEPOINT – для установки особых точек возврата.

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


  1. Дайте характеристику клиентов и серверов локальных сетей.

  2. Объясните сущность системной архитектуры клиент-сервер.

  3. Опишите серверы баз данных и область их применения.

  4. Раскройте сущность организации данных в: СУБД (InterBase, MySQL, Oracle), опишите типы данных.

  5. Опишите домены, создание, изменение, удаление доменов.

  6. Опишите таблицы, создание, модификацию, удаление таблиц.

  7. Опишите индексы, создание, изменение, восстановление, удаление индекса.

  8. Опишите исключения, создание, изменение, удаление исключения.

  9. Дайте определение хранимой процедуры.

  10. Опишите синтаксис команды для создания хранимой процедуры.

  11. Опишите синтаксис команды для изменения хранимой процедуры.

  12. Изложите процесс создания и модификации обзоров в СУБД (InterBase, MySQL, Oracle).

  13. Опишите BLOB и их назначение.

  14. Опишите функции пользователя (UDF), объявление внешней функции в СУБД (InterBase, Раскройте понятие транзакции.

  15. Раскройте понятие блокировки.

  16. Опишите процесс обработки ошибок.

  17. Изложите процесс обработки исключений, ошибок SQL.


Раздел 5 Разработка приложений для работы с БД

Тема 5.1 Описание интерфейса среды (Delphi, С++ Builder,

FoxPro) и ее компонентов для работы с клиент-

серверной БД
Особенности интерфейса среды Delphi, С++ Builder. Компоненты, необходимые для подключения к БД. Компоненты для работы с БД: Набор данных, Оператор SQL, Информация, Мониторинг, Клиентский набор данных, Конфигурация сервера, Архивирование и т. д.

Литература: [2]; [11, с. 16-66]


Методические рекомендации
В Палитре компонентов Delphi представлено несколько компонентов, инкапсулирующих клиентский набор данных. В то же время при разработке настоящих удаленных клиентских приложений применяется компонент TClientDataSet. Помимо этого компонента, расположенного на странице Data Access, существуют еще два компонента (рисунок 3):

  • TSimpleDataSet — разработан для технологии доступа к данным dbExpress и, по существу, является единственным полноценным средством для работы с набором данных в рамках этой технологии;

  • TiBdientDataSet — используется в технологии доступа к данным сервера InterBase — InterBase Express.

Основное различие между компонентом TClientDataSet и другими клиентскими компонентами заключается в том, что первый предназначен для использования с внешним компонентом-провайдером данных и может взаимодействовать с удаленным провайдером данных.


Рисунок 3 - Иерархия классов клиентских наборов данных
Остальные перечисленные компоненты инкапсулируют внутренний провайдер данных, предоставляя тем самым для использования в рамках соответствующих технологий доступа к данным эффективный механизм локального кэширования данных. Использование внутреннего провайдера данных обеспечивает общий класс- предок TCustomCachedDataSet. Для этого он имеет защищенное свойство
property Provider: TDataSetProvider;
Соединение с источником данных осуществляется не свойством RemoteServer, задающим удаленный сервер, а стандартными средствами соответствующей технологии доступа к данным.

Компоненты и объекты Delphi, обеспечивающие разработку многозвенных приложений, объединены общим названием DataSnap.

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

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

ПО промежуточного слоя называется сервером приложений, принимает запросы клиентов, обрабатывает их в соответствии с запрограммированными правилами бизнес-логики, при необходимости преобразует в форму, удобную для сервера БД и отправляет серверу.

Сервер БД выполняет полученные запросы и отправляет результаты серверу приложений, который адресует данные клиентам.

Таким образом, многозвенное приложение БД состоит из (рисунок 4):


  • "тонких" клиентских приложений, обеспечивающих лишь передачу, представление, редактирование и простейшую обработку данных;

  • одного или нескольких звеньев ПО промежуточного слоя (сервер приложений), которые могут функционировать как на одном компьютере, так и распределено — в локальной сети;

  • сервера БД (Oralce, Sybase, MS SQL, InterBase и т. д.), поддерживающего функционирование базы данных и обрабатывающего запросы.

Сервер приложений взаимодействует с сервером БД, используя одну из технологий доступа к данным. Это технологии ADO, BDE, InterBase Express и dbExpress.

Удаленные клиентские приложения создаются с использованием специального набора компонентов, объединенных общим названием DataSnap. Эти компоненты инкапсулируют стандартные транспорты (DCOM, HTTP, сокеты) и обеспечивают соединение удаленного клиентского приложения с сервером приложения. Также компоненты DataSnap обеспечивают доступ клиента к функциям сервера приложений за счет использования интерфейса AppServer.

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

Рисунок 4 - Схема трехзвенного распределенного приложения
Для передачи данных между сервером приложений и клиентами используется интерфейс AppServer, предоставляемый удаленным модулем данных сервера приложений. Этот интерфейс используют компоненты-провайдеры TDataSetProvider на стороне сервера и компоненты TClientDataSet на стороне клиента.

Сервер приложений инкапсулирует большую часть бизнес-логики распределенного приложения и обеспечивает доступ клиентов к базе данных. Основной частью сервера приложений является удаленный модуль данных.

Во-первых, подобно обычному модулю данных он является платформой для размещения невизуальных компонентов доступа к данным и компонентов-провайдеров. Размещенные на нем компоненты соединений, транзакций и компоненты, инкапсулирующие наборы данных, обеспечивают трехзвенное приложение связью с сервером БД. Это могут быть наборы компонентов для технологий ADO, BDE, InterBase Express, dbExpress.

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

В состав Delphi входят удаленные модули данных. Для их создания используйте страницы Multitier, WebSnap и WebServices Репозитория Delphi:


  • Remote Data Module — удаленный модуль данных, инкапсулирующий сервер Автоматизации. Используется для организации соединений через DCOM, HTTP, сокеты;

  •  Transactioiial Data Module — удаленный модуль данных, инкапсулирующий сервер MTS (Microsoft Transaction Server);

  •  SOAP Server Data Module — удаленный модуль данных, инкапсулирующий сервер SOAP (Simple Object Access Protocol);

  •  WebSnap Data Module — удаленный модуль данных, использующий Web-службы и Web-браузер в качестве сервера.

Помимо удаленного модуля данных неотъемлемой частью сервера приложений являются компоненты-провайдеры TDataSetProvider. С каждым компонентом, инкапсулирующим набор данных, предназначенным для передачи клиенту, в модуле данных должен быть связан компонент-провайдер.

Различные типы соединений, позволяющие настроить транспорт и начать передачу и прием данных, инкапсулированы в нескольких компонентах DataSnap. Для создания соединения с тем или иным транспортным протоколом разработчику достаточно перенести соответствующий компонент на форму и правильно настроить несколько свойств. Ниже рассматриваются варианты настройки транспортных протоколов для компонентов, использующих DCOM, сокеты TCP/IP, http.

Компонент TDCOMConnection предоставляет транспорт на основе технологии Distributed COM и применяется в основном для организации транспорта в рамках локальной сети.

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



Тема 5.2 Компоненты доступа к данным и визуальные

компоненты
Особенности набора данных Table, Query и объекты полей. Визуальные компоненты

Литература: [2]; [11, с. 66-135]


Методические рекомендации
Каждое приложение, использующее базы данных, обычно имеет, по крайней мере, по одному компоненту следующих трех типов.

Компоненты - наборы данных (data set), непосредственно связывающиеся с базой данных. Для BDE это такие компоненты, как Table, Query, StoredProc, BDEClientDataSet. Для других технологий, рассмотренных, имеются аналогичные компоненты наборов данных.

Компонент - источник данных (data source), осуществляющий обмен информацией между компонентами первого типа и компонентами визуализации и управления данными. Таким компонентом является DataSource. Компоненты визуализации и управления данными- DBGrid, DBText, DBEdit и множество других.

Компоненты, обеспечивающие доступ к данным через BDE, расположены на странице BDE. На странице Data Access помещен компонент DataSource. Компоненты отображения и редактирования данных во всех версиях размещены на странице Data Control.

Связь этих компонентов друг с другом и с базой данных можно представить схемой, приведенной на рисунке 5.
.

Рисунок 5 - Схема взаимодействия компонентов Delphi с базой данных


Тема 5.3 Технология InterBase Express (IBX)
Общие особенности технологии InterBase Express. Компоненты для реализации технологии IBX

Литература: [2]; [11, с. 289-320]



Методические рекомендации
Технология InterBase Express (используется как в качестве файл-серверной технологии, так и в качестве клиент-серверной технологии) рассчитана на создание «облегченного» клиента. С этой целью она предоставляет программисту способ непосредственного обращения к промышленному серверу InterBase без использования машины баз данных BDE или подобных средств доступа к данным. Для использования технологии необходимо на компьютере развернуть сервер и запустить его.

Характерной особенностью данной технологии является создание соединения с базой данных, которое достигается с помощью двух компонент: TIBDataSet и TIBTransaction. Только после размещения на форме этих компонентов и их настройки доступ к данным могут получить другие компоненты InterBase.

Использование механизма InterBase для реализации доступа к локальным базам данных обладает рядом преимуществ:

- InterBase входит в состав инсталляционного пакета Delphi и его можно установить при инсталляции;

- отсутствие необходимости производить установку дополнительных средств доступа к данным;

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

Поэтому при разработке автономных локальных баз данных в данном курсовом проекте наиболее целесообразно было использование механизма InterBase Express.Все компоненты для реализации технологии IBX сосредоточены на вкладке InterBase палитры компонентов Delphi.

Особенностью технологии является обязательное использование в ней компонентов TIBDatabase и TIBTransaction. Эти компоненты имеют общий родительский класс TIBBase.

Закладка InterBase на палитре компонент в Delphi и C++Builder есть в любой версии Delphi/C++Builder (рисунок 6 Turbo Explorer).




Поделитесь с Вашими друзьями:
1   2   3   4   5




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница