Подтвердить что ты не робот

Подчеркивает или camelCase в идентификаторах PostgreSQL, когда язык программирования использует camelCase?

Это немного беспокоило меня, и я не могу найти решение, которое чувствует right...

Учитывая язык OO, в котором обычное соглашение об именах для свойств объекта является camelCased и примерным объектом, подобным этому:

{
    id: 667,
    firstName: "Vladimir",
    lastName: "Horowitz",
    canPlayPiano: true
}

Как мне смоделировать эту структуру в таблице PostgreSQL?

Существует три основных варианта:

  • Неизвестные имена столбцов camelCase
  • цитирует имена столбцов camelCase
  • имена без кавычек (нижний регистр) с символами подчеркивания

У каждого из них есть свои недостатки:

  • Неупомянутые идентификаторы автоматически складываются в нижний регистр. Это означает, что вы можете создать таблицу с столбцом canPlayPiano, но смешанный случай никогда не доходит до базы данных. Когда вы проверяете таблицу, столбец всегда отображается как canPlayPiano - в psql, pgadmin, объясняет результаты, сообщения об ошибках, все.

  • Цитируемые идентификаторы сохраняют свой случай, но как только вы их создаете, вам всегда придется их процитировать. IOW, если вы создадите таблицу с столбцом "canPlayPiano", произойдет сбой SELECT canPlayPiano .... Это добавляет много ненужного шума ко всем операторам SQL.

  • Имена нижнего регистра с символами подчеркивания являются однозначными, но они плохо сопоставляются с именами, которые использует язык приложения. Вам нужно будет запомнить разные имена для хранения (can_play_piano) и для кода (canPlayPiano). Он также предотвращает определенные типы автоматизации кода, где свойства и столбцы БД должны быть названы одинаковыми.

Итак, я пойман между камнем и твердым местом (и большим камнем, есть три варианта). Что бы я ни делал, какая-то часть будет чувствовать себя неловко. В течение последних 10 лет я использовал вариант 3, но я надеюсь, что будет лучшее решение.

Я благодарен за любые ваши советы.

PS: Я понимаю, где происходит свертывание дела и необходимость кавычек - стандарт SQL, или, скорее, адаптация стандарта PostgreSQL. Я знаю, как это работает; Меня больше интересуют советы о лучших практиках, чем объяснения того, как PG обрабатывает идентификаторы.

4b9b3361

Ответ 1

Учитывая, что PostgreSQL использует нечувствительные к регистру идентификаторы с символами подчеркивания, следует ли изменить все ваши идентификаторы в приложении, чтобы сделать то же самое? Совершенно очевидно. Итак, почему вы считаете, что наоборот - разумный выбор?

Соглашение в PostgreSQL происходит благодаря сочетанию соответствия стандартам и многолетнему опыту его пользователей. Придерживайтесь этого.

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

Ответ 2

Если ваши столбцы в PostgreSQL имеют underscores, вы можете поместить псевдонимы, но doule-quotes.

Пример:

SELECT my_column as "myColumn" from table;