PostgreSQL 명명 규칙


193

PostgreSQL 명명 규칙에 대한 자세한 설명서는 어디서 찾을 수 있습니까? (표 이름 대 낙타 경우, 시퀀스, 기본 키, 제약 조건, 색인 등)


글쎄, 우리가 조금 더 나아가서 일반적인 명명 컨버전스를 살펴보면이 답변을 확인하는 것이 좋습니다. 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 identityserial을 위한 SQL 호환 대체품으로 열을 도입했습니다 .


3
FWIW에서 유일하게 특이한 점은 Pg가 소문자로 접히는 것인데, SQL 표준에서는 대문자로 접어야한다고합니다. 접을 수없는 DBMS는 이상한 비표준입니다.
Craig Ringer

6
Postgres의 새로운 사용자로서 이것은 매우 실망 스럽습니다. 항상 따옴표를 입력하거나 추악한 명명 규칙을 사용하는 것을 선택해야합니다. 엉덩이를 빨다.
d512

1
@ user1334007 컨벤션은 추악하지 않으며 위의 Craig의 의견을 읽으십시오. 그리고 테이블을 만들 때 (즉, 일관성이있을 때) 인용하지 않았다면 인용 할 필요가 없습니다.
leonbloy

4
@leonbloy, 테이블을 만들 때 인용하지 않으면 Postgres는 테이블 이름과 필드 이름을 소문자로 사용합니다. 쿼리를 작성할 때 낙타 문자를 사용할 수 있지만 결과는 모두 소문자로 표시되므로 필드가 여러 단어 (lastupdateddate)로 구성되어 있으면 읽기가 어렵습니다. 쿼리 결과에서 열 이름을 읽을 수있게하려면 모든 것을 인용하거나 IMO와 같은 뱀 대소 문자를 사용해야합니다. Postgres가 귀하의 이름을 내버려두고 따옴표를 요구하지 않으면 훨씬 좋습니다.
d512

11
나는 대문자로 키워드를 싫어, 그냥 증오, 컨벤션 또는 아니오. 키워드와 관련하여 대소 문자가 없습니다. 나는 모든 소문자를 선호합니다. 그렇습니다, 나는 그것이 단순한 선호라는 것을 알고 있지만 이것은 단순한 의견이기도합니다. ;-)
Craig

28

단일 스타일이나 표준이 없기 때문에 공식적인 매뉴얼은 없습니다.

식별자 이름 지정 규칙 을 이해 하면 원하는대로 사용할 수 있습니다.

실제로, 케이스, 공백 등을 보존하기 위해 어디에서나 lower_case_underscore_separated_identifiers필요하지 않기 때문에 사용 하기가 더 쉽다는 것을 알게되었습니다 "Double Quote".

테이블과 함수의 이름을 지정 "@MyAṕṕ! ""betty"" Shard$42"하려면 자유롭게 입력 할 수 있지만 어디에서나 입력하기가 쉽지 않습니다.

이해해야 할 주요 사항은 다음과 같습니다.

  • 이중 인용하지 않는 한, 식별자 때문에, 경우 접힌 소문자를 할 수있는 MyTable, MYTABLE그리고 mytable모두 같은 일이지만, "MYTABLE""MyTable"다른;

  • 큰 따옴표가 없다면 :

    SQL ID 및 키워드는 문자 (az, 분음 부호 및 비 라틴 문자가있는 문자) 또는 밑줄 (_)로 시작해야합니다. 식별자 또는 키워드의 후속 문자는 문자, 밑줄, 숫자 (0-9) 또는 달러 기호 ($) 일 수 있습니다.

  • 키워드를 식별자로 사용하려면 키워드를 큰 따옴표로 묶어야합니다.

실제로 키워드 를 식별자로 사용 하지 않는 것이 좋습니다 . 적어도 예약어는 피하십시오. 테이블 이름을 지정할 수 있다고 해서 꼭해야하는 것은 아닙니다."with"


1
식별자 이름 지정 규칙에 대한 문서를 연결해 주셔서 감사합니다 . 특정 주제를 찾는 데 어려움이있었습니다.
Basil Bourque

1
"저는 사용하기가 더 쉽다는 것을 알게되었습니다 lower_case_underscore_separated_identifiers... 최근에 나는 이것이"뱀 사례 "라고 들었습니다
bvj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.