В этой статье рассмотрим как создается веб-оболочка базы данных SQL Server на примере нашей платформы Falcon Space и посмотрим основные отличия от классической разработки системы по полному стеку технологий.
Это не оболочка базы данных для управления СУБД SQL Server. Это система личных кабинетов для учета информации, хранящейся в SQL Server. Все управление системой осуществляет настройка SQL (по сути, это SQL фреймворк). Если вы знаете SQL, то вы сможете сопровождать подобную систему.
Разработка учетной системы на полном стеке (fullstack)
Самописные системы разрабатываются на базе полного стека разработки с N слоями:
- проектируется база данных
- создается слой доступа к данным
- создается слой бизнес-логики
- разрабатывается API или слой контроллеров
- делается верстка
- к ней подключается динамика за счет front end программирования.
Это довольно трудоемко, сложно. Зачем тогда использовать это, если есть коробочные решения?
Как просто создать базу данных в программе Runa
Коробочные решения не дают гибкости, а для дальнейшего развития системы очень важно иметь возможность легко развивать систему без серьезных ограничений.
Fullstack разработка — это долго, дорого и много ошибок
Когда-то давно мы создали модуль метрик, который генерировал некие отчеты в виде вложенных показателей. Каждый отчет — это данные в таблицах + некая хранимая процедура для извлечения данных.
Движок модуля подхватывал эти данные и хранимку и выводил все, что нужно пользователю.
Если вас заинтересовала возможность разработки на MS SQL у нас открыта вакансия для SQL программистов.
SQL настройка для полного управления — новая парадигма. SQL фреймворк
Это привело нас к идее, а почему бы и другие все модули не попробовать сделать по подобному принципу — формы, таблицы, графики, дашборды и прочее.
Что дает в итоге такой подход:
- можно менять бизнес-логику на лету (просто поменяв хранимую процедуру). В случае обычного N-слойного приложения необходима перекомпиляция и обновление программы.
- скорость внесения изменений. Очень важно иметь возможность быстро вносить изменения, а не ждать разработчиков по 2 недели, когда они внедрят изменения в систему.
- основная сложность ложится на один слой и локация ошибки с высокой степенью вероятности находится только в одном слое — SQL процедурах. Это упрощает поиск ошибок и минимизирует количество сбоев на front end.
Как это выглядит изнутри
Возьмем к примеру вывод таблицы.
На входе — это сниппет.
Ваш JS движок обрабатывает подобные компоненты и запрашивает у базы описание по компонентам и данные для них (все через значимые процедуры).
Полученные данные JS движок выводит в виде таблицы.
Данные удовлетворяют неким правилам/стандартам. Например, для таблиц у нас правила примерно выглядят так:
процедура GetItems выдает в SELECT 1 данные таблицы, в SELECT 2 — данные о пагинации, в SELECT 3 — настройки вывода таблицы.
Создать базу данных просто, программа My Visual DataBase
К примеру, если в SELECT 3 передать select 1 Compact — то таблица будет выведена в компактном режиме.
Редактирование SQL для таблицы вывода страниц
Так выглядит таблица в компактном режиме
Если необходимо реализовать какие-то действия с данными таблицы, то это также вызов некой хранимой процедуры с заданными параметрами и заданным выводом.
Процедуры делятся на системные (обслуживают компоненты и внутренние потребности системы) и пользовательские (задают вывод данных).
Редактирование процедур происходит через интерфейс панели управления, т.е. нет необходимости искать каждый раз хранимую процедуру в SQL Server Management Studio.
Идея Falcon Space — Сниппеты в разметке+ управление бизнес-логикой через SQL + гибкие компоненты ядра
Управление через SQL: плюсы и минусы
Какие дополнительные плюсы дает интерфейс для SQL Server?
1. Быстродействие. Вы работаете с чистым SQL без лишних прослоек в виде ORM. Это дает хорошее быстродействие, и оно ограничивается, по сути, быстродействием вашего написанного SQL запроса.
2. Созданный функционал — это веб-оболочка SQL и данные в таблицах (что также можно представить в виде SQL скрипта). Вы можете легко переносить между разными системами SQL для отдельных компонентов. Это возможность быстро наращивать кодовую базу и адаптировать ее в других подобных приложениях.
3. Не нужна компиляция. Поменяли процедуру — получили сразу в системе другой результат. По сути разработка идет в realtime, параллельно с использованием.
4. Локализация ошибок — большинство ошибок лежат в вашем SQL, а не разбросаны по всему стеку. Есть проблема? Проверяем работы процедуры в SQL Management Studio и анализируем вход и выход.
5. Поняв общий подход, систему можно развивать, добавляя новые блоки и модули без необходимости менять исходный код программы.
6. Уменьшение требуемых компетенций для поддержки системы. В нашем случае мы сводим все к двум компетенциям — знание SQL для бизнес-логики и Bootstrap для стилизации и вывода данных.
7. Уменьшение количества велосипедов. Программисты не могут больше делать в системе три вида по-разному сделанных таблиц. Все унифицируется и разработка идет быстрее.
Конечно, не все так просто, и есть свои сложности. Например, некоторые функции не так просто реализовать в SQL (вычисление хеша для кириллицы) или передача вызова из хранимой процедуры в код веб-приложения. Где-то приходится идти на компромиссы (например, есть ограничения верстки отдельных элементов).
Однако, в целом такой подход позволяет решать ключевые задачи — быстро создавать необходимый функционал, иметь гибкие возможности по дальнейшему развитию и снижать стоимость сопровождения системы.
Почему Falcon Space — это SQL фреймворк
Все управляющие конструкции в системе задаются через процедуры SQL. Разработчик не выводит таблицу — он задает нужные параметры через хранимые процедуры (выходные SELECT в нужном формате), а фреймворк обрабатывает его данные и выводит в виде таблицы.
Фреймворк Falcon Space определяет формат множества различных типовых ответов от процедур. Задача программиста — просто верно выдать отклик от процедур.
Более подробное описание как изнутри работает система можно найти в вводной статье документации Falcon Space.
В статье На пути к созданию продукта. История создания Falcon Space можно более глубоко погрузиться в предпосылки создания системы и ее особенности.
P.S. Мы реализовали несколько типовых решений на базе нашей платформы. Вы можете посмотреть их демо здесь — demo.web-automation.ru
Источник: falconspace.ru
Быстрый старт: Визуальное проектирование базы данных в MySQL Workbench
Цель данного поста — помочь начинающему разработчику быстро освоится и спроектировать простенькую базу с помощью инструмента для визуального проектирования баз данных MySQL Workbench от компании Oracle и получить её ER-модель и SQL-дамп.
Ну что же, меньше слов да больше смысла! Внешний вид окна программы, раздел «Моделирование данных» выглядит так:
Для того, чтобы открыть существующую модель надо нажать на ссылку: Open Existing EER Model, для создания новой модели – выбрать параметр: Create New EER Model, чтобы создать модель «сущность-связь» из существующей базы данных – нажать на параметр: Create EER Model From Existing Database, а для создания EER модели из SQL скрипта нужно выбрать: Create EER Model From SQL Script.
Для создания новой модели, воспользуемся ссылкой Create New EER Model, после нажатия на неё отобразится окно с параметрами:
Для начала необходимо создать таблицы, для этого нажмём на кнопку Add Table, появится следующая форма:
Сначала создадим таблицу users, которая будет хранить данные о пользователях информационной системы, в поле table Name впишем имя таблицы, в разделе формы Columns создадим поля таблицы:
— Первое поле id будет содержать уникальный номер пользователя, зададим ему свойства: Auto Increment, Not Null, Primary key и Unique, в разделе Data type выберем целочисленный тип integer.
— Второе поле fio, где будет хранится Ф.И.О. пользователя, установим полю свойства: Not Null, Primary key,, в разделе Data type выберем строковый тип VARCHAR и зададим количество символов в 255.
— Третье поле login, будет содержать логин пользователя, оно должно быть уникальным, как и поле id, поэтому установим ему свойство Unique и зададим количество символов в 255.
— Следующие поля: password содержащее пароль, e_mail содержащее адрес электронной почты и поле type содержащее тип пользователя будут без особых свойств, со строковым типом VARCHAR длинной в 255 символов, за исключением последнего поля type которому хватит с 45 символов.
После проделанных манипуляций форма с именем таблицы users будет выглядеть так:
На диаграмме появится таблица users c полями и индексами:
Аналогичным способом создадим таблицу settings с настройками доступа к базе данных ИС, содержащую поля id, host для указания имени хоста (адреса сервера), db – имени базы данных, user и password с именем пользователя и паролем, для установки ИС на удалённый сервер.
Далее по уже известному методу создадим таблицу shops которая будет хранить данные о магазинах в полях: id типа integer – ключевое, ненулевое, уникальное с автоинкрементом, поле name хранящее название магазина, поле address – его физический адрес, поле tel – телефон магазина, site – интернет сайт магазина и поле email с электронным адресом магазина.
Затем создадим таблицу products хранящую данные о продукции магазина в полях: id типа integer – ключевое, ненулевое, уникальное с автоинкрементом, поле name хранящее название магазина, ключевое, ненулевое поле целочисленного типа shop_id хранящее номер магазина, поле type_id с информацией о номере товара из таблицы видов продукции. Поле brand – брэнд изготовителя длинной в 255 символов, поле model – с моделью товара, поле data – с данными и характеристиками товара типа Tinytext, поле img с полным адресом до изображения товара длинной в 255 символов, и поля price с ценой товара и warranty с информацией о сроках гарантии на товар длинной в 45 символов.
Созданные нами таблицы settings, shops и products выглядят следующим образом:
Далее нам понадобится таблица хранящая тип продуктов product_type, она состоит из уникального, ненулевого, ключевого поля id с автоинкрементом целочисленного типа, и уникального поля name длинной в 255 символов, которое содержит название вида продуктов.
Вид таблицы таков:
Последние две таблицы это orders и deliveries, первая содержит информацию о заказах клиентов, а последняя данные о доставке продукции.
Поля таблицы orders: id ключевое, ненулевое, уникальное поле целочисленного типа с автоинкрементом, поле shop_id содержащее номер магазина – ключевое, ненулевое целочисленного типа, поле product_id хранящее номер продукта – ключевое, ненулевое целочисленного типа, поле fio с номером пользователя совершившего заказ — ключевое, ненулевое целочисленного типа, поле date c датой заказа – типа DATE, поле quantity с количеством заказанных товаров – целочисленного типа, поле tel с номером телефона заказчика – строкового типа длинной в 255 символов и поле confirm содержащее информацию о подтверждении заказа – логического типа.
Поля таблицы deliveries: order_id с номером заказа — ключевое, ненулевое, уникальное поле целочисленного типа с автоинкрементом, поле поле fio с номером пользователя совершившего заказ — ключевое, ненулевое целочисленного типа, поле address хранящее адрес доставки товара указанный клиентом – строкового типа длинной в 255 символов, поле time хранящее желаемое время доставки товара – строкового типа длинной в 255 символов, поле date с датой совершения заказа клиентом – типа DATE и поле логического типа confirm хранящее информацию о доставке товара.
Таблицы orders и deliveries выглядят так:
Связи таблиц
Как создать базу данных программа
Как создать структуру базы данных MySQL? Как создавать таблицы MySQL? Программа для создания базы данных MySQL Workbench!
Как создать структуру базы данных MySQL, используя MySQL Workbench
Хотите, создать свою собственную базу данных, но вы устали от создания таблиц и связей между ними с помощью SQL? Используйте свободное программное обеспечение MySQL Workbench, которая была создана, чтобы визуально создавать базы данных.
MySQL Workbench позволяет моделировать базу данных MySQL, используя визуальное представление таблиц. Это устраняет необходимость кропотливо описывать структуру базы данных, в SQL, программа MySQL Workbench будет генерировать код за вас! Скачать программу можно бесплатно на веб-сайте: http://www.mysql.com/downloads/workbench, вы можете скачать как установочную версию, так и ту, которая требует только распаковки (доступные системы включают в себя: Windows, Ubuntu Linux, Fedora, Mac OS Х).
Как использовать программу для создания базы данных MySQL?
Откройте MySQL Workbench, выберите пункт File -> New Model, или нажмите CTRL + N. область моделирования баз данных, отображается на изображении ниже:
Первое, что вы должны сделать, это создать таблицу с атрибутами — поэтому нажмите на кнопку «Добавить таблицу».
Заполните соответствующие поля: имя таблицы, атрибуты (помните, что один из них должен быть главным ключом – обозначенным флажком, PK «первичный ключ».).
Когда вы создаете таблицы, вы должны думать о том, как они будут связаны друг с другом.
Если вы заполнили все таблицы, нажмите на кнопку «Добавить диаграмму», чтобы определить отношения между субъектами.
Вы увидите окно, похожее на приведенное ниже, в котором показана созданная таблица В рабочей области диаграммы.
Моя структура базы данных не будет правильной, так как здесь я лишь показываю, как моделировать структуру базы данных. Поэтому можно развернуть таблицы в рабочей области.
Теперь объедините таблицу, с тем, чтобы сформировать отношения.
Предположим они будут выглядеть таким образом:
— Книга, может принадлежать к одному читателю
— Читатель может занять несколько книг
— Книга может иметь только одного автора
— Автор может опубликовать множество книг
Как правило, используются три опции, которые позволяют создать журнал (1: 1, 1 для многих, и многие ко многим):
Таким образом, мы создаем соединения, как показано на рисунке:
Если вы дважды щелкните на отношения, вы сможем установить дополнительные параметры.
Когда вы закончите создание структуры, вы можете создать базу данных SQL просто импортировав ее. Чтобы сделать это, выберите меню Файл -> Экспорт -> и выберите нужный вариант, данные в основном представляют собой таблицы, и пользователей (если такие созданы). Файл, который я создал показан ниже.
Также вы можете нажать «Сохранить в другой файл», чтобы сохранить файл в .sql формате.
Источник: juice-health.ru