Упрощенные / сокращенные языки определения данных SQL? - PullRequest
11 голосов
/ 10 марта 2012

Некоторым людям нравится описывать свою структуру базы данных простым текстовым способом вместо использования CREATE TABLE операторов. Несколько примеров:

Знаете ли вы о каком-либо программном обеспечении, которое преобразует этот вид сокращенной записи в реальные операторы SQL?

Ответы [ 2 ]

7 голосов
/ 10 марта 2012

На самом деле, я только что закончил создание php-скрипта, который делает именно это, но я надеюсь, что есть что-то более профессиональное ...

Демонстрация моего конвертера:

http://simpleddl.orgfree.com

Пример ввода:

= ID id P AI

person
  ID
  mother_id -> person
  father_id -> person
  !FK mother_id, father_id -> family U:C, D:C

family
  P female_id -> person
  P male_id   -> person

Выход:

CREATE TABLE IF NOT EXISTS person (
   id         INT NOT NULL AUTO_INCREMENT,
   mother_id  INT NOT NULL,
   father_id  INT NOT NULL,
   PRIMARY KEY ( id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS family (
   female_id  INT NOT NULL,
   male_id    INT NOT NULL,
   PRIMARY KEY ( female_id, male_id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE person ADD FOREIGN KEY ( mother_id ) REFERENCES person( id );
ALTER TABLE person ADD FOREIGN KEY ( father_id ) REFERENCES person( id );
ALTER TABLE person ADD FOREIGN KEY ( mother_id, father_id ) REFERENCES family( female_id, male_id ) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE family ADD FOREIGN KEY ( female_id ) REFERENCES person( id );
ALTER TABLE family ADD FOREIGN KEY ( male_id ) REFERENCES person( id );
2 голосов
/ 30 марта 2012

Я вижу, вы упомянули инструмент text-to-ddl, доступный на http://sqlfiddle.com. Это фактически инструмент, который я создал (sqlfiddle.com - мой сайт) специально для JavaScript, чтобы облегчить его использование текстовые таблицы, которые люди публикуют в своих вопросах StackOverflow, и быстрее переводят их в настоящий DDL. Я думаю, что это работает довольно хорошо для большого количества распространенных вариаций форматов текстовых таблиц, но я уверен, что это может использовать некоторую работу для обработки большего разнообразия. Я поддерживаю различные типы DDL через отдельные шаблоны handlebars.js для каждого (MS SQL, Oracle, PostgreSQL, MySQL и SQLite).

Вся библиотека написана на JavaScript, поэтому, если кто-то захочет помочь мне сделать его лучше, я буду рад вашему вкладу. Разместите меня на github и найдите файл javascripts / ddl_builder.js. Я хотел бы получить несколько запросов на тягу!

...