Как я могу автоматически определить схему таблиц из набора запросов? - PullRequest
1 голос
/ 04 апреля 2009

Существует ли какой-либо инструмент, который будет принимать набор CRUD-запросов и генерировать «достаточно хороший» схема таблицы для этого набора:

например. Я могу предоставить ввод, как это:

  insert username, password  
  insert username, realname
  select password where username=?
  update password where username=?
  update realname where username=?

С этим вводом инструмент должен иметь возможность составить 1, 2 или 3 таблицы, позаботиться о _id's, и индексация.

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

о да, я пытаюсь уволить моего дизайнера БД (-:

Ответы [ 2 ]

1 голос
/ 04 апреля 2009

Рассматривали ли вы использовать ORM решение , например, Hibernate? Это требует начального набора отображений между моделью класса приложения (например, классом User) и представлением схемы базы данных (например, таблица USER).

Решение ORM может поддерживать расширенные сценарии отображения, в которых объект отображается в нескольких таблицах схемы. Также в более новых версиях Hibernate поддерживается , генерирующий схему базы данных из сопоставлений (поиск инструмента hbm2ddl).

0 голосов
/ 04 апреля 2009

Вы просите невозможного.

  • Как инструмент узнает, что username должен иметь индекс, а тем более уникальный индекс?
  • Как он узнает типы данных столбцов?
  • Как он узнает какие-либо ограничения домена - например, столбец гипотетического пола должен быть либо male, либо female, а не crimson?
  • Разве это не будет довольно уязвимо для опечаток, оставляя вас с username и user_name столбцом?

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

Тем не менее, это не автоматически, но то, что вы просите, - как ответил Aleris - ORM. Вы не указали, какой язык вы используете, но наверняка есть один (или более) для вашего.

...