Работа с базами данных


Содержание

ГЛАВА 11. PHP и базы данных

Средства эффективного хранения и выборки больших объемов информации внесли огромный вклад в успешное развитие Интернета. Обычно для хранения информации используются базы данных. Работа таких известных сайтов, как Yahoo, Amazon и Ebay, в значительной степени зависит от надежности баз данных, хранящих громадные объемы информации. Конечно, поддержка баз данных ориентирована не только на интересы гигантских корпораций — в распоряжении web-программистов имеется несколько мощных реализаций баз данных, распространяемых по относительно низкой цене (а то и бесплатно).

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

Глава начинается с подробного описания выборки и обновления данных в MySQL — вероятно, самой популярной СУБД, используемой в PHP ( http://www.mysql.com ). На примере MySQL будет показано, как в PHP происходят загрузка и обновление данных в базе; мы рассмотрим базовые средства поиска и сортировки, используемые во многих web-приложениях. Затем мы перейдем к реализованной в PHP поддержке ODBC (Open Data Base Connectivity) — обобщенного интерфейса, который может использоваться для одновременного соединения с разными СУБД. Поддержка ODBC в PHP будет продемонстрирована на примере соединения и выборки данных из базы данных Microsoft Access. Глава завершается проектом, в котором PHP и СУБД MySQL используются для создания иерархического каталога с информацией об избранных сайтах. При включении в каталог новых сайтов пользователь относит их к одной из стандартных категорий, определяемых администратором сайта.

Прежде чем переходить к обсуждению MySQL, я хочу сказать несколько слов об SQL — самом распространенном языке для работы с базами данных. Язык SQL заложен в основу практически всех существующих СУБД. Чтобы перейти к рассмотрению примеров работы с базами данных, необходимо хотя бы в общих чертах представлять, как работает SQL.

Что такое SQL?

SQL обычно описывается как стандартный язык, используемый для взаимодействия с реляционными базами данных (см. ниже). Однако SQL не является языком программирования, как С, C++ или PHP. Скорее, это интерфейсное средство для выполнения различных операций с базами данных, предоставляющее в распоряжение пользователя стандартный набор команд. Возможности SQL не ограничиваются выборкой данных из базы. В SQL поддерживаются разнообразные возможности для взаимодействия с базой данных, в том числе:

  • определение структуры данных — определение конструкций, используемых при хранении данных;
  • выборка данных — загрузка данных из базы и их представление в формате, удобном для вывода;
  • обработка данных — вставка, обновление и удаление информации;
  • контроль доступа — возможность разрешения/запрета выборки, вставки, обновления и удаления данных на уровне отдельных пользователей;
  • контроль целостности данных — сохранение структуры данных при возникновении таких проблем, как параллельные обновления или системные сбои.

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

Рис. 11.1. Пример реляционной базы данных

Как видно из рис. 11.1, каждая таблица состоит из строк (записей) и столбцов (полей). Каждому полю присваивается уникальное (в рамках данной таблицы) имя. Обратите внимание на связь между таблицами customer и orders, обозначенную стрелкой. В информацию о заказе включается короткий идентификатор клиента, что позволяет избежать избыточного хранения имени и прочих реквизитов клиента. В изображенной базе данных существует еще одна связь — между таблицами orders и products. Эта связь устанавливается по полю prod_id, в котором хранится идентификатор товара, заказанного данным клиентом (определяемого полем custjd). Наличие этих связей позволяет легко ссылаться на полные данные клиента и товара по простым идентификаторам. Правильно организованная база данных превращается в мощное средство организации и эффективного хранения данных с минимальной избыточностью. Запомните эту базу данных, я буду часто ссылаться на нее в дальнейших примерах.

Итак, как же выполняются операции с реляционными базами данных? Для этого в SQL существует специальный набор общих команд — таких, как SELECT, INSERT, UPDATE и DELETE. Например, если вам потребуется получить адрес электронной почты клиента с идентификатором 2001cu (см. рис. 11.1), достаточно выполнить следующую команду SQL:

SELECT cust_email FROM customers WHERE custjd = ‘2001cu’

Все вполне логично, не правда ли? В обобщенном виде команда выглядит так:

SELECT имя_поля FROM имя_таблицы [ WHERE условие ]

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

SELECT cust_email FROM customers

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

INSERT into products VALUES (‘1009pr’, ‘Red Tomatoes’, ‘1.43’);

Если позднее эти данные потребуется удалить, воспользуйтесь следующей командой:

DELETE FROM products WHERE prod_ >

Существует много разновидностей команд SQL, и полное их описание выходит за рамки этой книги. На эту тему вполне можно написать отдельную книгу! Я постарался сделать так, чтобы команды SQL, используемые в примерах, были относительно простыми, но достаточно реальными. В Web существует много учебной информации и ресурсов, посвященных SQL. Некоторые ссылки приведены в конце этого раздела.

Записывать команды SQL символами верхнего регистра необязательно. Впрочем, я предпочитаю именно такую запись, поскольку она помогает различать компоненты запроса.

Раз вы читаете эту книгу, вероятно, вас интересует вопрос, как же организуется работа с базами данных в среде Web? Как правило, сначала при помощи какого-

либо интерфейсного языка (PHP, Java или Perl) создается соединение с базой данных, после чего программа обращается к базе с запросами, используя стандартный набор средств. Интерфейсный язык можно рассматривать как своего рода «клей», связывающий базу данных с Web. Я перехожу к своему любимому интерфейсному языку — PHP.

Ниже перечислены некоторые ресурсы Интернета, посвященные SQL. Они пригодятся как новичкам, так и опытным программистам.

Поддержка баз данных в PHP

Если бы мне предложили назвать самый важный аспект PHP, вероятно, я бы остановился на поддержке баз данных. В PHP реализована обширная поддержка практически всех существующих серверов баз данных, в том числе:

PostgreSQL

Oracle (OCI7 и OC18)

Как показывает этот список, поддержка баз данных в PHP простирается от совместимости с базами данных, известных всем (например, Oracle), до тех, о которых многие даже не слышали. Мораль — если вы собираетесь использовать серьезную СУБД для хранения информации, распространяемой через Web, скорее всего, эта база данных поддерживается в PHP. Поддержка базы данных в PHP представлена набором стандартных функций для соединения с базой, обработки запросов и разрыва связи.

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

MySQL

MySQL ( http://www.mysql.com ) — надежная СУБД на базе SQL, разработанная и сопровождаемая фирмой Т.с.Х DataKonsultAB (Стокгольм, Швеция). Начиная с 1995 года, MySQL стала одной из самых распространенных СУБД в мире, что отчасти обусловлено ее скоростью, надежностью и гибкой лицензионной политикой (см. ниже).

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

MySQL распространяется на условиях общей лицензии GNU (GPL, GNU Public License). Полное описание текущей лицензионной политики MySQL приведено на сайте MySQL ( http://www.mysql.com ).

Установка

Одна из причин популярности MySQL среди пользователей PHP заключается в том, что поддержка этого сервера автоматически включается в поставку PHP. Таким образом, вам остается лишь проследить за правильной установкой пакета MySQL СУБД MySQL совместима практически с любой серьезной операционной системой, включая FreeBSD, Solaris, UNIX, Linux и различные верии Windows. Хотя лицензионная политика MySQL отличается большей гибкостью в сравнении с другими серверами баз данных, я настоятельно рекомендую ознакомиться с лицензионной информацией, размещенной на сайте MySQL ( http://www.mysql.com ).

Последнюю версию MySQL можно принять с любого зеркального сайта. Полный список зеркальных сайтов приведен по адресу http://www.mysql.com/downloads/ mirrors.html. На момент написания книги последняя стабильная версия MySQL имела номер 3.22.32, а версия 3.32 находилась на стадии бета-тестирования. Конечно, всегда следует устанавливать последнюю стабильную версию, это в ваших интересах. Посетите ближайший «зеркальный» сайт и загрузите версию, соответствующую вашей операционной системе. В верхней части страницы расположены ссылки на новые версии для различных платформ. Обязательно прочитайте всю страницу, поскольку она завершается ссылками для некоторых специфических ОС.

Группа разработчиков MySQL подготовила подробную документацию с описанием процесса установки. Я советую внимательно изучить все общие аспекты установки, не ограничиваясь информацией, относящейся непосредственно к вашей операционной системе.

Настройка MySQL

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

На первый взгляд, таблицы привилегий MySQL выглядят устрашающе, но если в них как следует разобраться, дальнейшее сопровождение становится очень простой задачей. Полное описание таблиц привилегий выходит за рамки этой книги. Впрочем, в Web существует немало ресурсов, предназначенных для помощи начинающим пользователям MySQL. За дополнительной информацией обращайтесь на сайт MySQL ( http://www.mysql.com ).

После успешной установки и настройки пакета MySQL можно начинать эксперименты с базами данных в среде Web! Именно этой теме и посвящен следующий раздел. Начнем с изучения поддержки MySQL в PHP.

Стандартные функции PHP для работы с MySQL

Итак, вы успешно создали и протестировали все необходимые разрешения; все готово для работы с сервером MySQL. В этом разделе я представлю стандартные функции PHP, при помощи которых вы сможете легко организовать взаимодействие сценариев PHP с сервером MySQL. Общая последовательность действий при взаимодействии с сервером MySQL выглядит так:

  1. Установить соединение с сервером MySQL. Если попытка завершается неудачей, вывести соответствующее сообщение и завершить процесс.
  2. Выбрать базу данных сервера MySQL. Если попытка выбора завершается неудачей, вывести соответствующее сообщение и завершить процесс. Допускается одновременное открытие нескольких баз данных для обработки запросов.
  3. Обработать запросы к выбранной базе (или базам).
  4. После завершения обработки запросов закрыть соединение с сервером баз данных.

В примерах этого раздела используются таблицы products, customers и orders (см. рис. 11.1). Если вы захотите самостоятельно проверить все примеры, создайте эти таблицы или скопируйте страницу с описанием структуры, чтобы вам не приходилось постоянно листать книгу.

Итак, начнем с самого начала — то есть с подключения к серверу MySQL.

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

int mysql_connect ([string хост [:порт] [:/путь//к/сокету] [, string имя пользователя] [, string пароль])

В параметре хост передается имя хостового компьютера, указанное в таблицах привилегий сервера MySQL. Конечно, оно же используется для перенаправления запросов на web-сервер, на котором работает MySQL, поскольку к серверу MySQL можно подключаться в удаленном режиме. Наряду с именем хоста могут указываться необязательные параметры — номер порта, а также путь к сокету (для локального хоста). Параметры имя_пользователя и пароль должны соответствовать имени пользователя и паролю, заданным в таблицах привилегий MySQL. Обратите внимание: все параметры являются необязательными, поскольку таблицы привилегий можно настроить таким образом, чтобы они допускали соединение без проверки. Если параметр хост не задан, mysql_connect( ) пытается установить связь с локальным хостом.

Пример открытия соединения с MySQL:

@mysql_connect(» local host», «web», «4tf9zzzf») or die(«Could not connect to MySQL server!»);

В данном примере localhost — имя компьютера, web— имя пользователя, а 4tf9zzzf — пароль. Знак @ перед вызовом функции mysql_connect( ) подавляет все сообщения об ошибках, выдаваемые при неудачной попытке подключения, — они заменяются сообщением, указанным при вызове die( ). Обратите внимание: значение, возвращаемое при вызове rnysql_connect( ), в данном примере не используется. Если в программе используется всего одно соединение с сервером MySQL, это вполне нормально. Но если программа устанавливает соединения с несколькими серверами MySQL на разных хостах, следует сохранить идентификатор соединения, возвращаемый при вызове mysql_connect( ), чтобы адресовать последующие команды нужному серверу MySQL. Пример:

Идентификаторы $link1 и $link2 передаются при последующих обращениях к базам данных с запросами. Вскоре вы узнаете, как именно адресовать запрос нужному серверу при помощи идентификатора соединения.

Функция mysql_pconnect( ) обеспечивает поддержку восстанавливаемых (persistent) соединений. В многопользовательских средах рекомендуется использовать mysql_pconnect( ) вместо mysql_connect( ) для экономии системных ресурсов. По типам параметров и возвращаемого значения функция mysql_pconnect( ) в точности совпадает c mysql_connect( ).

После успешного соединения с MySQL необходимо выбрать базу данных, находящуюся на сервере. Для этого используется функция mysql_select_db( ). Синтаксис функции mysql_select_db( ):

int mysql_select_db (string имя_базы_данных [, int идентификатор_соединения])

Параметр имя_базы_данных определяет выбираемую базу данных, идентификатор

которой возвращается функцией mysql_select_db( ). Обратите внимание: параметр

идентификатор_соединения необязателен лишь при одном открытом соединении с

сервером MySQL. При наличии нескольких открытых соединений этот параметр

должен указываться. Пример выбора базы данных функцией mysql_select_db( ):

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

После завершения работы с сервером MySQL соединение необходимо закрыть. Функция mysql_close( ) закрывает соединение, определяемое необязательным параметром. Если параметр не задан, функция mysql_close( ) закрывает последнее открытое соединение. Синтаксис функции mysql_close( ):

int mysql_close ([int идентификатор_соединения])

Пример использования mysql_close( ):

В этом примере указывать идентификатор соединения не нужно, поскольку на момент вызова mysql_close( ) существует лишь одно открытое соединение с сервером.

Соединения, открытые функцией mysql_pconnect( ), закрывать не обязательно.

Функция mysql_query( ) обеспечивает интерфейс для обращения с запросами к базам

данных. Синтаксис функции mysql_query( ):

int mysql_query (string запрос [, int идентификатор_соединения])

Параметр запрос содержит текст запроса на языке SQL. Запрос передается либо соединению, определяемому необязательным параметром идентификатор_соедине-ния, либо, при отсутствии параметра, последнему открытому соединению.

Неопытные программисты часто ошибочно думают, что функция mysql_query( ) возвращает результаты обработки запроса. Это не так — в зависимости от типа запроса вызов mysql_query( ) может приводить к разным последствиям. При успешном выполнении команды SQL SELECT возвращается идентификатор результата, который впоследствии передается функции mysql_result( ) для последующего форматирования и отображения результатов запроса. Если обработка запроса завершилась неудачей, функция возвращает FALSE. Функция mysql_result( ) описана в одном из следующих разделов. Количество записей, участвующих в запросе, определяется при помощи функции mysql_num_rows( ). Эта функция также описана далее.

Учитывая сказанное, я приведу примеры использования mysql_query( ) лишь после описания функций mysql_result( ) и mysql_affected_rows( ).

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

Во многих ситуациях требуется узнать количество записей, участвующих в запросе SQL с командами INSERT, UPDATE, REPLACE или DELETE. Задача решается функцией mysql_affected_rows( ). Синтаксис функции:

int mysql_affected_rows ([int идентификатор_соединения])

Обратите внимание: параметр идентификатор_соединения не является обязательным. Если он не указывается, mysql_affected_rqws( ) пытается использовать последнее открытое соединение. Пример:

// Выполнить запрос $result = mysql_query($query);

// Определить количество обновленных записей

print «Total row updated; «.mysql_affected_rows( );

При выполнении этого фрагмента будет выведен следующий результат:

Total row updated: 1

Функция mysql_affected_rows( ) не работает с запросами, основанными на команде SELECT. Для определения количества записей, возвращенных при вызове SELECT, используется функция mysql_num_rows( ), описанная в следующем разделе.

В одной специфической ситуации функция mysql_affected_rows( ) работает с ошибкой. При выполнении команды DELETE без секции WHEREmysql_affected_rows( ) всегда возвращает 0.

Функция mysql_num_rows( ) определяет количество записей, возвращаемых командой SELECT. Синтаксис функции mysql_num_rows( ):

int mysql_num_rows(int результат)

Пример использования mysql_num_rows( ):

Поскольку таблица содержит лишь один товар, название которого начинается с буквы р (pears), возвращается только одна запись. Результат:

Total rows selected: 1

Функция mysql_result() используется в сочетании с mysql_query( ) (при выполнении запроса с командой SELECT) для получения набора данных. Синтаксис функции mysql_resu1t():

int mysql_result (int идентификатор_результата, int запись [. mixed поле»]’)

В параметре идентификатор_результата передается значение, возвращенное функцией mysql_query( ). Параметр запись ссылается на определенную запись набора данных, определяемого параметром идентификатор_результата. Наконец, в необязательном параметре поле могут передаваться:

  • смещение поля в таблице;
  • имя поля;
  • имя поля в формате имя_поля_имя_тдблицы.

В листинге 11.1 используется база данных, изображенная на рис. 11.1.

Листинг 11.1. Выборка и форматирование данных в базе данных MySQL

В результате выполнения этого примера с данными, изображенными на рис. 11.1, будет получен следующий результат:

Листинг 11.2. Результат выполнения листинга 11.1

Product ID Product Name Product Price

1000pr

apples

1001pr

oranges

1002pr

bananas

1003pr

pears

Функция mysql_result( ) удобна для работы с относительно небольшими наборами данных, однако существуют и другие функции, работающие намного эффективнее, — а именно, функции mysql_fetch_row( ) и mysql_fetch_array( ). Эти функции описаны в следующих разделах.

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

array mysql_fetch_row (int результат)

Использование функции list( ) в сочетании с mysql_fetch_row( ) позволяет сэкономить несколько команд, необходимых при использовании mysql_result( ). В листинге 11.3 приведен код листинга 11.1, переписанный с использованием list( ) и mysql_fetch_row( ).

Листинг 11.3. Выборка данных функцией mysql_fetch_row( )

Листинг 11.3 выдает тот же результат, что и листинг 11.1, но использует при этом меньшее количество команд.

my sq l_f etch_array ( )

Функция mysql_fetch_array( ) аналогична mysql_fetch_row( ), однако по умолчанию значения полей записи сохраняются в ассоциативном массиве. Впрочем, вы можете выбрать тип индексации (ассоциативная, числовая или комбинированная). Синтаксис функции mysql_fetch_array( ):

array mysql_fetch_array (int идентификатор результата [, тип_индексации])

В параметре идентификатор_результата передается значение, возвращенное функцией mysql_query( ). Необязательный параметр тип_индексации принимает одно из следующих значений:

  • MYSQL_ASSOC — функция mysql_fetch_array( ) возвращает ассоциативный массив. Если параметр не указан, это значение используется по умолчанию;
  • MYSQL_NUM — функция mysql_fetch_array( ) возвращает массив с числовой индексацией;
  • MYSQL_BOTH — к полям возвращаемой записи можно обращаться как по числовым, так и по ассоциативным индексам.

Листинг 11.4 содержит очередной вариант кода листингов 11.1 и 11.3. На этот раз используется функция mysql_fetch_array( ), возвращающая ассоциативный массив полей.

Листинг 11.4. Выборка данных функцией mysql_fetch_array( )

Листинг 11.4 выдает тот же результат, что и листинги 11.1 и 11.3.

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

Пример простейшей поисковой системы на PHP

Всем нам неоднократно приходилось пользоваться поисковыми системами в Web, но как устроены такие системы? Простейшая поисковая система принимает по крайней мере одно ключевое слово. Это слово включается в запрос SQL, который затем используется для выборки информации из базы данных. Результат поиска форматируется поисковой системой по тому или иному критерию (скажем, по категории или степени соответствия).

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

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

Листинг 11.5. Простейшая поисковая система (searchengine.php)

Customer Information:


print «Identification #: $id
«;

Order History:

// Построить и выполнить запрос к таблице ‘orders’

$query = «SELECT order_id, prod_id, quantity

FROM orders WHERE cust_

ORDER BY quantity DESC»;

print »

0rder ID Product ID Quantity

«;

// Отформатировать и вывести найденные записи.

print »

«;

print »

$order_id $prod_id $quantity

«;

print «

«;

print «

«;

Если ввести ключевое слово Mi 1 апо и выбрать в раскрывающемся списке категорию Customer Name (Имя клиента), программа выводит следующую информацию:

Order Id Product Id Quantity
100003 1000pr 12
100005 1002pr 11

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

Сортировка таблиц

При выводе данных из базы необходимо предусмотреть возможность их сортировки по различным критериям. В качестве примера рассмотрим результаты, выведенные нашей поисковой системой, — обратим особое внимание на следующие после заголовка Order History: (История заказов). Допустим, список получился очень длинным, и вы хотите отсортировать данные по идентификатору товара (или идентификатору заказа). Чтобы вы лучше поняли, о чем идет речь, рекомендую посетить один из моих любимых сайтов, http://download.cnet.com. Если в процессе просмотра программ конкретной категории щелкнуть на заголовке столбца (название, дата размещения, количество загрузок или размер файла), то список автоматически упорядочивается по содержимому указанного столбца. Далее показано, как реализовать подобную возможность.

В листинге 11.6 мы производим выборку данных из таблицы orders. По умолчанию данные сортируются по убыванию объема заказа (поле quantity). Однако щелчок на любом заголовке таблицы приводит к тому, что страница загружается заново с упорядочением таблицы по указанному столбцу.

Листинг 11.6. Сортировка таблиц (tablesorter.php)

// Создать заголовок таблицы

// Отформатировать и вывести каждую строку таблицы

while (list($order_id,$cust_id,$prod_id, $quantity)

print »

«;

print »

$order_id $cust_id $prod_id

$quantity

«;

print «

«;

print «

«;

Для базы данных company, изображенной на рис. 11.1, стандартные выходные данные листинга 11.6 выглядят следующим образом:

Order ID Customer ID Product ID Quantity
2000cu 1000pr 12
2000cu 1002pr 11
2000cu 1000pr 9
2000cu 1001pr 5
2000cu 1002pr 3

Обратите внимание: заголовки таблицы представляют собой гиперссылки. Поскольку по умолчанию сортировка осуществляется по полю quantity, записи отсортированы по убыванию последнего столбца. Если щелкнуть на ссылке Order_ID, страница загружается заново, но на этот раз записи сортируются по убыванию идентификатора заказа. Таблица будет выглядеть так:

Order ID Customer ID Product ID Quantity
2000cu 1002pr 11
2000cu 1000pr 9
2000cu 1000pr 12
2000cu 1001pr 5
2000cu 1002pr 3

Сортировка выходных данных приносит огромную пользу при форматировании баз данных. Простая модификация запроса SELECT позволяет упорядочить данные по любому критерию — по возрастанию, по убыванию или с группировкой записей.

На этом наше знакомство с MySQL подходит к концу. Учтите, что материал этой главы отнюдь не исчерпывает всего, что необходимо знать о MySQL. Полный список команд MySQL в PHP приведен в документации ( http://www.php.net/manuat ).

Специализированные функции хорошо подходят для работы с одним конкретным типом СУБД. Но что делать, если вам приходится подключаться к MySQL, Microsoft SQL Server и IBM DB2, притом в одном приложении? Аналогичная проблема возникает при разработке приложений, которые не должны зависеть от СУБД; такие приложения работают «над» существующей инфраструктурой клиентской базы данных. ODBC (сокращение от «Open Database Connectivity», то есть «открытая архитектура баз данных») представляет собой интерфейс прикладных программ (API), позволяющий использовать общий набор абстрактных функций для работы с разными типами баз данных. Преимущества подобного подхода очевидны — вам не придется многократно переписывать один и тот же фрагмент кода только для того, чтобы выполнять одинаковые операции с разнотипными базами данных.

Работа с сервером баз данных через ODBC возможна лишь в том случае, если этот сервер является ODBC-совместимым. Другими словами, для него должны существовать драйверы ODBC. За дополнительной информацией о драйверах ODBC обращайтесь к документации СУБД. Возможно, вам придется дополнительно загрузить их из Интернета и установить на своем компьютере. Хотя стандарт ODBC, разработанный компанией Microsoft, стал открытым стандартом, он в основном используется для работы с СУБД на платформе Windows; впрочем, драйверы ODBC также существуют и на платформе Linux. Ниже приведены ссылки на драйверы для некоторых популярных СУБД.

Драйверы ODBC различаются по целям, платформе и назначению. За информацией о различных аспектах работы с этими драйверами обращайтесь к документации по конкретным пакетам. Впрочем, невзирая на все различия, использование этих драйверов в PHP обходится без проблем.

Когда вы определите, какой комплект драйверов ODBC лучше подходит для ваших целей, загрузите его и выполните все инструкции по установке и настройке. После этого можно переходить к следующему разделу — «Поддержка ODBC в PHP».

Поддержка ODBC в PHP

Функции ODBC в PHP, обычно называемые общими функциями ODBC, не только обеспечивают типовую поддержку ODBC, но и позволяют работать с некоторыми СУБД, обладающими собственным API, через стандартный ODBC API. К числу последних относятся следующие СУБД:

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

Поддержка ODBC встроена в комплект поставки PHP, поэтому вам за редкими исключе-ниями практически не придется заниматься специальной настройкой.

В настоящее время существует около 40 общих функций ODBC. Впрочем, для выборки информации из ODBC-совместимой базы данных вполне достаточно нескольких функций, описанных ниже. Полный список общих функций ODBC в PHP приведен в документации (http://www.php.net/manual).

Перед тем как обращаться к ODBC-совместимой базе данных с запросами, необходимо сначала установить с ней связь. Соединение создается функцией ocbc_connect( ). Синтаксис функции odbc_connect( ):

int odbc_connect (string источник_данных, string имя_пользователя, string пароль [, int тип_курсора])

Параметр источник_данных определяет ODBC-совместимую базу данных, с которой вы пытаетесь установить связь. В параметрах имя_пользователя и пароль, как нетрудно догадаться, передаются имя пользователя и пароль, необходимые для подключения к источнику данных. Необязательный параметр тип_курсора предназначе’н для устранения проблем, возникающих при работе с некоторыми драйверами ODBC. Он может принимать одно из четырех возможных значений:

  • SQL_CUR_USE_IF_NEEDED;
  • SQL_CURSOR_USE_ODBC;
  • SQL_CUR_USE_DRIVER;
  • SQL CUR DEFAULT.

Возможно, вам не придется использовать этот параметр, но все же о нем следует помнить на случай, если ваш пакет ODBC не справится с обработкой того или иного запроса.

Использовать odbc_connect( ) в программе несложно. Пример:

Функция используется для открытия восстанавливаемых (persistent) соединений с базами данных. Она экономит системные ресурсы, поскольку odbc_pconnect( ) проверяет, не было ли данное соединение открыто ранее, и если было, использует предыдущее соединение.

После завершения работы с ODBC-совместимой базой данных соединение необходимо закрыть, чтобы освободить все ресурсы, используемые открытым соединением. Соединение закрывается функцией odbc_close( ):

void odbc_close ([int идентификатор_соединения])

В параметре идентификатор_соединения передается идентификатор открытого соединения. Рассмотрим небольшой пример:

Перед непосредственной обработкой запрос необходимо «подготовить». Задача решается функцией odbc_prepare( ):

int odbc_prepare (int идентификатор_соединения , string запрос)

В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect( ). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, в дальнейшем используемый при вызове функции odbc_execute( ) (см. ниже).

Запрос, подготовленный функцией odbc_prepare( ), выполняется функцией odbc_execute( ). Синтаксис функции odbc_execute( ):

int odbc_execute (int идентификатор результата [, array параметры])

В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_prepare( ). Необязательный параметр передается лишь в том случае, если при вызове функции передаются дополнительные данные.

Рассмотрим следующий пример:

В приведенном примере продемонстрирована транзакция ODBC, при которой данные запроса не отображаются в браузере (как это обычно делается при использовании команды SELECT). Транзакция ODBC с использованием запроса QUERY описана ниже, в разделе «odbc_result_all( )».

Функция odbc_exec( ) объединяет odbc_prepare( ) и odbc_execute( ). Синтаксис функции odbc_exec( ):

int odbc_exec (int идентификатор_соединения , string запрос)

В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect( ). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, используемый при последующих вызовах функций:

В этом примере функция odbc_exec( ) пытается выполнить запрос, текст которого содержится в переменной $query. При успешном выполнении переменной $result присваивается идентификатор результата; в случае неудачи ей присваивается значение FALSE и выводится сообщение, передаваемое при вызове die( ).

Очень удобная функция odbc_result_all( ) форматирует и отображает все записи для идентификатора результата, полученного при вызове odbc_exec( ) или odbc_execute( ). Синтаксис функции odbc_result_all( ):

int odbc_result_all (int идентификатор_результата [, string формат_таблицы])

В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_exec( ) или odbc_execute( ). В необязательном параметре формат_таблицы передаются характеристики таблицы HTML. Рассмотрим следующий пример:

В результате выполнения этого примера содержимое таблицы customers будет выведено в таблице на светло-сером фоне с рамкой толщиной 1. Внешний вид таблицы для данных, приведенных на рис. 11.1, изображен на рис. 11.2.

Рис. 11.2. Данные ODBC в браузере

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

int odbc_free_result (int идентификатор_результата)

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

После того как функция odbc_result_all( ) завершила использование идентификатора результата, память возвращается в систему при помощи odbc_free_result( ).

На этом завершается наше знакомство с функциями ODBC в PHP, незаменимыми при создании простых интерфейсов на базе ODBC для доступа через Web. В следующем разделе многие из этих функций будут использованы для демонстрации того, как легко на базе PHP организуется взаимодействие с одной из самых популярных СУБД — Microsoft Access.

Microsoft Access и PHP

Популярность СУБД Microsoft Access ( http://www.microsoft.com/office/access ) отчасти объясняется ее удобным графическим интерфейсом. Помимо использования Access в качестве самостоятельной СУБД, вы можете использовать ее графический интерфейс для организации работы с другими базами данных — например, MySQL или Microsoft SQL Server.

Чтобы продемонстрировать поддержку ODBC в PHP, я опишу процесс подключения к базам данных Microsoft Access на PHP. Делается это на удивление просто, но благодаря популярности Microsoft Access это станет полезным дополнением в вашем творческом арсенале. Я опишу этот процесс шаг за шагом:

  1. Создайте базу данных Access. Предполагается, что вы уже умеете это делать, а если не умеете, но все равно хотите проследить за выполнением этого примера, — воспользуйтесь услугами программы-мастера. Я создал стандартную базу данных для хранения контактных данных при помощи мастера. Обязательно создайте в таблице несколько записей и запомните имя таблицы, оно нам вскоре понадобится!
  2. Сохраните базу данных на своем компьютере.
  3. На следующем шаге мы организуем доступ к базе Access средствами ODBC. Выполните команду Пуск > Настройка > Панельуправления (Start > Settings > Control Panel). Найдите на панели управления значок Источники данных ODBC (32) (ODBC Data Sources (32 bit)). При помощи этого значка запускается Администратор ODBC, предназначенный для настройки различных драйверов и источников данных в вашей системе. Запустите программу, дважды щелкнув на этом значке. Окно Администратора по умолчанию открывается на вкладке Пользовательский DSN (User DSN). На этой вкладке перечисляются источники данных-, которые относятся к конкретному пользователю и могут использоваться только на этом компьютере. В данном примере будет использоваться именно такой источник данных.
  4. Нажмите кнопку Добавить. (Add. ) в правой части окна. Открывается новое окно для выбора драйвера, предназначенного для работы с новым источником. Выберите строку Microsoft Access Driver (*.mdb) и нажмите кнопку Finish (Готово).
  5. На экране появляется новое окно Установка драйвера ODBC для Microsoft Access (ODBC Microsoft Access Setup). Найдите в форме текстовое поле Имя источника данных (Data Source Name) и введите в нем имя созданной вами базы данных Access. При желании можете ввести описание в текстовом поле, расположенном непосредственно под полем Имя источника данных.
  6. Нажмите кнопку Выбрать. (Select. ) — появляется окно в стиле Проводника Windows. В нем вам предлагается найти базу данных, доступ к которой будет осуществляться средствами ODBC.
  7. Найдите в дереве каталогов свою базу данных и дважды щелкните на ней. Вы снова возвращаетесь к окну Установка драйвера ODBC для Microsoft Access. Путь к выбранной базе данных отображается над кнопкой Выбрать. Нажмите кнопку ОК.
  8. Готово! Теперь вы можете работать с базой данных Access средствами ODBC.

Все, что вам остается сделать — создать сценарий, в котором вы будете работать с базой данных через ODBC. В приведенном ниже сценарии общие функции ODBC (см. выше) будут использоваться для вывода всей информации из таблицы контактов, созданной при помощи мастера Access. Однако перед рассмотрением сценария желательно знать, как таблица Contacts выглядит в Access (рис. 11.3).

Рис. 11.3. Таблица Contacts в MS Access

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

Листинг 11.7. Применение функций ODBC для работы с MS Access

Не правда ли, все просто? А самое замечательное — то, что этот сценарий полностью совместим с любой другой СУБД с поддержкой ODBC. Для тренировки попробуйте повторить все описанные действия для другой СУБД, запустите сценарий — и вы получите те же результаты, которые изображены на рис. 11.4.

Рис. 11.4. Содержимое таблицы Contacts в web-браузере

Проект: Каталог ссылок на PHP

Самый простой способ наполнить ваш сайт реальным содержанием — дать пользователю возможность сделать это за вас. Конечно, для ввода данных удобнее всего воспользоваться формой HTML.

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

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

mysql>create table bookmarks ( category INT, site_name char(35), url char(50),

date_added date, description char(254) );

В определении таблицы bookmarks имеется пара моментов, заслуживающих внимания. Во-первых, информация о категории сайта почему-то хранится в виде целого числа но разве не правильнее было бы сделать названия категорий более содержательными и понятными для пользователя? Не беспокойтесь, в ини-циализационном файле будет создан массив, связывающий целочисленные индексы с названиями категорий. В будущем администратор может изменять и даже удалять отдельные категории. Хранение информации о категориях заметно упрощает эту задачу. Кроме того, целочисленное поле обеспечивает экономию места на диске, поскольку название категории многократно сохраняется в таблице. Другое обстоятельство, относящееся к структуре таблицы, — ограничение длины описания 254 символами. В зависимости от этого объема описаний вместо типа char( ) можно воспользоваться типом medium или text. За дополнительной информацией о типах полей обращайтесь к документации MySQL.

Следующим шагом в работе над этим приложением будет создание инициализа-ционного файла. Помимо глобальных переменных, в инициализационном файле определяются две функции: add_bookmark( ) и view_bookmark( ). Функция add_bookmark( ) получает пользовательский ввод из формы и включает его в базу. Функция view_bookmark( ) получает индекс категории, читает из базы данных все записи, относящиеся к указанной категории, и отображает их в браузере. Инициализацион-ный файл приложения init.inc с комментариями приведен в листинге 11.8.

Листинг 11.8. Инициализационный файл каталога ссылок (init.inc)

while ($row = mysql_fetch_array($result)) ;

Работа с базами данных

Читайте также:

  1. DES-стандарт США на шифрование данных
  2. Автоматизация ввода данных
  3. Администрирование данных
  4. Актуализация проблемы концептуальной, экологической невалидности методик, разработанных на западе, в контексте изучения российской социально -психологической реальности.
  5. Архитектура производственной базы данных реального времени
  6. Архитектура хранилища данных
  7. Атаки на уровне систем управления базами данных
  8. База данных для отслеживания переговоров
  9. База данных, банк данных и информационные хранилища
  10. База данных. Дистанционный доступ
  11. Базовые типы данных Си
  12. Базы данных

Использование в приложениях системного буфера, DDE и OLE

Вопросы и упражнения.

1. В приведенном приложении копируйте метафайл из второй дочерней формы на первую.

2. Напишите редактор текстов с использованием MDI-технологии.

3. Какие недостатки вы видите в MDI – технологии, в каких проектах удобно использование этой технологии?

4. Создайте приложение для просмотра содержимого различных файлов с использованием MDI-технологии

5. Что произойдет с меню основной формы при открытии дочерней формы со своим меню?

Сделать приложения многозадачными, обеспечить возможность обмена данными между ними – значит усилить их гибкость и ценность. В среде Windows существует три основных метода разделения данных – буфер обмена (Clipboard), средства динамического обмена данными (DDE) и технология связывания и внедрения объектов.

Ниже перечислены компоненты Delphi для создания приложений, использующих Clipboard, DDE и OLE.

· DdeClientConv. Приложение, имеющее статус DDE – клиента, использует этот компонент для установления сеанса с сервером(conversation). Каждое приложение-клиент должно содержать хотя бы один подобный объект.

· DdeClientItem. В дополнение к объекту DdeClientConv приложение DDE – клиент использует один или более DdeClientItem в качестве контейнеров, в которые помещаются получаемые от DDE – сервера данные.

· DdeServerConv. Приложение DDE- сервер может использовать этот компонент для организации DDE –сеанса.

· DdeServerItem. Приложение DDE-сервер использует один или более подобных объектов для отправки данных клиенту.

· OleContainer.Этот объект используется для создания контейнерного приложения OLE.

Рассмотрим основные методы, свойства класса Clipboard. Компоненты Delphi Edit, MaskEdit, Memo, TDBEdit, TDBImage, TDBMemo и другие обеспечивают выполнение команд обмена данными через Clipboard. Для передачи объектов достаточно вызвать один из методов CutToClipboard (вырезать в буфер обмена), CopyToClipboard (копировать в буфер обмена), PasteToClipBoard (вставить в буфер обмена).

Пример. Пусть требуется копировать данные из Memo1 в Memo2 используя Clipboard. Установим на форме компоненты Memo1, Memo2, три кнопки. В разделе uses добавим к закладкам модуль Clipbrd.

Присвоим заголовок форме и произведем подписи кнопок (см. рис.82).

Приведем теперь код модуля Unit1.

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Clipbrd;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure TForm1.Button1Click(Sender: TObject);

procedure TForm1.Button2Click(Sender: TObject);


procedure TForm1.Button3Click(Sender: TObject);

Приведем кадр работы приложения (см. рис.83).

Свойства класса TClipboard. Этот класс предоставляет следующие свойства.

· AsText. Это свойство имеет строковый тип и предназначен для копирования и выборки текста из буфера обмена. Для копирования строки текста в буфер обмена следует присвоить значение типа строки символов языка Pascal. Так как строка языка Object Pascal может иметь неограниченную длину, то это свойство устарело.

· FormatCount. Это свойство целого типа содержит значение, равное числу элементов в описываемом ниже массиве Formats.

· Formats. Это массив значений типа Word, представляющий допустимые для помещения в Clipboard типы или форматы данных.

Константы для допустимых форматов данных Clipboard, определенные в модуле Windows.pas.

Константа Значение Константа Значение
CF_TEXT CF_PALETTE
CF_BITMAP CF_PENDATA
CF_METAFILEPICT CF_RIFF
CF_SYLK CF_WAVE
CF_DIF CF_UNICODETEXT
CF_TIFF CF_ENUMETAFILE
CF_OEMTEXT CF_HDROP
CF_DIB

Кроме перечисленных выше форматов, модуль Clipbrd поддерживает работу с двумя форматами данных, а, именно, cf_Picture и cf_Component. В любой работающей с буфером обмена программе можно использовать операторы:

cf_Component:= RegisterClipBoardFormat(‘Компонент Delphi’);

Переменные cf_Picture и cf_Component можно использовать совместно с функцией HasFormat объекта Clipboard для определения формата информации в буфере обмена. Например, if Clipboard.HasFormat(cf_Bitmap) then …

Приведем основные методы класса Clipboard.

· Assign. Позволяет копировать информацию в буфер обмена из графических объектов класса Tgraphics, Tbitmap, Tpicture, Tmetafile.

· Clear. Удаляет любые данные из буфера обмена.

· Close.Закрывает буфер обмена после выдачи ему команды Open.

· GetAsHandle. Возвращает дескриптор Windows для данных в буфере обмена. Эту функцию следует использовать при вызове функций Windows API, требующих указания дескриптора.

· GetComponent. Возвращает выбранный из буфера обмена объект компонентов Delphi.

· GetTextBuf. Возвращает выбранный из буфера обмена текст.

· HasFormat. Возвращает значение true, если данные в буфере обмена имеют формат, определяемый значением переданного этой функции аргумента типа Word/

· Open. Открывать буфер обмена с помощью этой функции нужно только в том случае, если для доступа к нему будут использоваться функции Windows API.

· Setcomponent. Помещает в буфер обмена объект компонента Delphi.

· SetTextBuf. Помещает в буфер обмена текстовые данные, завершаемые нулевым байтом.

Рассмотрим пример обмена графикой через буфер обмена. Установим на форме следующие объекты: Image1 c рисунком, Image2, три кнопки с надписями «Копирование изображения в буфер», «Вставка рисунка из буфера», «Очистка буфера обмена».

После запуска приложения при нажатии на кнопку копирования рисунок из Image1 копируется в буфер обмена, при нажатии на кнопку вставки рисунок вставляется в Image2 и размер подбирается автоматически в зависимости от размера рисунка, так как свойству autosize элемента Image2 присвоено значение true. Ниже приводится код модуля.

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, clipBrd, StdCtrls;

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure TForm1.SpeedButton1Click(Sender: TObject);

procedure TForm1.SpeedButton2Click(Sender: TObject);

if clipboard.HasFormat(cf_Picture) then

procedure TForm1.SpeedButton3Click(Sender: TObject);

Кадр выполнения приложения (см. рис.85).

DDE – динамический обмен данными. Буфер обмена Windows напоминает примитивную доску объявлений. Существующий в Windows протокол DDE (Dynamic Data Exchange) напоминает современные электронные доски и узлы Web, доступ к которым осуществляется путем установки модемных соединений.

Delphi позволяет создать программы для обработки любых типов баз данных форматов Dbase, Paradox и системы ODBC, применяемой в Microsoft Access. Для работы с базами данных в Delphi реализованы следующие компоненты, размещенные в палитрах Data Access, Data Controls.

· BatchMove. Выполняет пакетные операции с записями и таблицами(дублирование набора данных, добавление записей, удаление записей и т.д.).

· DataBase. Обеспечивает дополнительные возможности обработки баз данных, такие как регистрация на сервере и использование локальных псевдонимов.

· DataSourse. Связывает компоненты набора данных Table или Query с компонентами связи данными, такими как DBEdit, DBMemo.

· DBChart. Компонент для создания диаграмм на основе информации из базы данных.

· DBCheckbox. Связанный с данными компонент CheckBox.

· DBComboBox. Связанный с данными компонент Combobox.

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

· DbEdit. Связанный с данными компонент ввода однострочного текста Edit.

· DBGrid.Связанная с данными сетка из нескольких столбцов и строк, в которой отображаются записи базы данных. Обычно используется с объектом DBNavigator.

· DBImage. Связанный с данными графический компонент Image.

· DBListBox. Связанный с данными компонент ListBox.

· DBLookupComboBox.Связанный с данными компонент ComboBox с возможностью поиска таблицы.

· DBLookupListBox.Связанный с данными компонент ListBox с возможностью поиска таблицы.

· DBMemo.Связанный с данными компонент Memo с возможностью ввода многострочного текста.

· DBNavigator. Сложное устройство для просмотра и редактирования базы данных.

· DBRadioGroup.Связанный с данными компонент RadioGroup.

· DBRichEdit.Связанный с данными RichEdit, позволяет редактировать текстовые данные в формате RTF.

· DBText.Связанный с данными текстовый компонент, работающий в режиме только для чтения.

· Query. Формирует SQL- запросы к Borland Database Engine или к серверу SQL.

· Session.Все подсоединения к базе данных происходит в контексте объекта компонента Session, который управляет этими соединениями. Для любого приложения базы данных Delphi автоматически создает глобальный объект компонента Session.

· StoredProc. Позволяет приложению выполнять хранимые процедуры на сервере базы данных.

· Table. Предоставляет приложению возможность доступа к базам данных посредством Borland Database Engine.

· UpdateSQL. Этот компонент предназначен для разработок, в которых требуется обновить наборы данных, предназначенных только для чтения, которые формирует SQL- сервер.

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

1. Выберите пункт меню File ÞNew, чтобы открыть новое приложение. Выберите вкладку Business и дважды щелкните на пиктограмме Database Wizard (см. рис.86).

2. Мастер форм БД последовательно откроет несколько диалоговых окон с опциями для создания разнообразных форм. В первом окне выберите опции Create a simple form и Create a form using TTable objects.Эти установки, заданные по умолчанию (см. рис.87).

3. Для перехода к следующему окну щелкните на кнопке Next, чтобы вернуться назад при необходимости, щелкните на кнопке Back.

4. Выберите таблицу в комбинированном списке с пометкой Drive or Alias Name. Выберите псевдоним базы данных из имеющихся в системе. Выберите файл базы данных, щелкните на кнопке Next (см. рис.88).

5. Мастер выдаст список полей выбранной таблицы. Для переноса всех полей в список выбранных щелкните на кнопке с двойной стрелкой, а для переноса отдельных полей перетащите их с помощью мыши (см. рис.89).

6. Для определения порядка размещения полей выберите опции Horizontal или Vertical. При выборе опции Horizontal поля записей будут располагаться друг за другом, а при выборе опции Vertical – одно под другим. При выборе опции In a grid данные упорядочатся в виде таблицы, в строках которой будут записи, а в столбцах – поля (см. рис.90).

7. В последнем окне мастер форм БД предлагает создать либо экранную форму, либо и форму Form и модуль данных DataModule с невизуальными компонентами. После выбора опции щелкните на кнопке Finish (см. ри.91).

При запуске приложения мы имеем следующую картину (см. рис.92).

При работе с базами данных необходимо усвоить смысл следующих взаимосвязанных терминов, которые используются в программировании баз данных и в работе с Borland Database Engine.

· Таблица(Table). Это отдельный файл данных, который состоит из строк(записей) и столбцов(полей). Одно из полей должно содержать первичный ключ, по которому индексируется информация в файле. Таблица может индексироваться по вторичным ключам. Таблицу иногда называют набором данных (dataset).

· Запрос(Query). Как и таблица, запрос представляет набор данных SQL в формате с полосой прокрутки и навигатором. Запрос упрощает задачу доступа к базе данных, особенно если данные поступает с SQL-сервера.

· База данных(Database). Это одна или несколько таблиц. Если одна таблица связана с другой по значению ключа в определенном поле, то такая конструкция называется реляционной базой данных.

· Псевдоним(Alias).Это имя, зарегистрированное в Borland Database Engine, под которым скрывается название жесткого диска и путь к файлам базы данных. Для обращения к базам данных принято использовать псевдонимы, а не физическое имя и путь к файлу. Если использовать псевдонимы, то файлы баз данных можно перенести в другой каталог или на другой сетевой диск, а все приложения, использующие эти файлы, будут работать без ошибок.

Database Desktop. Для создания новых таблиц баз данных, изменений полей в существующих базах данных, анализа баз данных SQL в комплекте Delphi имеется приложение Database Desktop.

Рассмотрим последовательность шагов для создания новой пустой базы.

1. С помощью проводника Windows свой каталог для хранения вашей базы данных, например, C:\Database\ Mydb.

2. Запустите Database Desktop при помощи проводника Windows или из среды Delphi, выполнив команду меню ToolsÞDatabase Desktop. После появления окна Database Desktop, выполните команду ToolsÞAlias Manager.

3. Для создания нового псевдонима щелкните на кнопке New. Введите имя псевдонима( это может быть любая строка, но обычно псевдонимом служит название файла, в котором находится база данных). Введите в качестве псевдонима имя Mydb.

4. Убедитесь, что в списке Driver Type выбран тип STANDARD(по умолчанию). При минимальной инсталляции Delphi доступен только тип STANDARD. При создании базы данных класса клиент/сервер можно выбрать тип INTRBASE.

5. Щелкните на кнопке Browse и откройте список Drive or Alias. Выберите диск С:\ или имя диска, на котором находится каталог Database. Затем дважды щелкните на каталоге Database и следующем за ним Mydb. В поле Directories появится надпись C:\Database\Mydb.

6. Щелкните на кнопке OК, чтобы закрыть окно Directories Browser. На вопрос, сохранить ли псевдонимы Public Aliases в файле IDAPI32.CFG, ответьте Yes.

В результате регистрации псевдонима Mydb и пути к файлам приложением Database Desktop файлы для хранения информации базы данных не создаются. Чтобы теперь создать файлы данных для хранения, необходимо выполнить следующее.

1. Запустите Database desktop.

2. Выполнив команду FileÞNew, выберите пункт подменю Table. Из списка доступных форматов баз данных выберите Paradox 7.

3. Теперь открывается экран для вставки и редактирования полей.

Введите имена полей, тип и длину текстовых полей.

4. Щелкните на кнопке Save As. Введите строку My_db в поле Filename, а затем выберите псевдоним, который будет относиться к новой базе данных. Выберите псевдоним Mydb, который вы и определили ранее.

Приведем схему взаимодействия объектов работы с базой данных (см. рис.94).

Объект Table служит мостом между приложениями и базой данных, определяемым псевдонимом. Объект Datasource соединяет Table с элементами управления связью с данными, такими как Dbedit и DBNavigator.

Взаимодействие объектов Table и DataSource определяется программой Borland Database Engine, которая берет на себя операции чтения и записи данных в нужном формате. Элементы управления связью с данными добавляются для создания экранных форм ввода данных.

Теперь вы можете создать приложение для обработки базы данных. Это можно выполнить с использованием мастера форм БД или же, вставив, на пустую оконную форму объекты необходимых компонентов.

1. Вставьте в форму объекты компонентов Table и DataSource из вкладки палитры DataAccess.

2. Выберите на форме объект Table1 и на вкладке окна свойств(Properties) щелкните на стрелке вниз, расположенной возле свойства DatabaseName. В раскрывшемся списке зарегестрированных псевдонимов и имен баз данных выберите имя Mydb или любое другое.

3. База данных может состоять из нескольких таблиц, поэтому задайте имя таблицы возле свойства TableName. У всех объектов Table должны быть определены свойства DatabaseName и TableName.

4. Затем выберите объект Datasource1. Подключите его к таблице с помощью раскрывающегося списка, располо-женного напротив свойства DataSet.

5. DBNavigator – это компонент, который используется почти всегда. Выберите его на вкладке палитры DataControls. Задайте для свойства DataSource объекта DBNavigator1 значение DataSource1.

6. Для обеспечения просмотра и редактирования базы данных вставьте в форму объект DBGrid1, который также находится на вкладке палитры DataControls.

7. Выберите объект Table1 и дважды щелкните на свойстве Active, чтобы присвоить ему значение True.

В нашем случае для ввода и просмотра значения поля ADRESS вставлено объект Memo1, связанный с объектом DataSource1.

Для работы с базой данных в Delphi можно использовать язык структурированных запросов SQL(Structured Query Language).

SQL- это стандартизированный язык для получения доступа к данным и выполнения операций с ними, разработанный в Американском национальном институте стандартов(ANSI- The American National Standards Institute) в 1986 году.

Borland Database Engine поддерживает подмножество стандарта SQL для баз данных форматов Paradox, dBase, Oracle и ряда других. К таблицам БД можно применять команды SQL SELECT, INSERT, UPDATE и DELETE для выполнения выборки, вставки, обновления и удаления соответственно. Наличие SQL сервера обеспечивает дополнительные команды, ознакомиться с которыми можно в специальной документации.

Вопросы и упражнения.

1. Изучите самостоятельно разработку диаграмм и отчетов.

2. Разработайте приложение с одной таблицей базы данных, содержащей ФИО, год рождения, дата поступления в ВУЗ, адрес. С помощью мастера форм БД создайте окно просмотра и редактирования.

3. Разработайте приложение с двумя таблицами базы данных. Первая таблица содержит ФИО, год рождения, дата поступления в ВУЗ, адрес, а вторая таблица – ФИО отца и ФИО матери. Создайте форму для редактирования и просмотра, поиска сведений о родителях студента.

4. Как создается псевдонимы баз данных?

5. Создайте приложение Клиент/ сервер для расчета зарплаты. Доступ к базе по пароли.

| следующая лекция ==>
Разработка многодокументных приложений | Требования к методам идентификации

Дата добавления: 2014-01-05 ; Просмотров: 394 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Базы данных и СУБД

Введение

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

База данных

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

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

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

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

Система управления базами данных

Как можно догадаться уже из названия, система управления базами данных (или сокращенно СУБД) представляет собой программное обеспечение, которое используется для создания и работы с базами данных. Главная функция СУБД – это управление данными (которые могут быть как во внешней, так и в оперативной памяти). СУБД обязательно поддерживает языки баз данных, а также отвечает за копирование и восстановление данных после каких-либо сбоев.

Что касается классификации баз данных, то тут возможны различные варианты.
К примеру, можно разделить базы по модели данных: иерархические (имеют древовидную структуру), сетевые (по своей структуре похожи на иерархические), реляционные (используются для управления реляционными базами данных), объектно-ориентированные (используются для объектной модели данных) и объектно-реляционные (некое слияние реляционного и объектно-ориентированного вида баз данных).

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

Файл-серверные, клиент-серверные и встраиваемые – такие названия носят СУБД, если разделить их по способу доступа к базам данных. Файл-серверные СУБД на данный момент уже считаются устаревшими; в основном идет использование клиент-серверных (СУБД, которые располагаются на сервере вместе с самой базой данных) и встраиваемых (не требующих отдельной установки) систем.

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

В этой статье я сделаю упор на СУБД, которые используются для хранения информации различных веб-ресурсов.

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

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

Реляционные СУБД и язык SQL

Реляционные и объектно-реляционные СУБД являются одними из самых распространенных систем. Они представляют собой таблицы, у которых каждый столбец (который называется “field” или «поле») упорядочен и имеет определенное уникальное название. Последовательность строк (их называют “records” или «записи») определяется последовательностью ввода информации в таблицу. При этом обрабатывание столбцов и строк может происходить в любом порядке. Таблицы с данными связаны между собой специальными отношениями, благодаря чему с данными из разных таблиц можно работать – к примеру, объединять их – при помощи одного запроса.

Для управления реляционными базами данных применяется особый язык программирования – SQL. Сокращение расшифровывается как “Structured query language”, в переводе на русский «язык структурированных запросов».

Команды, которые используются в SQL, делятся на те, которые манипулируют данными, те, которые определяют данные, и те, которые управляют данными.

Схема работы с базой данных выглядит следующим образом:

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

MySQL


MySQL является одной из самых популярных и распространенных СУБД, которая используется во многих компаниях (например, Facebook, Wikipedia, Twitter, LinkedIn, Alibaba и других). MySQL представляет собой реляционную СУБД, которая относится к свободному программному обеспечению: она распространяется на условиях GNU Public License. Как правило, эту систему управления базами данных определяют как хорошую, быструю и гибкую систему, рекомендованную к применению в небольших или средних проектах. У MySQL есть множество различных преимуществ. Например, она поддерживает различные типы таблиц: как известные MyISAM и InnoDB, так и более экзотичные HEAP и MERGE; кроме того, количество поддерживаемых типов постоянно растет. MySQL выполняет все команды быстро – возможно, сейчас это самая быстрая СУБД из всех существующих. С этой системой управления базами данных может одновременно работать неограниченное количество пользователей, а число строк в таблицах может быть равно 50 миллионам.

Так как в сравнении с некоторыми другими СУБД MySQL поддерживает меньшее количество возможностей, то и работать с ней значительно проще, чем, к примеру, с PostgreSQL, о которой будет рассказано ниже.

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

Для работы с MySQL используется не только текстовый, но и графический режим. Это возможно благодаря приложению phpMyAdmin: для работы в приложении вам даже не нужно будет знать SQL-команды, а администрировать свою базу данных можно прямо через браузер.

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

PostgreSQL

Эта свободно распространяемая система управления базами данных относится к объектно-реляционному типу СУБД. Как и в случае с MySQL, работа с PostgreSQL основывается на языке SQL, однако, в отличие от MySQL, PostgreSQL поддерживает стандарт SQL-2011. Эта СУБД не имеет ограничений ни по максимальному размеру базы данных, ни по максимуму записей или индексов в таблице.

Если говорить о преимуществах PostgreSQL, то, безусловно, это надежность транзакций и репликаций, возможность наследования и легкая расширяемость. PostgreSQL поддерживает различные расширения и варианты языков программирования, такие как PL/Perl, PL/Python и PL/Java. Также есть возможность загружать C-совместимые модули.

Многие отмечают, что в отличие от MySQL данная СУБД имеет хорошую и подробную документацию, которая дает ответы практически на все вопросы.

О том, что это более масштабная, чем MySQL, СУБД, говорит и тот факт, что PostgreSQL периодически сравнивают с такой мощной системой управления данных, как Oracle.

Все это позволяет говорить о PostgreSQL как об одной из самых продвинутых СУБД на данный момент.

SQLite

На данный момент это одна из самых компактных СУБД; также она является встраиваемой и реляционной. SQLite позволяет хранить все данные в одном файле и, благодаря своему небольшому объему, отличается завидным быстродействием. SQLite значительно отличается от MySQL и PostgreSQL своей структурой: движок и интерфейс этой СУБД находятся в одной библиотеке – и именно это позволяет выполнять все запросы очень быстро. Другие СУБД (MySQL, PostgreSQL, Oracle и т.д.) используют парадигму клиент-сервер, когда взаимодействие происходит через сетевой протокол.

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

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

Oracle

Эта СУБД относится к объектно-реляционному типу. Название произошло от названия разработавшей эту систему фирмы Oracle. Наравне с SQL СУБД использует процедурное расширение под названием PL/SQL, а также язык Java.

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

В отличие от других СУБД, стоимость покупки и использования Oracle достаточно высока, и именно это зачастую является значимым препятствием к ее использованию в небольших фирмах. Вероятно, именно это также является причиной того, что в рейтинге СУБД на 2020 год в России Oracle находится лишь на 6-м месте.

MongoDB

Эта СУБД отличается тем, что она предназначена для хранения иерархических структур данных, и поэтому ее называют документоориентированной (она представляет собой документное хранилище без использования таблиц или схем). MongoDB имеет открытый исходный код.

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

Однако этот язык имеет и свои ограничения, а поэтому MongoDB следует использовать в случаях, когда нет необходимости в сложных и нетривиальных выборках.

Вместо заключения

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

Принципы работы баз данных

База данных (БД) – информация, связанная между собой по определенному признаку, хранимая и организованная особым образом, как правило, в виде таблиц.

Пример таблицы БД приведен на рисунке 3.10.

Номер замера Скважина Дата Время Дебит
02.07.2003 … 19:50:20 …

Функции БД:

— добавление новой информации;

— добавление новых таблиц;

— изменение информации в существующих таблицах;

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

СУБД выполняет функции:

— управление данными непосредственно в БД, находящейся на сервере;

— управление данными, находящимися в памяти компьютера – функция, связанная с тем, что СУБД работают с БД большого размера; в целях ускорения работы СУБД используется буферизация данных в памяти каждого компьютера;

— управление транзакциями – функция, которая производит ряд операций над БД как над единым целым. Транзакция – манипуляция над данными (добавление, изменение, удаление, запрос). Если транзакция успешно выполняется, то СУБД вносит соответствующие изменения в БД, в противном случае БД не изменяется;

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

— поддержка языков БД – для работы с БД используются специальные языки, наиболее распространенным из которых является SQL.

Для работы с БД, как правило, используется архитектура «клиент — сервер» [41]. Основу СУБД составляет сервер БД – программа, осуществляющая комплекс действий по управлению данными. В качестве клиента БД может выступать другая программа, работающая на том же компьютере, что и сервер, либо на другом, связанном с компьютером-сервером посредством сети. Таким образом, данная архитектура включает, как минимум, три компонента:

— сервер БД, который, собственно, и является СУБД;

— клиенты БД – программы или компьютеры с соответствующими программами, выполняющие запросы к серверу;

— сеть или коммуникационное программное обеспечение (рисунок 3.11).

В принципе, и клиентская, и серверная части СУБД могут находиться на одном компьютере, но, в большинстве случаев, на предприятиях программа-сервер запускается на одном компьютере (сервере), а программа-клиент – на рабочих компьютерах.

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

Связи между таблицами осуществляются посредством первичных ключей. На рисунке 3.12 приведен пример БД, состоящей из трех таблиц («Технологические объекты», «Датчики» и «Измерения»). Обозначены поля: N_об – номер технологического объекта, N_дтч – номер датчика.

Связи (отношения между таблицами) могут быть идентифицирующие и неидентифицирующие. Если запись в таблице-потомке однозначно определяется своей связью с таблицей-родителем, то отношение между этими таблицами является идентифицирующим. В этом случае первичный ключ таблицы-родителя становится первичным ключом (или частью первичного ключа) таблицы-потомка. Например, отношение «производят» на рисунке 14 является идентифицирующим для таблицы-родителя «Датчики» и таблицы-потомка «Измерения», поэтому первичный ключ таблицы-родителя (поле «N_дтч») становится частью составного ключа таблицы-потомка. Отношение «содержат» является неидентифицирующим, поэтому первичный ключ таблицы-родителя «Технологические объекты» (поле «N_об») становится обычным полем таблицы-потомка «Датчики».

Работа с базой данных

С базами данных работают два типа пользователей – проектировщики и пользователи. Поэтому СУБД имеет два режима работы: проектировочный и пользовательский.

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

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

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

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

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

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

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

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

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

Макросы и модули– это объекты, предназначенные для автоматизации повторяющихся операций при работе с СУБД, а также для создания новых функций путем программирования. Макросы состоят из последовательности внутренних команд СУБД и являются одним из средств автоматизации работы с базой. Модули создаются средствами внешнего языка программирования, которым в случае использования СУБД Microsoft Access является язык Visual Basic for Applications. С помощью модулей разработчик может заложить в базу данных нестандартные функциональные возможности для удовлетворения специфических требования заказчика.

Не нашли то, что искали? Воспользуйтесь поиском:

Работа с базами данных

Исследование организованных структур, предназначенных для хранения информации. Средства описания данных в базах данных и связей между ними. Анализ структуры простейших баз данных и свойств их полей. Режимы работы с базами данных и их проектирование.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 09.07.2014
Размер файла 26,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Основные понятия баз данных

1.1 Базы данных и системы управления базами данных

1.2 Состав системы управления базами данных

1.3 Структура простейшей базы данных

1.4 Свойства полей базы данных

1.6 Безопасность баз данных

2. Проектирование баз данных

2.1 Режимы работы с базами данных

2.2 Объекты базы данных

3. Проектирование базы данных

3.1 Разработка технического задания

3.2 Разработка структуры базы данных

Список использованной литературы

база данные проектирование информация

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

1. Основные понятия баз данных

1.1 Базы данных и системы управления базами данных

База данных — это организованная структура, предназначенная для хранения информации. В современных базах данных хранятся не только данные, но и информация.

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

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

В мире существует множество систем управления базами данных. Несмотря на то что они могут по-разному работать с разными объектами и предоставляют пользователю различные функции и средства, большинство СУБД опираются на единый устоявшийся комплекс основных понятий. Это дает нам возможность рассмотреть одну систему и обобщить ее понятия, приемы и методы на весь класс СУБД. В качестве такого учебного объекта мы выберем СУБД Microsoft Access, входящую в пакет Microsoft Office.

Язык описания данных (ЯОД) — Средства описания данных в БД и связей между ними. Средствами этого языка описывается структура БД, форматы записей, пароли, защищающие данные.

Язык манипулирования данными (ЯМД) — язык для выполнения операций над данными, позволяющий менять их строение.

Для различных СУБД реализация этих уровней языков может быть различной. В одних случаях ЯОД и ЯМД требует составления пользователем программы полностью “вручную”, в других (что отражает современную тенденцию) в СУБД присутствует средства визуальной (зримой, наглядной) разработки программ. Для этого в современных СУБД имеются редакторы экранных форм, отчетов. “Кирпичиками” (инструментами) таких редакторов являются поля различных видов (поля ввода, поля вывода, вычисляемые поля), процедуры обработки различных типов (формы ввода, таблицы, отчеты, запросы). На основании созданных пользователем объектов программы — генераторы формируют программный код на языке конкретной машины или на промежуточном языке.

1.3 Структура простейшей базы данных

Сразу поясним, что если в базе нет никаких данных (пустая база), то это все равно полноценная база данных. Этот факт имеет методическое значение. Хотя данных в базе и нет, но информация в ней все-таки есть — это структура базы. Она определяет методы занесения данных и хранения их в базе. Простейший «некомпьютерный» вариант базы данных — деловой ежедневник, в котором каждому календарному дню выделено по странице. Даже если в нем не записано ни строки, он не перестает быть ежедневником, поскольку имеет структуру, четко отличающую его от записных книжек, рабочих тетрадей и прочей писчебумажной продукции.

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

Структуру двумерной таблицы образуют столбцы и строки. Их аналогами в простейшей базе данных являются поля и записи. Если записей в таблице пока нет, значит, ее структура образована только набором полей. Изменив состав полей базовой таблицы (или их свойства), мы изменяем структуру базы данных и, соответственно, получаем новую базу данных.

1.4 Свойства полей базы данных

Поля базы данных не просто определяют структуру базы — они еще определяют групповые свойства данных, записываемых в ячейки, принадлежащие каждому из полей. Ниже перечислены основные свойства полей таблиц баз данных на примере СУБД Microsoft Access.

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

Тип поля — определяет тип данных, которые могут содержаться в данном поле.

Размер поля — определяет предельную длину (в символах) данных, которые могут размещаться в данном поле.

Формат поля — определяет способ форматирования данных в ячейках, принадлежащих полю.

Маска ввода — определяет форму, в которой вводятся данные а поле (средство автоматизации ввода данных).

Подпись — определяет заголовок столбца таблицы для данного поля (если подпись не указана, то в качестве заголовка столбца используется свойство Имя поля).

Значение по умолчанию — то значение, которое вводится в ячейки поля автоматически (средство автоматизации ввода данных).

Условие на значение — ограничение, используемое для проверки правильности ввода данных (средство автоматизации ввода, которое используется, как правило, для данных, имеющих числовой тип, денежный тип или тип даты).

Сообщение об ошибке — текстовое сообщение, которое выдается автоматически при попытке ввода в поле ошибочных данных.

Обязательное поле — свойство, определяющее обязательность заполнения данного поля при наполнении базы.

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

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

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

Таблицы баз данных, как правило, допускают работу с гораздо большим количеством разных типов данных. Так, например, базы данных Microsoft Access работают со следующими типами данных.

Текстовый — тип данных, используемый для хранения обычного неформатированного текста ограниченного размера (до 255 символов).

Числовой — тип данных для хранения действительных чисел.

Поле Мемо — специальный тип данных для хранения больших объемов текста (до 65 535 символов). Физически текст не хранится в поле. Он храниться в другом месте базы данных, а в поле храниться указатель на него, но для пользователя такое разделение заметно не всегда.

Дата/время — тип данных для хранения календарных дат и текущего времени.

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

Счетчик — специальный тип данных для уникальных (не повторяющихся в поле) натуральных чисел с автоматическим наращиванием. Естественное использование — для порядковой нумерации записей.

Логический — тип для хранения логических данных (могут принимать только два значения, например Да или Нет).

Гиперссылка — специальное поле для хранения адресов URL Web-объектов Интернета. При щелчке на ссылке автоматически происходит запуск броузера и воспроизведение объекта в его окне.

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

1.6 Безопасность баз данных

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

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

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

2. Проектирование баз данных

2.1 Режимы работы с базами данных

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

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

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

2.2 Объекты базы данных

Таблицы — это основные объекты любой базы данных. Во-первых, в таблицах хранятся все данные, имеющиеся в базе, а во-вторых, таблицы хранят и структуру базы (поля, их типы и свойства).

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

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


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

Это специальные объекты баз данных, реализованных в последней версии СУБД Microsoft Access (Access 2000). Правда, более коректно их называть страницами доступа к данным. Физически это особый объект, выполненный в коде HTML, размещаемый на Web-странице и передаваемый клиенту вместе с ней. Сам по себе этот объект не является базой данной, но содержит компоненты, через которые осуществляется связь переданной Web-страницы с базой данных, остающейся на сервере. Пользуясь этими компонентами, посетитель Web-узла может просматривать записи базы в полях страницы доступа. Таким образом, страницы доступа к данным осуществляют интерфейс между клиентом, сервером и базой данных, размещенной на сервере. Эта база данных не обязательно должна быть базой данных Microsoft Access. Страницы доступа, созданные средствами Microsoft Access, посволяют работать также с базами данных Microsoft SQL Server.

Макросы и модули

Эти категории объектов предназначены как для автоматизации повторяющихся операций при работе с СУБД, так и для создания новых функций путем программирования. В СУБД Microsoft Access макросы состоят из последовательности внутренних команд СУБД и являются одним из средств автоматизации работы с базой. Модули создаются средствами внешнего языка програмирования, в данном случае языка Visual Basic for Applications. Это одно из средств, с помощью которых разработчик базы может заложить в нее нестандартные функциональные возможности, удовлетворить специфическое требование заказчика, повысить быстродействие системы управления, а также уровень ее защищенности.

3. Проектирование базы данных

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

3.1 Разработка технического задания

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

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

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

При подготовке технического задания составляют:

Список исходных данных, с которыми работает заказчик;

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

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

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

3.2 Разработка структуры базы данных

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

Работа начинается с составления генерального списка полей — он может насчитывать десятки и даже сотни позиций.

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

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

В каждой из таблиц намечают ключевое поле. В качестве такого выбирают поле, данные в котором повторяться не могут. Например, для таблицы данных о студентах таким поле может служить индивидуальный шифр студента. Для таблицы, в которой содержаться расписание занятий, такого поля можно и не найти, но его можно создать искусственным комбинированием полей «Время занятия» и «Номер аудитории». Эта комбинация не повторима, так как в одной аудитории в одно и то же время не принято проводить два различных занятия. Если в таблице вообще нет ни каких полей, которые можно было бы использовать, как ключевые, всегда можно ввести дополнительное поле типа Счетчик — оно не может содержать повторяющихся данных по определению.

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

Разработкой схемы данных заканчивается «бумажный» этап работы над техническим предложением. Эту схему можно согласовать с заказчиком, после чего приступать к непосредственному созданию базы данных.

Следует помнить, что по ходу разработки проекта заказчику непременно будут приходить в голову новые идеи. На всех этапах проектирования он стремится охватить единой системой все новые и новые подразделения и службы предприятия. Возможность гибкого использования его пожеланий во многом определяется квалификацией разработчика базы данных. Если схема данных составлена правильно, подключать к базе новые таблицы нетрудно. Если структура базы нерациональна, разработчик может испытать серьезные трудности и войти в противоречие с заказчиком. Противоречия исполнителя с заказчиком всегда свидетельствуют о недостаточной квалификации исполнителя. Именно по этому этап предварительного проектирования базы данных следует считать основным. От его успеха зависит, насколько база данных станет удобной, и будут ли с ней работать пользователи. Если отмечается, что пользователи базы «саботируют» ее эксплуатацию и предпочитают работать традиционными методами, это говорит не о низкой квалификации пользователей, а о недостаточной квалификации разработчика базы.

На этом этапе завершается предварительное проектирование базы данных, и на следующем этапе начинается ее непосредственная разработка. С этого момента следует начать работу с СУБД.

Заключение

Преимущества использования БД. Рассмотрим, какие преимущества получает пользователь при использовании БД как безбумажной технологии:

* Компактность. Информация хранится в БД, нет необходимости хранить многотомные бумажные картотеки

* Скорость. Скорость обработки информации (поиск, внесение изменений) компьютером намного выше ручной обработки * низкие трудозатраты. Нет необходимости в утомительной ручной работе над данными

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

Современные СУБД дают возможность включать в них не только текстовую и графическую информацию, но и звуковые фрагменты и даже видеоклипы.

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

Список использованной литературы

1. Информатика. Базовый курс /Симонович С.В. и др. СПб: Издательство «Питер», 2000.

2. Информатика. Учебное пособие /Под ред. В.Г. Кирия. Иркутск: ИрГТУ,1998 часть 2.

Информатика. Учебное пособие /Ломтадзе В.В., Шишкина Л.П. Иркутск: ИрГТУ, 1999.

Размещено на Allbest.ru

Подобные документы

Теоретические сведения и основные понятия баз данных. Системы управления базами данных: состав, структура, безопасность, режимы работы, объекты. Работа с базами данных в OpenOffice.Org BASE: создание таблиц, связей, запросов с помощью мастера запросов.

курсовая работа [3,2 M], добавлен 28.04.2011

Особенности управления информацией в экономике. Понятие и функции системы управления базами данных, использование стандартного реляционного языка запросов. Средства организации баз данных и работа с ними. Системы управления базами данных в экономике.

контрольная работа [19,9 K], добавлен 16.11.2010

Автоматизация сбора и обработки данных. Основы, таблицы и средства для работы с базами данных. Инструментальные средства и компоненты. Технология создания приложения. Работа с псевдонимами и со связанными таблицами. Система управления базами данных.

методичка [1,5 M], добавлен 06.07.2009

Формы представляемой информации. Основные типы используемой модели данных. Уровни информационных процессов. Поиск информации и поиск данных. Сетевое хранилище данных. Проблемы разработки и сопровождения хранилищ данных. Технологии обработки данных.

лекция [15,5 K], добавлен 19.08.2013

Возможности системы управления базами данных Access. Структура простейшей базы данных: свойства ее полей, типы данных, безопасность и режим работы. Определение связей между таблицами в базе данных. Использование запроса на выборку, макроса и отчетов.

курсовая работа [1,7 M], добавлен 05.12.2010

Алгоритмы обработки массивов данных. Система управления базами данных. Реляционная модель данных. Представление информации в виде таблицы. Система управления базами данных реляционного типа. Графический многооконный интерфейс.

контрольная работа [2,8 M], добавлен 07.01.2007

Классификации баз данных по характеру сберегаемой информации, способу хранения данных и структуре их организации. Современные системы управления базами данных и программы для их создания: Microsoft Office Access, Cronos Plus, Base Editor, My SQL.

презентация [244,3 K], добавлен 03.06.2014

Информационные банки данных, документов и знаний. Фактографические информационные системы управления базами данных. Прикладные программы и языковые средства, предназначенных для создания, ведения и использования баз данных. Механизмы обработки данных.

презентация [14,0 K], добавлен 14.10.2013

Система управления базами данных как составная часть автоматизированного банка данных. Структура и функции системы управления базами данных. Классификация СУБД по способу доступа к базе данных. Язык SQL в системах управления базами данных, СУБД Microsoft.

реферат [46,4 K], добавлен 01.11.2009

Виды связей между объектами в системе управления базами данных MS Access. Ввод и редактирование данных в таблицах, обработка информации базы данных. Архитектура БД по принципу файл-сервер. Создания формы в окне базы данных, использование отчетов.

презентация [511,9 K], добавлен 20.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.

Создание базы данных в Excel и функции работы с ней

Любая база данных (БД) – это сводная таблица с параметрами и информацией. Программа большинства школ предусматривала создание БД в Microsoft Access, но и Excel имеет все возможности для формирования простых баз данных и удобной навигации по ним.

Как сделать базу данных в Excel, чтобы не было удобно не только хранить, но и обрабатывать данные: формировать отчеты, строить графики, диаграммы и т.д.

Пошаговое создание базы данных в Excel

Для начала научимся создавать БД с помощью инструментов Excel. Пусть мы – магазин. Составляем сводную таблицу данных по поставкам различных продуктов от разных поставщиков.

№п/п Продукт Категория продукта Кол-во, кг Цена за кг, руб Общая стоимость, руб Месяц поставки Поставщик Принимал товар

С шапкой определились. Теперь заполняем таблицу. Начинаем с порядкового номера. Чтобы не проставлять цифры вручную, пропишем в ячейках А4 и А5 единицу и двойку, соответственно. Затем выделим их, схватимся за уголок получившегося выделения и продлим вниз на любое количество строк. В небольшом окошечке будет показываться конечная цифра.

Примечание. Данную таблицу можно скачать в конце статьи.

По базе видим, что часть информации будет представляться в текстовом виде (продукт, категория, месяц и т.п.), а часть – в финансовом. Выделим ячейки из шапки с ценой и стоимостью, правой кнопкой мыши вызовем контекстное меню и выберем ФОРМАТ ЯЧЕЕК.

Появится окно, где мы выберем формат – финансовый. Число десятичных знаков поставим 1. Обозначение выбирать не будем, т.к. в шапке у нас уже указано, что цена и стоимость в рублях.

Аналогично поступаем с ячейками, куда будет вписываться количество. Формат выбираем числовой.

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

Теперь заполняем таблицу данными.

Важно! При заполнении ячеек, нужно придерживаться единого стиля написания. Т.е. если изначально ФИО сотрудника записывается как Петров А.А., то остальные ячейки должны быть заполнены аналогично. Если где-то будет написано иначе, например, Петров Алексей, то работа с БД будет затруднена.

Таблица готова. В реальности она может быть гораздо длиннее. Мы вписали немного позиций для примера. Придадим базе данных более эстетичный вид, сделав рамки. Для этого выделяем всю таблицу и на панели находим параметр ИЗМЕНЕНИЕ ГРАНИЦ.

Аналогично обрамляем шапку толстой внешней границей.

Функции Excel для работы с базой данных

Теперь обратимся к функциям, которые Excel предлагает для работы с БД.

Работа с базами данных в Excel

Пример: нам нужно узнать все товары, которые принимал Петров А.А. Теоретически можно глазами пробежаться по всем строкам, где фигурирует эта фамилия, и скопировать их в отдельную таблицу. Но если наша БД будет состоять из нескольких сотен позиций? На помощь приходит ФИЛЬТР.

Выделяем шапку таблицы и во вкладке ДАННЫЕ нажимаем ФИЛЬТР (CTRL+SHIFT+L).

У каждой ячейки в шапке появляется черная стрелочка на сером фоне, куда можно нажать и отфильтровать данные. Нажимаем ее у параметра ПРИНИМАЛ ТОВАР и снимаем галочку с фамилии КОТОВА.

Таким образом, у нас остаются данные только по Петрову.

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

Можно произвести дополнительную фильтрацию. Определим, какие крупы принял Петров. Нажмем стрелочку на ячейке КАТЕГОРИЯ ПРОДУКТА и оставим только крупы.

Вернуть полную БД на место легко: нужно только выставить все галочки в соответствующих фильтрах.

Сортировка данных

В нашем примере БД заполнялась в хронологическом порядке по мере привоза товара в магазин. Но если нам нужно отсортировать данные по другому принципу, Excel позволяет сделать и это.

К примеру, мы хотим отсортировать продукты по мере увеличения цены. Т.е. в первой строке будет самый дешевый продукт, в последней – самый дорогой. Выделяем столбец с ценой и на вкладке ГЛАВНАЯ выбираем СОРТИРОВКА И ФИЛЬТР.

Т.к. мы решили, что сверху будет меньшая цена, выбираем ОТ МИНИМАЛЬНОГО К МАКСИМАЛЬНОМУ. Появится еще одно окно, где в качестве предполагаемого действия выберем АВТОМАТИЧЕСКИ РАСШИРИТЬ ВЫДЕЛЕННЫЙ ДИАПАЗОН, чтобы остальные столбцы тоже подстроились под сортировку.

Видим, что данные выстроились по увеличивающейся цене.

Примечание! Сделать сортировку по убыванию или увеличению параметра можно через автофильтр. При нажатии стрелочки тоже предлагается такое действие.

Сортировка по условию

Нам нужно извлечь из БД товары, которые покупались партиями от 25 кг и более. Для этого на ячейке КОЛ-ВО нажимаем стрелочку фильтра и выбираем следующие параметры.

В появившемся окне напротив условия БОЛЬШЕ ИЛИ РАВНО вписываем цифру 25. Получаем выборку с указанием продукты, которые заказывались партией больше или равной 25 кг. А т.к. мы не убирали сортировку по цене, то эти продукты расположились еще и в порядке ее возрастания.

Промежуточные итоги

И еще одна полезная функция, которая позволит посчитать сумму, произведение, максимальное, минимальное или среднее значение и т.п. в имеющейся БД. Она называется ПРОМЕЖУТОЧНЫЕ ИТОГИ. Отличие ее от обычных команд в том, что она позволяет считать заданную функцию даже при изменении размера таблицы. Чего невожнможно реалиловать в данном случаи с помощью функции =СУММ(). Рассмотрим на примере.

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

Функция ПРОМЕЖУТОЧНЫЕ ИТОГИ имеет 30 аргументов. Первый статический: код действия. По умолчанию в Excel сумма закодирована цифрой 9, поэтому ставим ее. Второй и последующие аргументы динамические: это ссылки на диапазоны, по которым подводятся итоги. У нас один диапазон: F4:F24. Получилось 19670 руб.

Теперь попробуем снова отсортировать кол-во, оставив только партии от 25 кг.

Видим, что сумма тоже изменилась.

Получается, что в Excel тоже можно создавать небольшие БД и легко работать с ними. При больших объемах данных это очень удобно и рационально.

Разработчик БД (баз данных)

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

Краткое описание

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

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

Особенности профессии

Специалисты, которые решили связать свою жизнь с этой профессией, выполняют следующие работы:

  • проектирование баз данных (выбор правильных инструментов, анализ потребностей системы компании и т. д.);
  • обеспечение эффективного использования созданной базы данных;
  • отладка и сопровождение;
  • обеспечение безопасности данных, которые хранятся на сервере;
  • анализ жалоб и предложений пользователей, устранение ошибок;
  • консультации для системных администраторов;
  • анализ нагрузки и обновление ядра СУБД;
  • совместная работа с администраторами, программистами и архитекторами баз данных.

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

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

Плюсы и минусы профессии

Плюсы

  1. Средняя востребованность на рынке труда.
  2. Возможность развиваться, получать новые знания, шагать по карьерной лестнице.
  3. Можно совмещать работу со смежной специальностью (администратор или архитектор баз данных и другие).
  4. Хороший специалист быстро найдет работу, ведь каждая компания нуждается в создании, обслуживании и модификации базы данных.
  5. Достойная заработная плата и премии.
  6. Работа в офисе, полный рабочий день.
  7. Нормированный рабочий день, но в случае ЧП рабочий день специалиста длится до тех пор, пока он не устранит сбой.
  8. Если специалист пройдет обучение на курсах, которые выдают международный сертификат, то сможет найти работу или пройти практику за рубежом.

Минусы

  1. Работа очень ответственная и однообразная.
  2. Высокая конкуренция в этом сегменте.
  3. Для трудоустройства в солидную компанию необходимо иметь опыт работы не менее 1-3 лет.
  4. Сидячая работа, что оказывает высокую нагрузку на позвоночник и психоэмоциональное состояние специалиста.

Важные личные качества

Разработчик баз данных должен отличаться высокой ответственностью, техническим складом ума, а также следующими важными качествами:


  • аналитическое мышление;
  • педантичность;
  • пунктуальность;
  • многозадачность;
  • внимательность;
  • усидчивость;
  • аккуратность;
  • ответственность;
  • активность;
  • коммуникабельность;
  • обучаемость.

Специалист должен уметь контролировать свою работу, ведь каждая его ошибка ударит рублем по карману заказчика!

Обучение на разработчика базы данных

Эту техническую профессию абитуриенты могут освоить в высших учебных заведениях, на курсах при вузах или в частных школах. Для поступления абитуриент должен сдать такие предметы во время ЕГЭ:

  • математика, физика или химия;
  • английский язык, но по требования вуза;
  • обязательный русский язык и информатика.

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

Курсы

Центр «Специалист» при МГТУ им. Н. Э. Баумана

Эти курсы выпускают лучших специалистов в РФ, славясь высоким качеством обучения и множеством направлений подготовки. И здесь разработчики баз данных и люди, желающие узнать об этой профессии больше, смогут пройти курсы для повышения квалификации. Обучаться можно как очно, так и в режиме онлайн, выбирая удобный график!

Киевский учебный центр «Курсор»

Студенты этого учебного центра смогут получить знания о базах данных, математических моделях, языке запросов SQL. Программа курсов будет интересна для опытных специалистов и новичков, которые только начинают осваивать эту профессию.

Место работы

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

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

Оплата труда

Зарплата на 12.11.2020

Заработная плата этих специалистов зависит от их опыта работы, а также от смежных специальностей, с которыми они знакомы. Каждые 3-5 лет работы — это не только плюс в резюме, но и повышение должностного оклада минимум на 20-25%.

Карьерный рост

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

Профессиональные знания

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

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

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

РАБОТА С БАЗАМИ ДАННЫХ (Node.js database tutorial)

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

This article was translated to Russian by Andrey Melikhov, a front-end developer from Yandex.Money and editor of the collective blog about front-end, devSchacht. Find Andrey on: Twitter, GitHub, Medium & SoundCloud

Read the original article in English: Node.js database tutorial.

Перевод этой статьи сделан Андреем Мелиховым, фронтенд-разработчиком из компании Яндекс.Деньги, редактором коллективного блога о фронтенде, devSchacht. Twitter | GitHub | Medium | SoundCloud

Хранение данных в глобальной переменной

Раздача статических страниц пользователям (как это делать вы узнали в предыдущей главе) может быть подходящим вариантом для лэндингов или для личных блогов. Однако, если вы хотите отдавать персонализированный контент, вам придётся где-то хранить данные.

Возьмём простой пример: регистрация пользователя. Вы можете отдавать пользовательский контент для отдельных пользователей или сделать его доступным для них только после идентификации.

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

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

Использование этого метода может быть проблематичным по нескольким причинам:
• оперативная память дорогая,
• память очищается каждый раз, когда вы перезапускаете ваше приложение,
• если вы не будете чистить память, иногда вы можете получить переполнение памяти.

Хранение данных в файле

Следующее решение, которое может прийти к вам в голову — это хранить данные в файлах.

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

На практике этот метод выглядит следующим образом:

Таким образом, мы не потеряем пользовательские данные даже после перезагрузки сервера. Это решение также экономически выгодно, так как увеличение дискового пространства дешевле, чем покупка ОЗУ.

К сожалению, хранение пользовательских данных таким образом все ещё имеет несколько недостатков:

  • Добавление данных работает неплохо, но подумайте об обновлении или удалении.
  • Если мы работаем с файлами, нет простого решения для параллельные доступа к ним (системные блокировки не позволят вам писать в один файл параллельно).
  • Когда мы пытаемся масштабировать наше приложение, мы не можем разделить файлы между серверами (на самом деле можем, но это далеко за пределами уровня этого руководства).

Здесь выходят на сцену настоящие базы данных.

Возможно, вы уже слышали, что существуют два основных типа баз данных: SQL и NoSQL.

Начнём с SQL. Это язык запросов, предназначенный для работы с реляционными базами данных. SQL немного отличается в зависимости от продукта, который вы используете, но основы одинаковы в каждом из них.

Сами данные хранятся в таблицах, и каждая добавленная часть будет представлена в виде строки в таблице, как в Google Sheets или Microsoft Excel.

В базе данных SQL вы можете определить схемы — эти схемы предоставят скелет для данных, которые вы собираетесь разместить. Перед тем, как сохранить данные, необходимо задать типы различных значений. Например, вам нужно будет определить таблицу для ваших пользовательских данных и сообщить базе данных, что у неё есть имя пользователя, которое является строкой, и возраст, который является целым типом.

NoSQL

С другой стороны, NoSQL базы данных стали весьма популярными в последнее десятилетие. С NoSQL вам не нужно определять схему, и вы можете хранить любой произвольный JSON. Это хорошо сочетается с JavaScript, потому что мы можем легко превратить любой объект в JSON. Будьте осторожны, потому что вы никогда не можете гарантировать, что данные консистентны, и вы никогда не сможете узнать, какая структура находится в базе данных.

Node.js и MongoDB

Существует распространённое заблуждение о Node.js, которое мы слышим довольно часто:

«Node.js можно использовать только с MongoDB (которая является самой популярной NoSQL базой данных)».

По моему опыту, это не так. У большинства баз данных имеются драйверы для Node.js, и у них также есть библиотеки в NPM. По моему мнению, они такие же простые и лёгкие в использовании, как MongoDB.

Node.js и PostgreSQL

Для простоты мы будем использовать SQL в следующем примере. Мой выбор — PostgreSQL.

Чтобы запустить PostgreSQL, вам необходимо установить его на свой компьютер. Если вы используете Mac, вы можете использовать Homebrew для установки PostgreSQL. В противном случае, если вы работаете в Linux, вы можете установить его с помощью своего диспетчера пакетов.

Для получения дополнительной информации ознакомьтесь с этим отличным руководством по началу работы с вашей первой базой данных.

Если вы планируете использовать инструмент для просмотра базы данных, я бы рекомендовал утилиту для командной строки — psql . Она поставляется вместе с сервером PostgreSQL. Вот небольшая инструкция, которая пригодится, если вы начнёте её использовать.

Если вам не нравится интерфейс командной строки, вы можете использовать pgAdmin, который является инструментом с открытым исходным кодом и предназначен для администрирования PostgreSQL.

Обратите внимание, что SQL — это сам по себе язык программирования. Мы не будем рассматривать все его функции, только наиболее простые. Если нужно изучить его глубже, то в Интернете есть много отличных онлайн-курсов, которые охватывают все основы PostgreSQL.

Взаимодействие Node.js с базой данных

Во-первых, мы должны создать базу данных, которую мы будем использовать. Для этого введите следующую команду в терминал: createdb node_hero .

Затем мы должны создать таблицу для наших пользователей.

Наконец, мы можем вернуться к программированию. Вот как вы можете взаимодействовать с вашей базой данных через вашу программу на Node.js.

Это был простой пример — «hello world» в PostgreSQL. Обратите внимание, что первым параметром является строка, которая является нашей SQL-командой, второй параметр представляет собой массив значений, которыми мы хотели бы параметризовать наш запрос.

Большой ошибкой с точки зрения безопасности был бы ввод данных, пришедших от пользователя, в том виде, в котором они были переданы. Приведённая выше функция client.query защищает вас от SQL-инъекций, которые являются распространённым видом атаки, когда злоумышленник пытается внедрить в запрос произвольный SQL-код. Всегда учитывайте это при создании любого приложения, в котором возможен ввод данных со стороны пользователя. Чтобы узнать больше, ознакомьтесь с нашим контрольным списком безопасности Node.js-приложений.

Давайте продолжим наш предыдущий пример.

Достижение разблокировано: пользователь сохранён в базе данных! :) Теперь давайте попробуем прочитать эти данные. Затем добавим новый роут для поиска пользователей в наше приложение.

Это было не так сложно, не так ли?

Теперь вы можете запустить любой сложный SQL-запрос, который вы можете найти в вашем Node.js-приложении.

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

Основы работы с базами данных

1.1. Основы работы с базами данных

1.1.1. Базы данных и системы управления базами данных. Модели данных

База данных (БД) – это именованная совокупность структурированных данных, относящихся к определенной предметной области. Система управления базами данных (СУБД) – это комплекс программных средств, предназначенных для создания структуры новой базы данных, наполнения ее содержимым, редактирования содержимого и обработки информации. Информационный объект – это описание некоторой сущности (реального объекта, явления, процесса, события) в виде совокупности логически связанных реквизитов (информационных элементов). Такими сущностями для информационных объектов могут служить: цех или склад предприятия, вуз, студент, процесс сдачи экзаменов и т. д. Например, информационный объект СТУДЕНТ может быть представлен в базе данных с помощью следующих реквизитов: Номер зачетной книжки, Фамилия, Имя, Отчество, Год рождения. Это можно записать так:

СТУДЕНТ (номер_зачетки, фамилия, имя, отчество, год_рождения).

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

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

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

· иерархическое дерево имеет только один корневой узел, не подчиненный никакому другому узлу и находящийся на самом верхнем уровне;

· к каждому узлу базы данных существует только один путь от корневого узла.

Рис. 2.7.1. Пример иерархической структуры БД

Пример, представленный на рисунке 2.7.1, иллюстрирует использование иерархической модели для построения базы данных «Институт». Информация базы данных структурирована в виде деревьев, количество которых равно количеству специальностей в институте. Для рассматриваемого примера иерархическая структура организации данных правомерна, так как каждый студент учится в определенной (только одной) группе, которая относится к определенной (только одной) специальности.

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

Реляционная модель использует организацию данных в виде двумерных таблиц. Каждая реляционная таблица обладает следующими свойствами:

· все столбцы в таблице однородные, т. е. все элементы в одном столбце имеют одинаковый тип (числовой, символьный и т. д.) и максимально допустимый размер;

· каждый столбец имеет уникальное имя;

· одинаковые строки в таблице отсутствуют;

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

Например, реляционной таблицей можно представить информацию о студентах, обучающихся в вузе (рис. 2.7.2).

Рис. 2.7.2. Пример реляционной таблицы

Объектами обработки реляционной БД являются следующие информационные единицы: поле, запись, таблица.

Поле – элементарная единица логической организации данных, которая соответствует одному реквизиту информационного объекта (столбец реляционной таблицы).

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

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

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

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

Первичный ключ реляционной таблицы – это поле или группа полей, которые позволяют однозначно определить каждую строку в таблице. Если первичный ключ состоит из одного поля, то он называется простым ключом (ключевым полем). Если первичный ключ состоит из нескольких полей, то такая таблица базы данных имеет составной ключ. В примере, показанном на рисунке 2.7.2, таблица имеет простой первичный ключ Номер личного дела.

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

Рассмотрим базу данных «Деканат», состоящую из трех таблиц: СТУДЕНТ, СЕССИЯ, СТИПЕНДИЯ, имеющих показанную ниже структуру. На рисунке 2.7.3 показана таблица СТУДЕНТ. В этой таблице ключевым полем является поле Номер личного дела, оно однозначно определяет каждую запись (строку) таблицы, т. к. не существует двух или более одинаковых номеров личного дела.

Рис. 2.7.3. Таблица СТУДЕНТ

Таблица СЕССИЯ (рис. 2.7.4) содержит информацию о результатах сдачи экзаменов студентами. В столбце Результат содержатся числа 0, 1, 2 или 3 в зависимости от того, получает ли студент стипендию по результатам сессии (0 – студент не получает стипендию, 1 – обычная стипендия, 2 – повышенная в 1,5 раза стипендия, 3 – повышенная в 2 раза стипендия). В этой таблице ключевым полем также является поле Номер личного дела.

Рис. 2.7.4. Таблица СЕССИЯ

Таблица СТИПЕНДИЯ (рис. 2.7.5) содержит информацию о проценте начисляемой студенту стипендии в зависимости от результата сдачи сессии. В этой таблице ключевым является поле Результат

Рис. 2.7.5. Таблица СТИПЕНДИЯ

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

Рис. 2.7.6. Пример реляционной базы данных

Таблицы СТУДЕНТ И СЕССИЯ имеют совпадающие первичные ключи (Номер личного дела), что дает возможность легко организовать связь между ними. Таблица СЕССИЯ имеет первичный ключ Номер личного дела и содержит внешний ключ Результат, который обеспечивает ее связь с таблицей СТИПЕНДИЯ.

Различают три типа связей (отношений) между таблицами реляционной базы данных:

1. Отношение «один-к-одному» (1-1). В этом случае для связи используются первичные ключи связываемых таблиц. Например, рассмотренные ранее таблицы СТУДЕНТ и СЕССИЯ находятся в отношении «один-к-одному.

2. Отношение «один-ко-многим» (1-М), в этом случае для связи используется поле, которое является первичным ключом таблицы, находящейся на стороне отношения «один», и являющееся внешним ключом в таблице, находящейся на стороне отношения «многие». Например, рассмотренные ранее таблицы СТИПЕНДИЯ и СЕССИЯ находятся в отношении «один-ко-многим». При этом на стороне «один» находится таблица СТИПЕНДИЯ, а на стороне «многие» – таблица СЕССИЯ. Связь устанавливается по полю Результат.

3. Отношение «много-ко-многим» (М-М). Такая связь всегда реализуется с помощью третьей (связующей) таблицы. Примером может служить таблицы Читатели и Книги (рис. 2.7.7). Связь между ними организуется посредствам таблицы Абонемент.

Рис. 2.7.7. Таблицы, связанные отношением «много-ко-многим»

1.1.3. Основы работы с СУБД Microsoft Access

Microsoft Access – это СУБД, предлагающая широкий диапазон средств для хранения информации и эффективного управления этой информацией. База Данных в Access – это один файл с расширением .mdb, содержащий таблицы, запросы и другие объекты БД. Работа с любыми объектами выполняется в окне База данных (рис. 2.7.8). На левой панели данного окна находятся элементы управления для вызова всех типов объектов.

Рис. 2.7.8. Окно База данных

Основными объектами базы данных Microsoft Access являются реляционные таблицы, структура которых определяется набором полей таблицы (столбцы), а информация хранится в виде записей (строки). Поля таблицы базы данных определяют структуру таблицы и групповые свойства данных, принадлежащих каждому из полей. Ниже перечислены некоторые свойства полей.

· Имя поля определяет, как следует обращаться к данным этого поля при операциях с базой данных. Одна таблица не может иметь двух полей с одинаковыми именами.

· Тип поля определяет тип данных, которые могут содержаться в данном поле.

· Размер поля определяет предельную длину данных, которые могут размещаться в данном поле.

Свойства полей могут различаться в зависимости от типа данных. При работе с Microsoft Access используются следующие типы данных:

· Числовой тип данных для хранения чисел.

· Текстовый тип данных для хранения текста ограниченного размера (до 255 символов).

· Поле МЕМО специальный тип данных для хранения больших объемов текста (досимволов).

· Дата/время тип данных для хранения календарных дат и текущего времени.

· Денежный тип данных для хранения денежных сумм.

· Счетчик специальный тип данных для уникальных (не повторяющихся) увеличивающихся на 1 натуральных чисел, значения которых вводятся в поле автоматически при создании новой записи.

· Логический используется для хранения логических данных. Такие данные могут принимать только два значения: Истина или Ложь (Да или Нет).

· Поле объекта OLE специальный тип данных, предназначенный для хранения графических, аудио — и видеоданных, фрагментов электронных таблиц и т. д.

На рисунке 2.7.9 показан фрагмент таблицы базы данных в режиме просмотра данных.

Рис. 2.7.9. Пример таблицы базы данных в режиме просмотра данных

Создание таблиц начинается с выбора элемента управления Таблицы в окне База данных (рис. 2.7.8). Чтобы создать таблицу вручную, следует использовать значок Создание таблицы в режиме конструктора. Откроется окно Конструктора таблиц (рис. 2.7.10), в котором следует создать структуру таблицы.

Рис. 2.7.10. Вид таблицы в режиме Конструктор

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

Ввод данных в таблицу

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

Создание межтабличных связей

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

Рис. 2.7.11. Связи между таблицами в окне Схема данных

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

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

Таблица 7.1. Примеры записи условий отбора в запросах

Критерий отбора записей

Запись условия отбора

Значение в поле начинается с символа «А», остальные символы могут быть любыми

Илон Маск рекомендует:  Метод предельных упрощений (мпу)
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL