Создание таблиц реляционной БД

Posted by on in Blogs
Одно из самых частых дел, которые приходится выполнять разработчикам БД - это создание новых баз данных, таблиц в них, связей между ними и индексов для ускорения поиска. Очень часто приходится, как бы, повторять структуру, которая уже была реализована ранее на другой СУБД, или быстро вводить в действие таблицы для более удобного выполнения промежуточных операций. По мере продвижения проекта к финишу, часть такого рода таблиц уходит, часть преобразуется во временные или модифицируется для оптимизации алгоритмов, но всегда есть потребность в быстром создании таких "рабочих", в известном смысле, объектов для разработчиков.

Как и все в мире компьютеров, эта задача может быть решена различными способами. Я считаю одним из самых удобных и практичных - использование инструментов Embarcadero для работы с БД. Хотя создать таблицу можно из любого из 4 продуктов из состава DB Power Studio, реальные преимущества мы ощутим в среде DBArtisan или Rapid SQL. Вы наверняка уже встречались с этими продуктами, например, в этом блоге. :) Несмотря  на внешнюю очень большую схожесть интерфейсов редакторов объектов БД в этих двух инструментах, в них отражены существенные отличия в методах и задачах для решения которых предназначены эти средства.

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

Команде разработчиков я бы рекомендовал пользоваться Rapid SQL. Здесь каждый разработчик может создать свой "локальный" проект, разрабатывая и тестируя общие элементы не мешая остальным, воспользоваться преимуществами системы управления исходными тестами на SQL и DDL.

Настало время запустить Rapid SQL. Нужна лицензия. Но можно воспользоваться бесплатной лицензией, которая действует в течение пробного периода (trial license). Сам продукт доступен для загрузки с сайта http://www.embarcadero.com в двух видах - обычный установщик и Instant Trial. Последний вариант выгоден, если планируется опробование нескольких продуктов, поскольку с ним не требуется установка каждой версии каждой программы - можно просто дважды кликнуть по скачанному приложению и оно запустится. Здесь используется технология Appwave. Бесплатную пробную лицензию Embarcadero высылает на электронную почту, указанную при регистрации пользователя на сайте.



Традиционно для среды Windows, слева расположено дерево подключений/источников данных и их внутренних объектов. Пользователи не только сами могут создавать и запоминать практически неограниченное количество источников, но и организовывать их в группы, маркировать их в соответствии с удобной для них системой цветовых обозначений, обмениваться  описаниями источников с другими программами Embarcadero. Выберем источник - на виртуальном сервере Oracle. Двойной клик по нему позволит открыть соединение и после этого раскроет содержимое этой ветки. В зависимости от задач бывает удобно отсортировать дерево по типам объектов или по "владельцам" объектов.

Мне потребовалось создать в схеме PRR несколько таблиц для сбора и обработки информации о блогах.

Такую модель можно было бы создать в Embarcadero ER/Studio Data Architect и прямо из этого средства создать все таблицы на сервере,  но у меня есть только набросок, причем для другой СУБД.

Из дерева навигатора можно создавать любые объекты БД с помощью простых мастеров. Дальше рассматривается пример использования мастера создания объекта таблицы. Сходным образом в Rapid SQL действуют мастера для создания любых объектов БД и других поддерживаемых элементов.

Переходим по дереву в схему PRR, становимся на ветку Tables и нажимаем правую педаль мыши для вызова контекстного меню. Выбираем и нажимаем Create



Откроется мастер создания таблиц Create Table Wizard.

  1. Вносим PRR в поле Schema и BLOG_POST в поле Name.

  2. Для остальных параметров оставляем значения по умолчанию и нажимаем Next (Далее).

  3. Добавляем столбец, введя в поле Name значение id и установив в поле Type тип numeric. Поле Width установим в 10.  Продолжая нажимать кнопку Add Column (Добавить столбец) и заполняя остальные свойства на экране, создаем все колонки этой таблицы. Если случайно создали лишнее или "кривое" поле - его можно удалить, выбрав его и нажав кнопку Delete (Удалить). Можно добиться массы полезных настроек каждого поля путем изменения его атрибутов.Для Oracle 11gr2 мастер предлагает 10 шагов, хотя остальные являются необязательными. Обратите внимание, что в выпадающем списке Datatype показываются типы данных, допустимые именно для этой версии Oracle. Если были определены домены, то они также будут показаны в этом списке


  4. Нажимаем Finish (Готово). Откроется панель DDL View (Просмотр DDL-кода), отображающая DDL-код, который будет выполнен для создания новой таблицы.

  5. Снимите флажок Launch Object Editor After Execute (Запустить редактор объектов после выполнения) и щелкните Execute (Выполнить).




Rapid SQL построит SQL-код, соответствующий конкретной платформе, синтаксически корректный и сразу готовый к выполнению. Мастера создания объектов Rapid SQL избавляют пользователя от SQL-кодирования.

Аналогичным образом создаем остальные таблицы. Если не снять флажок Launch Object Editor After Execute (Запустить редактор объектов после выполнения), то соответствующий создаваемому объекту (здесь: таблице BLOG_POST) редактор появится на рабочем пространстве в центре. В этом редакторе можно изменять параметры и свойства уже существующих объектов, например, тип, размер, порядок расположения полей. Можно иметь множество одновременно открытых редакторов (в том числе для различных объектов из разных БД на отдельных серверах под любыми поддерживаемыми типами СУБД). От редактора к редактору пользователь переходит при помощи закладок, расположенных ниже редакторов.

Редактор объектов предоставляет следующие возможности:

  • Для всех типов объектов БД редакторы объектов предоставляют стандартизованные окна с вкладками.

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

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

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

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


Воспользуемся таким редактором и модифицируем созданную ранее таблицу BLOG_POST, добавив в нее первичный ключ. Выберем закладку редактора Constraints,  в нем - ветку  Primary Keys и нажимаем кнопку Add слева. В открывшемся диалоговом окне необходимо указать имя объекта первичного ключа, затем выбрать колонки, включенные в этот ключ. В нашем случае я указал PK_BPOSTS и единственную колонку - id.  Редактор проверит, в том числе, допустимо ли использовать эту колонку, является ли она уникальной по значениям и т.п. Кнопка Add (Добавить) снизу этого диалогового окна  сохранит все, что мы сделали  в редакторе, но пока не внесет в реальную БД. Можно выполнить еще множество настроек одного объекта и только потом внести их все сразу в реальную базу данных. Это внесение выполняется нажатием кнопки Alter (Изменить) наверху редактора.



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

В реляционных СУБД естественным способом реализации таких связей является связь при помощи внешних (Foreign) ключей.

Давайте пропишем эти Foreign Keys при помощи редакторов для всех связанных таблиц.

Надо открыть редактор для таблицы, которая содержит поле-внешний ключ, и перейти на закладку Constraints. Здесь мы уже создавали первичные ключи, но теперь нам нужна ветка Foreign Keys.

Выбираем эту ветку (папку) и нажимаем кнопку Add слева. Открывается диалоговое окно.



Имя ограничения можно оставить то, которое создал Rapid SQL, но можно поменять на более понятное.

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

Нажать Finish (Затем не забыть Alter!). Связи созданы!

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

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

Чтобы убедиться, что мы корректно воссоздали требующуюся структуру данных, я провел "обратное проектирование" при помощи ER/Studio. Вот диаграмма, которую я получил в результате.



About
Gold User, Rank: 11, Points: 295
SC at Embarcadero. DB Tools expert Delphi practitioner

Comments

Check out more tips and tricks in this development video: