Язык выражений в SQL, где преобразования слов? - PullRequest
1 голос
/ 03 декабря 2010

У нас есть один доменный объект,

Person
    firstName
    lastName
    role

Я ищу простой язык выражений, который мы можем написать, который будет генерировать SQL. (в частности, предложение where в SQL)

Например.

firstName contains "joe"

переводится как

FIRST_NAME LIKE '%joe%'

Существует что-то подобное или я должен написать свой собственный?

Пожалуйста, дайте мне знать, если вы думаете, что я мог бы также искать источник молодости, или если вы думаете, что я напрасно трачу свое время на написание этого!

Ответы [ 3 ]

1 голос
/ 04 декабря 2010

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

Это работа Дональда Д. Чемберлина и 1974 Раймона Ф. Бойса , представляющая SQL (затем SEQUEL).Я предполагаю, что из их введения они разработали SQL для ваших нетехнических пользователей.

Это не значит, что SQL - идеальный язык.Несмотря на тридцатилетние изменения, у него все еще есть недостатки.Есть шанс, что вы могли бы построить что-то лучше, но две вещи могли бы пойти не так:

  1. Ваш язык мог бы быть хуже.
  2. Если один из ваших нетехнических пользователей хотел бы улучшить своинавыки работы с реляционными данными, они будут ограничены вашим языком по сравнению с SQL.Существует множество ресурсов для улучшения навыков SQL и гораздо меньше способов улучшить навыки на новом языке.

Возможно, стоит подумать о компромиссе: предложите пользовательский интерфейс для построения выражений.Менее технические пользователи могут выбрать свойство, оператора и ввести значения, которые затем появятся в текстовой области выражения.Они могут создавать умеренно сложные выражения SQL по частям без необходимости запоминания синтаксиса SQL.Более опытные пользователи могут редактировать SQL напрямую.

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

0 голосов
/ 03 декабря 2010

Я не знаю, достаточно ли этого, но есть пример проекта xtext (структура разработки языка) для такого языка сущностей (модель предметной области).Может быть, вы хотите проверить это.это также показывает генерацию кода для jpa (насколько я помню).если это не круто, просто напишите свой собственный язык, не стоит слишком долго пользоваться xtext;)

0 голосов
/ 03 декабря 2010

Я предлагаю вам посмотреть на шаблон Selection Factory .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...