PostgreSQL adlandırma kuralları


193

PostgreSQL adlandırma kuralları hakkında ayrıntılı bir kılavuzu nerede bulabilirim? (tablo adları, deve durumu, sekanslar, birincil anahtarlar, kısıtlamalar, dizinler vb. vs.)


Biraz daha ileri gidip genel adlandırma
yoğunluğuna bakacak olursak,

Yanıtlar:


254

Tablo isimleri, vaka, vb. İle ilgili olarak, yaygın kural şöyledir:

  • SQL anahtar kelimeleri: UPPER CASE
  • isimler (tanımlayıcılar): lower_case_with_underscores

Örneğin :

UPDATE my_table SET name = 5;

Bu taşla yazılmaz, ancak küçük harflerde tanımlayıcılar hakkında biraz tavsiye edilir, IMO. Postgresql, kote edilmediğinde tanımlayıcıları büyük / küçük harfe duyarsız olarak (gerçekte bunları dahili olarak küçük harfe katlar) ve alıntılandığında büyük / küçük harfe duyarlıdır; birçok insan bu kendine özgü farkındalığın farkında değil. Her zaman küçük harf kullanarak güvende olursunuz. Her neyse, tutarlı olduğunuz sürece camelCaseveya PascalCase(veya UPPER_CASE) kullanmak kabul edilebilir : ya tanımlayıcıları her zaman ya da asla alıntılayın (ve şema oluşturmayı da içerir!).

Daha fazla kongre veya stil rehberinin farkında değilim. Yedek anahtarlar normalde bir sekanstan (genellikle serialmakro ile) yapılır, bunları elle oluşturursanız bu sekanslar için bu adlandırmaya sadık kalmak uygun olacaktır (tablename_colname_seq ).

Ayrıca bazı açıklamalara bakın burada , burada ve (genel SQL için) burada tüm birkaç ilgili bağlantıları ile.

Not: Postgresql 10 identity , seri için SQL uyumlu bir yedek olarak sütunları tanıttı .


3
FWIW, tek idiyosenkrazi, Pg'nin küçük harfe katlanmasıdır, burada SQL standardı büyük harfe katlanması gerektiğini söyler. Büyük / küçük harf kullanımı başarısız olan DBMS'ler, standart olmayan garip olanlardır.
Craig Ringer

6
Postgres'in yeni bir kullanıcısı olarak, bu oldukça sinir bozucu. Her zaman tırnak işaretleri arasında seçim yapmak veya çirkin bir adlandırma kuralı kullanmak berbat. Eşek berbat.
d512

1
@ user1334007 Sözleşme çirkin değil ve yukarıdaki Craig'in yorumunu okuyun. Ve tabloları oluştururken alıntı yapmadıysanız (yani tutarlıysanız) alıntı yapmaya gerek yoktur.
leonbloy

4
@leonbloy, tabloyu oluştururken alıntı yapmazsanız Postgres tablo adlarınızı ve alan adlarınızı küçük harflerle gösterir. Sorgularınızı yazarken deve durumunu kullanabilirsiniz, ancak sonuçlarınız alanlar birden çok kelimeden (son güncelleme tarihi) oluştuğunda okunması zor olan tüm küçük harfleri gösterecektir. Sütun adlarınızın sorgu sonuçlarında okunabilir olmasını istiyorsanız, her şeyi alıntılamanız veya IMO'nun çirkin olan yılan kasasını kullanmanız gerekir. Postgres'in isimlerinizi yalnız bırakması ve teklif vermenizi gerektirmemesi çok daha iyi olur.
d512

11
Anahtar kelimelerden büyük harf nefret ediyorum, sadece nefret ediyorum, konvansiyon ya da hayır. Anahtar kelimelerle ilgili büyük / küçük harf bağımlılığı yoktur. Tüm küçük harfleri tercih ederim. Evet, bunun sadece bir tercih olduğunu biliyorum, ama bu da sadece bir yorum. ;-)
Craig

28

Gerçekten resmi bir el kitabı yoktur, çünkü tek bir stil veya standart yoktur.

Tanımlayıcı adlandırma kurallarını anladığınız sürece kullanabilirsiniz.

Pratikte, kullanımı daha kolay buluyorum lower_case_underscore_separated_identifiersçünkü"Double Quote" her yerde onlar için kasa, boşluk vb. Korumak .

Tablolarınızı ve işlevlerinizi adlandırmak istiyorsanız "@MyAṕṕ! ""betty"" Shard$42" isterseniz, bunu yapmakta özgür olacaksınız, ancak her yere yazmak acı verici olurdu.

Anlaşılması gereken başlıca şeyler:

  • Çift tırnaklı sürece, tanımlayıcılar nedenle, vaka-katlanmış alt-durum için vardır MyTable, MYTABLEve mytablehepsi aynı şeydir, ancak "MYTABLE"ve "MyTable"farklıdır;

  • Çift tırnaklı olmadığı sürece:

    SQL tanımlayıcıları ve anahtar kelimeler bir harfle (az, aynı zamanda aksan işaretleri ve Latin alfabesi olmayan harfler içeren harfler) veya bir alt çizgi (_) ile başlamalıdır. Bir tanımlayıcıdaki veya anahtar kelimedeki sonraki karakterler harfler, alt çizgiler, rakamlar (0-9) veya dolar işaretleri ($) olabilir.

  • Tanımlayıcı olarak kullanmak istiyorsanız, anahtar kelimeleri iki kez alıntı yapmanız gerekir.

Uygulamada şiddetle tavsiye yok kullanmak anahtar tanımlayıcılar olarak. En azından ayrılmış kelimelerden kaçının. Bir tabloyu adlandırabilmeniz "with"gerektiği anlamına gelmez.


1
Tanımlayıcı adlandırma kuralları hakkındaki dokümana bağladığınız için teşekkür ederiz . O konuyu bulmakta zorlandım.
Basil Bourque

1
"Kullanımı daha kolay buluyorum lower_case_underscore_separated_identifiers" ... son zamanlarda, bunun "yılan çantası" olarak tanımlandığını duydum
bvj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.