ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ СРЕДСТВАМИ ОНЛАЙН СЕРВИСОВ Макаров И.Б., mak-igor@mail.com Нижнетагильская государственная социально-педагогическая академия Нижний Тагил, Россия THE DESIGN OF RELATIONAL DATABASES BY THE MEANS OF ONLINE SERVISES Makarov I.B., mak-igor@mail.ru Nizhny Tagil State Socio-Pedagogical Academy Nizhny Tagil, Russia В настоящее время с развитием скоростного интернет-соединения, все большую популярность приобретают онлайн сервисы, предназначенные для решения различных прикладных задач: математические расчеты, рисование, моделирование, проектирование и др. Преимущество использования данных сервисов состоит, во-первых, в том, что большинство из них бесплатны для использования, во-вторых, в интуитивно понятном интерфейсе. Среди онлайн сервисов, позволяющих проектировать реляционные базы данных можно выделить dbdsgnr, www sql designer и др. Данные программы позволяют визуально создавать схемы баз данных и генерировать sql код. В данной статье для работы мы выбрали среду www sql designer. Панель инструментов среды приведена на рис. 1. Рис. 1. Панель инструментов среды www sql designer Сервис www sql designer поддерживает несколько СУБД, включая популярные на сегодня mysql, sqllite, oracle и др. СУБД, в которой в последствии будет реализована база данных выбирается в меню Options (рис. 2). Рис. 2. Настройка опций Приведем пример проектирования базы данных «Транспортные перевозки», которая состоит из трех таблиц и имеет следующую структуру: Транспорт (государственный номер, марка автомобиля, расход топлива) Заявки – (код заявки, дата заявки, название груза, количество груза, пункт отправления, пункт назначения). Доставка – (№ п/п, дата и время отправления, дата и время прибытия, код заявки, государственный номер автомобиля, пройденное расстояние). Создадим таблицы, кликнув на кнопке «Add table» и введем соответствующие имена. При добавлении нового поля в таблицы следует ввести его имя и выбрать необходимый тип данных. В www sql designer для наглядности каждый тип данных имеет свой цвет. Так числовые типы данных (int, tiny int и др.) выделяются желтым цветом, строковые типы данных (char, var char и др.) выделяются красным цветом, дата/время выделяются зеленым цветом (рис. 3). Рис. 3. Выделение разных типов данных разным цветом После заполнения полей таблицы, следует установить связи между таблицами. Для этого с помощью кнопки «Create foreign key» нужно создать внешние ключи таблицы и соединить их при помощи команды «Connect foreign key». В итоге у на получилась следующая схема базы данных (рис. 4). Рис. 4. Итоговая схема базы данных Для полученной базы данных сгенерируем sql код, например для СУБД My SQL. Для этого нажмем на кнопку «Save/Load» (рис. 5) и выберем команду «Generate SQL» (в скобках указано для какой именно СУБД мы генерируем базу данных). Рис. 5. Генерирование sql кода Мы получили следующий код (листинг 1). Листинг 1. SQL код базы данных «Транспортные перевозки» -- ---- Table 'Транспорт' -- DROP TABLE IF EXISTS `Транспорт`; CREATE TABLE `Транспорт` ( `гос_номер` TINYINT NULL DEFAULT NULL, `марка_авто` VARCHAR NULL DEFAULT NULL, `расход_топлива` DECIMAL NULL DEFAULT NULL, PRIMARY KEY (`гос_номер`) ); -- ---- Table 'Доставка' -DROP TABLE IF EXISTS `Доставка`; CREATE TABLE `Доставка` ( `Номер` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `Дата_время_отправления` DATETIME NULL DEFAULT NULL, `Дата_время_прибытия` DATETIME NULL DEFAULT NULL, `код_заявки` TINYINT NULL DEFAULT NULL, `гос_номер_авто` TINYINT NULL DEFAULT NULL, `пункт_назначения` VARCHAR NULL DEFAULT NULL, PRIMARY KEY (`Номер`), KEY (`гос_номер_авто`) ); -- ---- Table 'Заявки' -DROP TABLE IF EXISTS `Заявки`; CREATE TABLE `Заявки` ( `код_заявки` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `дата_заявки` DATE NULL DEFAULT NULL, `название_груза` VARCHAR NULL DEFAULT NULL, `пункт_отправления` VARCHAR NULL DEFAULT NULL, `пункт_назначения` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`код_заявки`) ); -- ---- Foreign Keys -- --ALTER TABLE `Доставка` ADD FOREIGN KEY (код_заявки) REFERENCES `Заявки` (`код_заявки`); ALTER TABLE `Доставка` ADD FOREIGN KEY (гос_номер_авто) REFERENCES `Транспорт` (`гос_номер`);