Конвенции за именуване на PostgreSQL

Къде мога да намеря подробно ръководство относно конвенциите за именуване на PostgreSQL? (имена на таблици срещу камилски регистър, последователности, първични ключове, ограничения, индекси и т.н...)


person boj    schedule 20.05.2010    source източник
comment
Е, ако отидем малко по-далеч и разгледаме общата конвенция за именуване, силно препоръчвам да проверите този отговор: stackoverflow.com/questions/4702728/   -  person vyegorov    schedule 29.10.2014


Отговори (2)


По отношение на имена на таблици, регистър и т.н., преобладаващата конвенция е:

  • 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-съвместима замяна на сериен.

person leonbloy    schedule 20.05.2010
comment
Има ли някакви конвенции относно препратките към типове данни с главни или малки букви и референтните функции? (т.е. regclass или REGCLASS и to_timestamp(0) или TO_TIMESTAMP(0))? Предполагам, че разглеждаме типовете и функциите като идентификатори и следователно малки букви? - person d11wtq; 27.08.2012
comment
FWIW, единствената идиосинкразия е, че Pg се сгъва в малки букви, където SQL стандартът казва, че трябва да се сгъва в главни букви. СУБД, които не успяват да сгънат регистъра на буквите, са странните нестандартни. - person Craig Ringer; 16.09.2014
comment
Като нов потребител на Postgres, това е доста разочароващо. Да се ​​налага да избирате между писане на цитати през цялото време или използване на грозна конвенция за именуване е гадно. Гадно е. - person d512; 30.01.2016
comment
@user1334007 Конвенцията не е грозна - и прочетете коментара на Крейг по-горе. И няма нужда да цитирате, ако не сте цитирали, когато сте създавали таблиците (тоест, ако сте последователни). - person leonbloy; 30.01.2016
comment
@leonbloy, ако не цитирате, когато създавате таблицата, тогава Postgres ще с малки букви имената на вашите таблици и имената на полетата. Можете да използвате камилски главни букви, когато пишете заявките си, но резултатът ви ще се показва изцяло с малки букви, което е трудно за четене, когато полетата се състоят от множество думи (последна дата). Ако искате имената на вашите колони да могат да се четат в резултатите от заявката, трябва или да цитирате всичко, или да използвате малки главни букви, което, IMO, е грозно. Би било много по-добре Postgres да остави имената ви на мира и да не изисква от вас да предоставяте оферти. - person d512; 30.01.2016
comment
Това е SQL стандартът. stackoverflow.com/questions/153944/is-sql-syntax -малки и малки букви - person leonbloy; 30.01.2016
comment
Мразя ключови думи с главни букви, просто ги мразя, конвенция или не. Няма зависимост от главни и малки букви по отношение на ключовите думи. Предпочитам всички малки букви. Да, знам, че е просто предпочитание, но това също е просто коментар. ;-) - person Craig; 18.12.2016

Всъщност няма официално ръководство, защото няма единен стил или стандарт.

Стига да разбирате правилата за именуване на идентификатор можете да използвате каквото искате.

На практика смятам, че е по-лесно да използвам lower_case_underscore_separated_identifiers, защото не е необходимо да ги "Double Quote" навсякъде, за да запазя регистър, интервали и т.н.

Ако искате да наименувате вашите таблици и функции "@MyAṕṕ! ""betty"" Shard$42", ще бъдете свободни да го направите, въпреки че ще ви е мъчно да пишете навсякъде.

Основните неща, които трябва да разберете, са:

  • Освен ако не са поставени в двойни кавички, идентификаторите са сгънати от малки до малки, така че MyTable, MYTABLE и mytable са едно и също нещо, но "MYTABLE" и "MyTable" са различни;

  • #P7#
    #P8#
  • Трябва да поставите ключовите думи в двойни кавички, ако искате да ги използвате като идентификатори.

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

person Craig Ringer    schedule 16.09.2014
comment
Благодаря за връзката към документа за правила на именуване на идентификатор. Трудно ми беше да намеря тази конкретна тема. - person Basil Bourque; 02.04.2016
comment
Намирам, че е по-лесно да използвам lower_case_underscore_separated_identifiers... наскоро чух, че това е описано като змийски случай - person bvj; 07.03.2020