23 февраля 2012

Консольный генератор SQL кода из ER модели

Идея небольшого, но изящного и полезного проекта для тех, кто интересуется трансляторами и базами данных.

Прелюдия

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

Идея

ER-модель в общем-то неплохо описывается безо всяких диаграмм в текстовом виде. Например так

ФАКУЛЬТЕТ
  название: String
  адрес: String


КАФЕДРА
  название: String
  аудитория: Integer


ФАКУЛЬТЕТ-КАФЕДРА 1:0..N
 

Всё понятно? Думаю да. Не нужно ничего кроме текстового редактора.

Так вот, почему бы не генерировать SQL код и даже диаграммы по текстовому представлению ER модели? Более того, инструменты, которые умеют строить симпатичные диаграммы из текста уже существуют. Вот например эта картинка построена из текста, встроенного в URL


http://yuml.me/diagram/scruffy/class/[Customer]1-0..*[Address]

Осталось только научиться генерировать SQL. Вперёд!