Внешняя библиотека или мини-язык для чтения схемы базы данных?

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

Только, я не знаю никаких инструментов для работы, и я не могу поверить, что они не существуют --- наверное, я просто не знаю, что спросить у гугла, но я их не нахожу.

Итак, какие библиотеки или другие инструменты существуют для поддержки чтения схемы базы данных из текстовых файлов.


На вопрос Invenetix: я рассчитываю сгенерировать код создания базы данных во время сборки или включить описание схемы в выпуск и построить базу данных из описания во время выполнения. Предложение Дреймона было бы неплохо, но я не хочу быть запертым в предопределенной СУБД, если я могу помочь.

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

Возможно, на данный момент я слишком усложняю задачу.


person dmckee --- ex-moderator kitten    schedule 07.12.2008    source источник


Ответы (5)


Просто используйте SQL. SQL — это не только язык запросов, но и DDL (язык определения данных). Если, например, вы используете mysql; вы можете спроектировать свою схему так, как хотите, запустите mysqldump, который создаст файл SQL с операторами DDL. Приведите схему в порядок, после чего вы сможете загрузить ее в любое время, используя файл SQL. Лично я просто пишу схему SQL в текстовом редакторе и загружаю ее в mysql.

Это будет работать для mysql, postgresql, oracle и, возможно, для любой другой БД.

person Draemon    schedule 07.12.2008
comment
Спасибо. +1. Существует ли значительная степень зависимости СУБД от информации о типе? - person dmckee --- ex-moderator kitten; 07.12.2008
comment
Да, к сожалению. Для всех баз данных, кроме самых простых, вы вряд ли сможете определить один файл схемы. Но, учитывая, что разные базы данных делают простые вещи, такие как автоинкрементные ключи, по-разному, это неудивительно. Вы можете поддерживать эквивалентные схемы или использовать что-то вроде SQLFairy. - person Draemon; 07.12.2008
comment
SQLFairy очень перспективен как инструмент. Спасибо еще раз. - person dmckee --- ex-moderator kitten; 08.12.2008

Думаю, теперь я понимаю немного лучше.

Несмотря на то, что каждое решение SQL на рынке должно соответствовать определенному уровню соответствия стандартам ANSI SQL, все они будут предоставлять некоторый тип настраиваемых данных, которые могут не использоваться/использоваться/распознаваться в другом решении SQL Server.

Как, например, в MySQL 4 у вас будет достаточно выбора для использования (DATE, DATETIME, TIME, YEAR и TIMESTAMP), тогда как в MS SQL 2000 у вас будет только пара (DATETIME или SMALLDATETIME). Вы должны убедиться, что схема, которую вы в конечном итоге сгенерируете, является общей для решений, которые вы готовы поддерживать.

Типы данных MySQL

Типы данных MS SQL 2000

Это помогает?

person William Holroyd    schedule 07.12.2008

SQLite не хранит свои данные в текстовом формате, но, вероятно, будет делать то, что вам нравится.

Он идеально подходит для встроенной базы данных — здесь нет серверов, нет настроек, а база данных находится в одном файле, которым может управлять ваше приложение.

http://www.sqlite.org/

person Mark Harrison    schedule 07.12.2008
comment
SQLite был моим планом первоначальной реализации, но у меня есть причины захотеть сделать выбор позже. Но я заметил, что Sqlite не использует временные типы, что может быть проблемой. Тем не менее голосуйте. - person dmckee --- ex-moderator kitten; 07.12.2008

Вы можете проверить http://www.codesmithtools.com/ . Инструмент предназначен для чтения схемы базы данных и позволяет создавать шаблоны кода на основе этой схемы. Он имеет абстрактную библиотеку для доступа к данным схемы.

person Norman H    schedule 05.08.2009
comment
Ух ты! Прошло почти семь месяцев. Хорошо для вас, и я посмотрю на это. - person dmckee --- ex-moderator kitten; 05.08.2009
comment
Думаю, лучше поздно, чем никогда? Вопрос появился в поиске, который я делал, поэтому я подумал, что внесу свой вклад. :-) - person Norman H; 06.08.2009

Я пока не могу давать комментарии, но если я правильно понимаю, вы хотите, чтобы приложение или библиотека строили схему в зависимости от данных, предоставленных в текстовом файле?

Не могли бы вы предоставить пример рабочего процесса, в котором вы стремитесь достичь? На каком шаге у вас возникла проблема?

person William Holroyd    schedule 07.12.2008