Тарифы Услуги Сим-карты

Создание базы данных. Как создать базу данных на хостинге

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

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

Местоположение БД определяет так называемую архитектуру базы данных. Имеются четыре разновидности архитектур баз данных:

Локальные базы данных;

Архитектура "файл-сервер";

Архитектура "клиент-сервер";

Многозвенная архитектура.

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

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

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

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

Не оптимально расходуются ресурсы клиентского компьютера и сети; например, если в результате запроса мы должны получить 2 записи из таблицы объемом 10000 записей, все 10000 записей будут скопированы с файл-сервера на клиентский компьютер; в результате возрастает сетевой трафик и увеличиваются требования к аппаратным мощностям пользовательского компьютера.
В базе данных на файл-сервере гораздо проще вносить изменения в отдельные таблицы, минуя приложения, непосредственно из инструментальных средств (например, из утилиты database desktop фирмы borland для файлов paradox или dbase); подобная возможность облегчается тем обстоятельством, что, фактически, у локальных СУБД база данных – понятие более логическое, чем физическое, поскольку под базой данных понимается набор отдельных таблиц, сосуществующих в едином каталоге на диске. Все это позволяет говорить о низком уровне безопасности – как с точки зрения хищения и нанесения вреда, так и с точки зрения внесения ошибочных изменений.

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

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

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

Так как клиентскому приложению посылается результат выполнения запроса, по сети "путешествуют" только те данные, которые необходимы клиенту. В итоге снижается нагрузка на сеть. Поскольку выполнение запроса происходит там же, где хранятся данные (на сервере), нет необходимости в пересылке больших пакетов данных. Кроме того, sql-сервер, если это возможно, оптимизирует полученный запрос таким образом, чтобы он был выполнен в минимальное время с наименьшими накладными расходами. Всё это повышает быстродействие системы и снижает время ожидания результата запроса.

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

Функциями приложения-клиента являются:

Посылка к серверу запросов;

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

Реализация интерфейса пользователя.

sql-сервер должен быть загружен на момент принятия запроса клиента. Функциями сервера БД являются:

Прием запросов от приложений-клиентов, интерпретация запросов, выполнение запросов в БД, отправка результата выполнения запроса приложению-клиенту;

Управление целостностью БД, обеспечение системы безопасности, блокировка неверных действий приложений-клиентов;

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

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

В архитектуре "клиент-сервер" используются так называемые "удаленные" (или "промышленные") СУБД. Промышленными они называются из-за того, что именно СУБД этого класса могут обеспечить работу информационных систем масштаба среднего и крупного предприятия, организации, банка. Локальные СУБД предназначены для однопользовательской работы или для обеспечения работы информационных систем, рассчитанных на небольшие группы пользователей.
К разряду промышленных СУБД принадлежат oracle, informix, sybase, ms sql server, db2, interbase и ряд других.

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

Механизмы доступа

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

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

В последнее время windows-версии клиентского программного обеспечения наиболее популярных серверных СУБД, в частности microsoft sql server, oracle, informix, содержат также СОМ-серверы, предоставляющие объекты для доступа к данным и метаданным.
Использование клиентского api (или клиентских СОМ-объектов) является наиболее очевидным способом манипуляции данными в приложении. Однако в этом случае созданное приложение сможет использовать данные только СУБД этого производителя, и замена ее на другую повлечет за собой переписывание значительной части кода клиентского приложения – клиентские api и объектные модели не подчиняются никаким стандартам и различны для различных СУБД.

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

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

open database connectivity (odbc). ole db. activex data objects (ado). borland database engine (bde).

Универсальные механизмы odbc, ole db и ado фирмы microsoft представляют собой по существу промышленные стандарты. Что касается механизма доступа к данным bde фирмы borland, то он так и не стал промышленным стандартом, однако до недавнего времени применялся довольно широко, поскольку до выхода delphi 5 был практически единственным универмальным механизмом доступа к данным, поддерживаемым средствами разработки borland на уровне компонентов и классов

Что такое sql?

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

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

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

Наиболее существенным свойством sql является возможность доступа к реляционным БД. Многие даже считают, что выражения "БД, обрабатываемая средствами sql" и "реляционная БД" — синонимы. В стандарте sql-92 даже нет термина отношение (relation).
Предположим, что имеется база данных, управляемая с помощью какой-либо СУБД. Для извлечения из нее данных используется запрос, сформулированный на языке sql. СУБД обрабатывает этот запрос, извлекает запрашмваемые данные и возвращает их.

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

MySQL - Система Управления Базами Данных (СУБД). Основное отличие от всех остальных СУБД это то, что она является бесплатной. В силу того, что MySQL бесплатна, она…

Проектирование системы управления базами данных в Delphi.

Что нужно освоить:

1) каким образом подключать базу данных к компонентам Delphi;

2) порядок создания приложения для управления простейшей локальной базой данных;

3) как управлять отображением таблиц баз данных;

4) как организовать сортировку и фильтрацию данных;

5) как использовать язык запросов SQL.

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

ШАГ 1. СОЗДАЕМ ПРОСТЕЙШУЮ БАЗУ ДАННЫХ

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

В данном пособии будут рассмотрены возможности доступа к базам данных посредством только одной технологии – ADO (Active Data Objects), разработанной Microsoft. Это современная библиотека, прежде всего, позволяет работать с локальными базами MS Access и клиент-серверными MS SQL Server. Изучение этой библиотеки позволит вам в дальнейшем без затруднений перейти к базам данных, построенным на основе иных технологий.

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

Запустите Microsoft Office Access. В меню нажмите Файл/Создать и далее в мастере выберите Новая база данных. Вам будет предложено выбрать место хранения базы и имя файла. Укажите путь к вашему первому будущему приложению (где в дальнейшем будете сохранять проект Delphi) и осмысленное имя для базы данных магазина компьютерной литературы, например, mkl.mdb.

Откроется окно организации работы с базой данных (см. рис.).

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

Пример описания полей таблицы смотрите на рисунке ниже. Пусть в таблице будет шесть полей. В Access именам полей можно давать наименование, как на английском, так и на русском языках. Наименование полей №№2-5 очевидно, так же как и тип данных этих полей. Разберем поле №1. Наименование поля: id_kn – идентификатор книги. Это поле имеет для базы особое значение – это поле ключевое в таблице, оно несет неповторимый идентификатор записи. Установить опцию «Ключевое поле» можно через контекстное меню, возникающее при нажатии правой клавишей мыши на соответствующем поле в конструкторе таблицы. Сохраните таблицу, нажав на клавишу сохранения, вам будет предложено выбрать имя для таблицы – установите имя магазин.


Через меню Вид установите просмотр в Режим таблицы:

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

ШАГ 2. СОЗДАЕМ ПРОСТЕЙШЕЕ ПРИЛОЖЕНИЕ ДЛЯ УПРАВЛЕНИЯ БАЗОЙ ДАННЫХ

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

Итак, запустите Delphi, создайте новое приложение и сохраните проект в папку, где находится файл базы данных. Пусть имя модуля будет magazin.pas, а имя проекта ProjectMagazin.dpr.

Теперь давайте определимся, какие компоненты с палитры необходимы для работы с базой данных. База данных состоит из таблиц, для просмотра которых необходим соответствующий визуальный компонент – DBGrid с вкладки Data Controls. Кроме того должны быть еще компоненты, которые обеспечивают связь приложения с местом расположения базы данных, распознают ее формат, делают выборку из определенной таблицы базы данных. Для этих целей используем следующие три компонента: ADOConnection и ADOTable с вкладки ADO и DataSource с вкладки Data Access.

Настроим свойства всех компонентов на форме.

1. ADOConnection1. Дважды кликните по компоненту (или в инспекторе объектов по строке свойства ConnectionString) – вам представится возможность ввести строку подключения (Use Connection String), запустите мастер нажатием клавиши Build и на вкладке «Поставщик данных» выберите драйвер подключения к базам данных Microsoft Jet OLE DB Provider. Нажмите «Далее» для перехода на вкладку «Подключение» и там, в строке «Выберите или введите имя базы данных», наберите имя файла – в нашем случае это mkl.mdb. Можно, конечно, нажать на клавишу рядом со строкой и непосредственно указать на файл, но, в этом случае, лучше сразу убрать путь к файлу, оставив только имя, чтобы при переносе приложения в другое место не возникло проблем с доступом к базе данных. Нажмите OK в мастере и OK на форме выбора строки подключения. Свойство LoginPromt переключите в False, чтобы каждый раз при подключении к базе данных к пользователю не было запроса о пароле.

2. ADOTable1. В свойстве Connection в выпадающем списке укажите на ADOConnection1, в свойстве TableName выберите таблицу (у нас она пока одна магазин). Свойство Active переведите в положение True (обратите внимание, что в дальнейшем при смене настроек вам часто придется это свойство возвращать в положение True). И, для удобства, переименуйте компонент в TableMagazin.

3. DataSource1. У этого компонента-посредника необходимо свойство DataSet установить в выпадающем списке на таблицу TableMagazin.

4. DBGrid1. Свяжем сетку с DBGrid1 с таблицей магазин из базы данных посредством DataSource1, установив в инспекторе объектов для свойства DataSource в выпадающем списке доступных компонентов DataSource1.

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

Запустите приложение клавишей F9 и поработайте над наполнением базы данных (клавиши управления: F2 – редактировать ячейку, Ins – добавить запись, Ctrl+Del – удалить запись). Закройте приложение и затем снова запустите – и вы убедитесь, что внесенные вами изменения сохранены.

Пример заполнения базы данных:

Не все предпочитают работать клавиатурой, если есть мышь. Поэтому иногда полезным может оказаться компонент DBNavigator с вкладки Data Controls. Разместите его для пробы (в дальнейшем его следует удалить) на форме по своему усмотрению и подсоедините используя посредник DataSource1 – укажите на него в свойстве DataSource. По необходимости можно некоторые клавиши из панели управления базой данных отключить в свойстве VisibleButtons. И, хотя кнопки управления интуитивно понятны, имеется возможность снабдить их всплывающими подсказками, для чего установите свойство ShowHint в True, а текст подсказок можно установить/изменить в свойстве Hints. Возможный вид приложения после подключения компонента DBNavigator смотри на рисунке:

Для этого понадобится установленная система управления базами данных (СУБД) DB2. Мы будем использовать диалект языка SQL, который используется именно в этой СУБД.

Первая команда, которую мы будем применять для создании базы данных - это команда CREATE DATABASE. Её синтаксис следующий:

CREATE TABLE ИМЯ_ТАБЛИЦЫ (имя_первого_столбца тип данных, ..., имя_последнего_столбца тип данных, первичный ключ, ограничения (не обязательно))

Так как наша база данных моделирует сеть аптек, то в ней есть такие сущности, как "Аптека" (таблица Pharmacy в нашем примере создания базы данных), "Препарат" (таблица Preparation в нашем примере создания базы данных), "Доступность (препаратов в аптеке)" (таблица Availability в нашем примере создания базы данных), "Клиент" (таблица Client в нашем примере создания базы данных) и другие, которые здесь подробно и разберём.

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

Для увеличения рисунка можно нажать на него левой кнопкой мыши.

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

Теперь приступим к созданию команд. Первая наша команда SQL создаёт базу данных PHARMNETWORK:

Код SQL

CREATE DATABASE PHARMNETWORK

Описание таблицы PHARMACY (Аптека):

Пишем команду, которая создаёт таблицу PHARMACY (Аптека), значения первичного ключа PH_ID генерируются автоматически от 1 с шагом 1, вносится проверка на то, чтобы значения атрибута Address в этой таблице были уникальными:

Код SQL

CREATE TABLE PHARMACY(PH_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), Address varchar(40) NOT NULL, PRIMARY KEY(PH_ID), CONSTRAINT PH_UNIQ UNIQUE(Address))

Описание таблицы GROUP (Группа препаратов):

Пишем команду, которая создаёт таблицу Group (Группа препаратов), значения первичного ключа GR_ID генерируются автоматически от 1 с шагом 1, проводится проверка уникальности наименования группы (для этого используется ключевое слово CONSTRAINT):

Код SQL

CREATE TABLE GROUP(GR_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), Name varchar(40) NOT NULL, PRIMARY KEY(GR_ID), CONSTRAINT GR_UNIQ UNIQUE(Name))

Описание таблицы PREPARATION (Препарат):

Команда, которая создаёт таблицу PREPARATION, значения первичного ключа PR_ID генерируются автоматически от 1 с шагом 1, определяется, что значения внешнего ключа GR_ID (Группа препаратов) не могут принимать значение NULL, определена проверка уникальности значений атрибута Name:

Код SQL

CREATE TABLE PREPARATION(PR_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), Name varchar(40) NOT NULL, GR_ID int NOT NULL, PRIMARY KEY(PR_ID), constraint PR_UNIQ UNIQUE(Name))

Далее нам требуется позаботиться об ограничениях целостности. Это очень удобно слелать с помощью команды alter table. Эта команда изучается на уроке SQL ALTER TABLE - изменение таблицы базы данных.

Теперь самое время создать таблицу AVAILABILITY (Доступность или Наличие препарата в аптеке). Её описание:

Пишем команду, которая создаёт таблицу AVAILABILITY. Определяются даты начала (не может быть NULL) и окончания (по умолчанию NULL).

Код SQL

CREATE TABLE AVAILABILITY(A_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), PH_ID INT NOT NULL, PR_ID INT NOT NULL, DateStart varchar(20) NOT NULL, DateEnd varchar(20) DEFAULT NULL, QUANTITY INT NOT NULL, MART varchar(3) DEFAULT NULL, PRIMARY KEY(A_ID), CONSTRAINT AVA_UNIQ UNIQUE(PH_ID, PR_ID))

Создаём таблицу DEFICIT (Дефицит препарата в аптеке, то есть, неудовлетворённый запрос). Её описание:

Пишем команду, которая создаёт таблицу DEFICIT:

Код SQL

CREATE TABLE DEFICIT(D_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), PH_ID INT NOT NULL, PR_ID INT NOT NULL, Solution varchar(40) NOT NULL, DateStart varchar(20) NOT NULL, DateEnd varchar(20) DEFAULT NULL)

Осталось немного. Мы уже дошли до команды, которая создаёт таблицу Employee (Сотрудник). Её описание:

Пишем команду, которая создаёт таблицу Employee (Сотрудник), с первичным ключом, генерируемым по тем же правилам, что и первичные ключи предыдущих таблиц, в которых они существуют. Внешним ключом PH_ID Сотрудник связан с PHARMACY (Аптекой).:

Код SQL

CREATE TABLE EMPLOYEE(E_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), F_Name varchar(40) NOT NULL, L_Name varchar(40) NOT NULL, POST varchar(40) NOT NULL, PH_ID INT NOT NULL, PRIMARY KEY(E_ID))

Очередь дошла до создании таблицы CLIENT (Клиент). Её описание:

Пишем команду, создающую таблицу CLIENT (Клиент), в отношении первичного ключа которого справедливо предыдущее описание. Особенность этой таблицы в том, что её атрибуты F_Name и L_Name имеют по умолчанию значение NULL. Это связано с тем, что клиенты могут быть как зарегистрированными, так и незарегистрированными. У последних значения имени и фамилии как раз и будут неопределёнными (то есть NULL):

Код SQL

CREATE TABLE CLIENT(C_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), FName varchar(40) DEFAULT NULL, LName varchar(40) DEFAULT NULL, DateReg varchar(20), PRIMARY KEY(C_ID))

Предпоследняя таблица в нашей базе данных - таблица BASKET (Корзина покупок). Её описание:

Пишем команду, создающую таблицу BASKET (Корзина покупок), так же с уникальным и инкрементируемым первичным ключом и связанную внешним ключами C_ID и E_ID с Клиентом и Сотрудником соответственно:

Код SQL

CREATE TABLE BASKET(BS_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), C_ID INT NOT NULL, E_ID INT NOT NULL, PRIMARY KEY(BS_ID))

И, наконец, последняя таблица в нашей базе данных - таблица BUYING (покупка). Её описание:

Имя поля Тип данных Описание
B_ID smallint Идентификационный номер покупки
PH_ID smallint Идентификационный номер аптеки
PR_ID smallint Идентификационный номер препарата
BS_ID varchar(40) Идентификационный номер корзины покупок
Price varchar(20) Цена
Date varchar(20) Дата

Пишем команду, создающую таблицу BUYING (покупка), так же с уникальным и инкрементируемым первичным ключом и связанную внешними ключами BS_ID, PH_ID, PR_ID с Корзиной покупок, Аптекой и Препаратом соответственно:

Код SQL

CREATE TABLE BUYING(B_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), BS_ID INT NOT NULL, PH_ID INT NOT NULL, PR_ID INT NOT NULL, DateB varchar(20) NOT NULL, Price Double NOT NULL, PRIMARY KEY(B_ID))

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

Что такое создание базы данных? Различают два настольную и клиент-серверную. Для создания настольных вам необходима такая программа, как Access. Вы сможете без труда её найти в любом офисном пакете. Сейчас Access выпускает фирма Infra-Office, Microsoft и многие другие создатели офисных пакетов. Что касается клиент-серверной модели, то простенькую модель можно реализовать силами «учебной» программы Delphi. Серьезные базы данных сегодня пишутся на Oracle и Visual Fox Pro. Данные программные платформы оснащены графическим инструментарием для создания обрабатываемых запросов к базам в 500 000 и 1 000 000 или в десятки миллионов строк.

Рассмотрим наиболее перспективную платформу для программирования прошлых лет Delphi 6.0. Оговоримся сразу, что создание в Delphi - это не просто получение файлов *.db или *bdb, а инсталляция ее на персональный компьютер, настройка и автоматизация. Итак, в Delphi 6.0 создаются файлы базы данных в подпрограмме, размещенной в главном меню среды разработки, Date Base Desktop 6.0.

Здесь вы найдете все необходимые инструменты для создания файлов базы данных, назначения ее типа и предварительного заполнения. Отметим, что вам доступно будет создание и оперирование только теми файлами, для которых на платформе установлен драйвер. Так например, для работы с типом Visual Fox Pro 9.0 необходимо доустанавливать в операционную систему внешний драйвер.

Что касается работы программы с базой данных, созданной на Delphi 6.0, без сосуществования ее с самой платформой, то данная проблема решается путем установки и настройки программного пакета Data Base Engine 6.0 (BDE).

Так, если вы твёрдо решили работать с типом файлов Paradox, то, написав программу в определенной папке на жестком диске, вам необходимо впоследствии прописывать настройки в пакете Data Base Engine 6.0, в которые входят пути к файлам, их свойства и название базы данных. Такая схема работает при перемещении создаваемых вами программ на другой компьютер.

Пакет Engine 6.0 обязательно должен быть установлен на компьютере, куда вы инсталлируете созданный на Delphi 6.0 машинный код.

Создание базы данных на Delphi 6.0 достаточно автоматизировано. Элементарная программка для хранения данных с одним файлом базы получается путем нескольких нажатий клавиш. Здесь основная сложность заключается в реализации реляционных форм базы данных. Так СДНФ 3 может реализоваться путем настроек двух таблиц DBGRID. А получение различных видов отчетов в QReport - это целая история, которую не хочется даже затрагивать. Скажем лишь, что лучше код созданной программы не выбрасывать в корзину, так как каждый пользовательский отчет для людей, не знающих SQL, придётся программировать заново…


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

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

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

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

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

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

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

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

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

После удачной установки Денвера (когда Вы увидели надпись «Ура, заработало!») начнем работу с администраторской страницей MySQL.

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


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

Создание базы данных MySQL

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


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

Здесь Вам будет предложено создать таблицу. Давайте создадим таблицу базы данных. Для этого заполните поля «Имя» и «Количество столбцов» и нажмите Ок.


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

Немного о типах данных.

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

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

Varchar - тип данных, который может хранить отдельный символ или строку (длиной до 8000 символов). Для таких полей как имя, фамилия, адрес электронной почты он вполне даже подойдет. Еще ему можно задавать длину. В моем примере я задала длину 100, так как все поля в моем примере с этим типом данных не займут более 100 символов.

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


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

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

Для этого кликните по верхней вкладке «Вставить» и перед Вами откроется страница для вставки нового элемента в таблицу базы. Заполните все поля (кроме поля id, оно будет заполняться автоматически) и нажмите на кнопку ОК.


После того как Вы нажмете Ок, перейдите на вкладку «Обзор» (она находится вверху) и Вы увидите новый добавленный Вами элемент в Вашу таблицу базы данных MySQL.


На этой же страничке Вы можете удалить или изменить добавленный элемент из таблицы базы данных.

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

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


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


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

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

Наконец, чтобы удалить базу данных нужно снова перейти на вкладку «Базы данных», выбрать базу для удаления и нажать на ссылочку удалить.


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

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

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

До встречи в следующем Уроке! Удачи!