테이블명 컬럼명 생성규칙


PostgreSQL에서 테이블과 컬럼 이름을 지을 때 지키면 좋은 **전표준 규칙(Naming Conventions)**을 정리해 드립니다. 
이 규칙을 따르면 앞서 겪으신 쌍따옴표(" ") 문제에서 완전히 자유로워질 수 있습니다.
 

1. 핵심 원칙: 소문자 + 스네이크 케이스
 

가장 중요한 대원칙은 모든 식별자를 소문자로 작성하고, 단어 사이는 언더바(_)로 연결하는 것입니다.

  • 권장: user_profile, order_item_list, created_at
     
  • 비권장: UserProfile (카멜 케이스), ORDERITEM (대문자 붙이기)

     

2. 테이블명 명명 규칙 (Table Naming)

  • 소문자 사용: PostgreSQL의 자동 소문자 변환 기능을 활용하기 위해 반드시 소문자로 만듭니다.
     
  • 복수형 vs 단수형: 팀마다 차이가 있지만, 현대적인 프레임워크(Laravel 등)는 복수형을 선호합니다.
    • 예: users, products, orders
       
  • 의미 중심: 테이블의 역할을 명확히 알 수 있게 짓습니다.
    • 예: posts (게시글), post_comments (게시글 댓글)
       
  • 접두사(Prefix) 지양: 과거에는 tbl_users 처럼 앞에 tbl_을 붙였으나, 최근에는 가독성을 위해 생략하는 추세입니다.

     

3. 컬럼명 명명 규칙 (Column Naming)

  • 기본키(PK): 단순히 id라고 하거나, 테이블명을 포함해 user_id라고 합니다. (조인할 때 user_id가 더 직관적입니다.)
     
  • 날짜 관련:
    • 생성일: created_at
    • 수정일: updated_at
    • 특정 날짜: published_date (접미사에 _at은 일시를, _date는 날짜만 의미하도록 구분하면 좋습니다.)
       
  • 불리언(Boolean) 값: is_, has_ 등의 접두사를 사용하여 상태를 나타냅니다.
    • 예: is_active, has_image, is_deleted
       

4. 피해야 할 이름 (Reserved Words)

PostgreSQL의 예약어는 가급적 이름으로 쓰지 마세요. 만약 쓰게 된다면 반드시 쌍따옴표(" ")가 강제됩니다. 

 

피해야 할 이름

권장하는 대체 이름

user

username, account_name, user_info

order

order_date, purchased_at

group

team_name, category_group

table

content_table, data_list

limit

max_count, limit_value


5. 요약 테이블

구분

규칙

예시 (Good)

예시 (Bad)

케이스

스네이크 케이스 (snake_case)

cl_pr_sum

CL_PR_SUM, ClPrSum

언어

영문 소문자

member_name

MEMBERNAME, 회원이름

특수문자

언더바(_)만 허용

item_code

item-code, item code

길이

63바이트 이하 (Postgres 제한)

long_name_is_okay

너무 길면 잘림



[ Tips ]

이미 대문자로 만들어진 CL_PR_SUM 테이블을 앞으로 편하게 쓰고 싶으시다면, 아래 명령어로 한 번만 이름을 바꿔주세요.

-- 테이블명 변경

ALTER TABLE "CL_PR_SUM" RENAME TO cl_pr_sum;

-- 컬럼명도 대문자가 있다면 변경 (예시)

ALTER TABLE cl_pr_sum RENAME COLUMN "USER_ID" TO user_id;