Конвенції про іменування PostgreSQL


193

Де я можу знайти докладний посібник про умови іменування PostgreSQL? (назви таблиць порівняно з регістром верблюда, послідовності, первинні ключі, обмеження, покажчики тощо)


Ну, якщо ми будемо далі йти трохи і заглянути в загальне іменування convension я настійно рекомендую перевірити цю відповідь: stackoverflow.com/questions/4702728 / ...
vyegorov

Відповіді:


254

Що стосується назв таблиць, регістру тощо, поширеною умовою є:

  • Ключові слова SQL: UPPER CASE
  • імена (ідентифікатори): lower_case_with_underscores

Наприклад :

UPDATE my_table SET name = 5;

Це написано не каменем, але біт про ідентифікатори в нижньому регістрі настійно рекомендується, IMO. Postgresql ставиться до випадку ідентифікаторів безчутливо, коли його не цитують (це фактично згортає їх на малі регістри внутрішньо), а під час цитування - чутливо; багато людей не знають про цю ідіосинкразію. Використовуючи завжди малі регістри, ви в безпеці. У будь-якому випадку прийнятно використовувати camelCaseабо PascalCase(або UPPER_CASE), якщо ви послідовні: або ідентифікатори цитуйте завжди, або ніколи (і це включає створення схеми!).

Мені не відомі ще багато конвенцій чи посібників зі стилів. Сурогатні ключі зазвичай складаються з послідовності (зазвичай з serialмакросом), було б зручно дотримуватися цього іменування для цих послідовностей, якщо ви створюєте їх вручну ( tablename_colname_seq).

Дивіться також деякі обговорення тут , тут і (для загального SQL) тут , все з кількома пов'язаними посиланнями.

Примітка. Postgresql 10 представив identity стовпці як сумісну SQL для послідовного використання .


3
FWIW, єдиний ідіосинкразія полягає в тому, що Pg переходить на малі регістри, де стандарт SQL говорить, що він повинен складатися на верхній регістр. СУБД, які не вдаються до справи, є дивними нестандартними.
Крейг Рінгер

6
Як новий користувач Postgres, це досить засмучує. Необхідно постійно вибирати між введенням лапок або використовувати некрасиве умовне позначення імен. Це смокче дупу.
d512

1
@ user1334007 Конвенція не є негарною - і прочитайте коментар Крейга вище. І немає потреби цитувати, якщо ви не цитували, коли створювали таблиці (тобто якщо ви послідовні).
leonbloy

4
@leonbloy, якщо ви не цитуєте, коли створюєте таблицю, то Postgres буде замінювати великі регістри назв ваших таблиць та імен полів. Ви можете використовувати випадок верблюда, коли ви пишете запити, але ваш результат відображатиме всі малі регістри, які важко читати, коли поля складаються з кількох слів (lastupdatedate). Якщо ви хочете, щоб назви ваших стовпців читали в результатах запиту, вам потрібно буде або процитувати все, або використати регістр змії, який, IMO, некрасивий. Було б набагато краще, якби Postgres залишив ваші імена в спокої і не вимагав від вас подавати цитати.
d512

11
Я ненавиджу ключові слова у верхньому регістрі, просто ненавиджу його, конвенцію чи ні. Щодо ключових слів не залежить залежності від випадку. Я вважаю за краще всі малі регістри. Так, я знаю, що це є простою перевагою, але це теж простий коментар. ;-)
Крейг

28

Насправді не існує офіційного посібника, тому що немає єдиного стилю чи стандарту.

Поки ви розумієте правила іменування ідентифікаторів, ви можете використовувати все, що завгодно.

На практиці мені зручніше користуватися, lower_case_underscore_separated_identifiersоскільки їм не потрібно "Double Quote"всюди зберігати регістр, пробіли тощо.

Якби ви хотіли назвати свої таблиці та функції, "@MyAṕṕ! ""betty"" Shard$42"ви могли б це зробити, хоча вводити всюди було б боляче.

Основні речі, які слід розуміти:

  • Якщо двічі не вказано, ідентифікатори випадок складеного ' до нижнього регістра, тому MyTable, MYTABLEі mytableвсе те ж саме, але "MYTABLE"і "MyTable"різні;

  • За винятком подвійних цитат:

    Ідентифікатори SQL та ключові слова повинні починатися з літери (az, але також букв із діакритичними позначками та не латинськими літерами) або підкреслення (_). Наступними символами в ідентифікаторі чи ключовому слові можуть бути літери, підкреслення, цифри (0-9) або знаки долара ($).

  • Якщо ви хочете використовувати їх як ідентифікатори, ви повинні подвоїти ключові слова.

На практиці я настійно рекомендую не використовувати ключові слова як ідентифікатори. Принаймні уникайте зарезервованих слів. Тільки тому, що ви можете назвати таблицю "with", не означає, що слід.


1
Дякуємо за посилання на документ про правила іменування ідентифікаторів . Мені складно було знайти цю конкретну тему.
Василь Бурк

1
"Мені легше користуватися lower_case_underscore_separated_identifiers" ... нещодавно я почув це, як описано як "зміїний випадок"
bvj
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.