Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MySQL. Библиотека профессионала - Аткинсон Л

..pdf
Скачиваний:
165
Добавлен:
24.05.2014
Размер:
10.41 Mб
Скачать

42Глава 3. Взаимодействие с MySQL

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

Вответ на некоторые инструкции сервер возвращает данные, а клиент форматирует их для отображения на экране.

Утилиты командной строки

В проект MySQL входит много специальных клиентов, а также один клиент общего назначения, называемый mysql. Именно с ним мы познакомимся в данной главе, а рас смотрение остальных клиентов отложим до главы 14, "Утилиты командной строки".

Если программа MySQL инсталлирована правильно, то путь к утилите mysql будет указан в переменной среды PATH. Напомним, что по умолчанию в UNIX утилита будет записана в каталог /usr/local/bin, а в Windows — в каталог с:\mysql\bin.

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

В листинге 3.1 показан сеанс работы с утилитой mysql. Строка приглашения ~> выдается интерпретатором bash.

> mysql test

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 to server version: 3.23.39

Type 'help;' or '\h' for help. Type '\c' to clear the buffer

mysql> create table book ( > title varchar(32), > author varchar(64)

> );

Query OK, 0 rows affected (0.03 sec)

mysql> insert into book values ('Core MySQL', 'Leon Atkinson'); Query OK, 1 row affected (0.07 sec)

mysql> select * from book;

I title

| author

|

I Core MySQL | Leon Atkinson I

1 row in set (0.02 sec)

exit

Bye ~>

Графические клиенты 43

Для подключения к удаленному серверу необходимо указать его адрес с помощью

опции

Альтернативный порт задается опцией

 

имя пользователя —

опцией

пароль — опцией

Значение опции указывается после

знака равенства (листинг

 

 

 

 

~>

 

 

 

 

 

Enter password:

 

 

 

 

Welcome to

the MySQL

monitor. Commands

end with

or

\g.

Your MySQL connection id is 5 to server version: 3.23.36

Type

or

for help. Type

to clear

the

buffer

mysql

 

 

 

 

 

Последним параметром утилиты mysql является имя базы данных. В листинге 3.1 утилита сразу загрузила базу test. Это позволило не вводить команду use.

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

~> mysqladmin root create

Графическиеклиенты

Команда разработчиков MySQL ведет список программного обеспечения, напи санного для MySQL. Его можно найти по адресу www.mysql.com/dffwnloads/contrib.htmL Многие из приложений являются но некоторые вполне под ходят для общего взаимодействия с базами данных.

Уже упоминавшийся чле н команды разработчиков, отвечает за сопровождение программы MySQL GUI. Существуют версии для Linux, Win32, и Solaris, которые можно найти по адресу Намоментнаписания книги программапроходила стадию

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

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

44 Глава 3. Взаимодействие с MySQL

Рис. Программа MySQL GUI в Windows 98

Рис. З.2. Программа MySQL Maker

ODBC 45

ODBC

Драйверы ODBC доступны не только в Windows, но также в Linux и прочих разно видностях UNIX. Конечно, производительность будет выше при работе с утилитами командной строки, использующими "родные" функции MySQL, но многие приложе ния Windows ориентируются на более универсальный интерфейс ODBC.

В некоторые версии пакета Microsoft Office входит программа Microsoft Query, которая позволяет взаимодействовать с любым источником данных ODBC (рис. 3.3). Это не самое удобное средство для ввода запросов, но и оно может оказаться полезным. Драйвер ODBC для программы MySQL доступен по адресу

Рис. 3.3. Программа MS Query

Web интерфейсы

К серверу MySQL можно обращаться и через Существует несколько Web клиентов, среди которых один из (рис. 3.4). Эта программа мне особенно нравится, так как она написана на самом популярном языке созда Клиент phpMyAdmin доступен по адресу

46 Глава 3. Взаимодействие с MySQL

Рис. 3.4. Программа

КОНЦЕПЦИИ БАЗ ДАННЫХ

В этой главе...

История

Терминология

СУБД Системы управления файлами

Иерархические базы данных Сетевые базы данных Реляционные базы данных

Объектно ориентированные базы данных Объектно реляционные базы данных

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

перспективы.

История

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

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

Столкнувшись с задачей координации заказов на миллионы деталей, компания Rockwell в сотрудничестве с IBM в 1968 г. разработала автоматизированную систему заказов. Названная IMS (Information Management System — система управления ин формацией), она заложила основу концепции СУБД.

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

разделение труда привело к резкому скачку производительности.

Еще одним изобретением стал язык (Data Это был специализи рованный язык составления нерегламентированных запросов к базе данных. Его по

50 Глава 4. Концепции баз данных

явление сделало ненужным дорогостоящее программирование на таких языках, как COBOL и FORTRAN, популярных в то время.

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

В1971 г. состоялась конференция по языкам обработки данных (Conference on

Data Systems Languages, в задачу которой входила разработка стандартов баз данных. Ранее эта конференция уже стандартизировала язык COBOL. Новый

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

Всетевой модели любая запись может участвовать в нескольких отношениях пре док/потомок. Это позволяло обходить целый ряд ограничений иерархической моде ли. Разработкой сетевой модели занимался Чарльз (Charles в то время руководитель проекта IDS (Integrated Data System — интегрированная система обработки данных) в компании General Electric. Он же изобрел "диаграммы описывающие сетевые базы данных. За свой труд в 1973 г. Бейчман получил на граду Тьюринга.

Тем временем научный сотрудник компании IBM доктор Эдгар Кодд (Edgar работал над эпохальным документом для Ассоциации производителей вычислитель ной техники (Association for Computing Machinery, ACM). В июне 1970 г. этот доку

мент был опубликован в названием "Реляционная модель для больших банков совместно используемых данных" ("A Relational Model of Data for Large Shared Data Banks"). Этот документ в корне изменил теорию баз данных и принес доктору

награду Тьюринга в 1981 году.

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

Врезультате появились две СУБД: System R компании IBM и Ingres Калифорний ского университета в Беркли. В обеих был реализован реляционный модуль и язык запросов. Последний в СУБД System R первоначально назывался SEQUEL (Structured English Query структурированный английский язык запросов). Позднее

появилось название SQL (Structured Query Language). В организация ANSI опубликовала официальный стандарт языка SQL.

Терминология

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

Такова логическая модель данных. На жестком диске вся база данныхможет нахо диться в одном файле. В MySQL для каждой базы данных создается отдельный ката

СУБД

51

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

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

Отношение "один ко многим" означает ситуацию, когда строка одной таблицы со ответствует нескольким строкам другой таблицы. Это наиболее распространенный тип отношений. На диаграммах он выражается записью 1:N.

Наконец, при отношении "многие ко многим" строки первой таблицы могут быть связаны с произвольным числом строк во второй таблице. Такое отношение записы вается как N:M.

СУБД

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

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

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

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

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

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

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

менять и выполнять повторно.