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

Это беспокоило меня какое-то время, и я не могу прийти к решению, которое кажется правильным ...

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

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

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

Есть три основных варианта:

  1. имена столбцов camelCase без кавычек
  2. имена столбцов в кавычках camelCase
  3. имена без кавычек (в нижнем регистре )с подчеркиванием

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

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

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

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

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

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

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

50
задан Zilk 29 June 2012 в 15:06
поделиться