Упрощенные/сокращенные языки определения данных SQL?
Некоторым людям нравится описывать структуру своей базы данных простым текстовым способом вместо использования операторов CREATE TABLE
. Несколько примеров:
Знаете ли вы о каком-либо программном обеспечении, которое преобразует этот вид сокращенной нотации в фактические операторы SQL?
Ответы
Ответ 1
На самом деле, я только что закончил создание php script, который делает именно это, но я надеюсь, что там есть что-то более профессиональное...
Демонстрация моего конвертера:
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
Я вижу, что вы упомянули инструмент 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. Я хотел бы получить несколько запросов на тягу!