PostgreSQL 명명 규칙

David Mbochi Njonge 2023년6월20일
PostgreSQL 명명 규칙

이름 지정은 다른 개발자가 데이터베이스 구성 요소를 쉽게 읽고 이해할 수 있도록 데이터베이스와 상호 작용하는 데 도움이 되기 때문에 매우 중요합니다. 이 자습서에서는 데이터베이스, 테이블, 시퀀스, 기본 키, 제약 조건인덱스의 이름을 지정하는 데 사용할 수 있는 명명 규칙에 대해 설명합니다.

PostgreSQL 명명 규칙

PostgreSQL 문서에 따르면 명명 규칙에 대해 정의된 표준은 없지만 식별자 명명 규칙에 정통한 한 적절한 명명 방법을 사용할 수 있습니다.

다음 명령을 사용하여 PostgreSQL 서버에 로그인합니다.

david@david-HP-ProBook-6470b:~$ psql -U postgres

명명 규칙을 테스트하는 데 사용할 데이터베이스를 만듭니다.

postgres=# create database NAMING_CONVENTION_DB;
CREATE DATABASE

대문자를 사용하여 데이터베이스 이름을 지정했지만 데이터베이스 이름은 기본적으로 소문자로 변환됩니다. 이를 확인하려면 \l 명령을 사용하여 PostgreSQL 서버의 데이터베이스를 나열하십시오.

postgres=# \l

출력:

List of databases
Name         |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
----------------------+----------+----------+-------------+-------------+-----------------------
naming_convention_db | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
postgres             | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
template0            | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
|          |          |             |             | postgres=CTc/postgres
template1            | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
|          |          |             |             | postgres=CTc/postgres
(4 rows)

반환된 테이블은 PostgreSQL 서버와 해당 사용자에서 생성된 다양한 데이터베이스를 보여줍니다. 방금 만든 데이터베이스의 이름은 naming_convention_db입니다.

다음 명령을 사용하여 naming_convention_db 데이터베이스에 연결하면 쿼리가 올바른 데이터베이스에서 실행됩니다.

postgres=# \c naming_convention_db;
You are now connected to database "naming_convention_db" as user "postgres".

UPPER_CASE 이름 지정 규칙은 개발자가 키워드 이름을 지정하는 데 가장 많이 사용하는 방법입니다.

naming_convention_db=# CREATE TABLE employee(
naming_convention_db(# id SERIAL,
naming_convention_db(# first_name VARCHAR(30),
naming_convention_db(# last_name VARCHAR(30),
naming_convention_db(# email VARCHAR(50),
naming_convention_db(# PRIMARY KEY(id));
CREATE TABLE

위의 예에는 CREATE, TABLE, SERIAL, VARCHARPRIMARY KEY라는 키워드가 있습니다. 데이터베이스 관리 시스템의 특정 기능에 대한 키워드를 나타내기 때문에 단어는 대문자로 표시됩니다.

lower_case_with_underscore 명명 규칙은 개발자가 식별자의 이름을 지정하는 데 가장 많이 사용하는 방법입니다.

naming_convention_db=# CREATE SEQUENCE employee_sequence
naming_convention_db-# INCREMENT 5
naming_convention_db-# START 10;
CREATE SEQUENCE

위의 예에서 employee_underscore로 식별되는 소문자와 밑줄을 사용하여 SEQUENCE에 대한 식별자를 생성했습니다. 식별자가 대소문자를 구분하도록 하려면 식별자 이름을 지정할 때 큰따옴표를 사용할 수 있습니다.

naming_convention_db=# CREATE TABLE "EMPLOYEE"(
naming_convention_db(# first_name VARCHAR(30),
naming_convention_db(# last_name VARCHAR(30),
naming_convention_db(# email VARCHAR(50),
naming_convention_db(# id SERIAL,
naming_convention_db(# PRIMARY KEY(id));
CREATE TABLE

위의 예는 EMPLOYEE라는 대문자 식별자를 사용하여 데이터베이스에 또 다른 직원 테이블을 생성합니다.

아래 명령을 사용하여 데이터베이스의 모든 테이블을 봅니다.

naming_convention_db=# \dt

출력:

List of relations
Schema |   Name   | Type  |  Owner   
--------+----------+-------+----------
public | EMPLOYEE | table | postgres
public | employee | table | postgres
(2 rows)

식별자를 인용하지 않으면 기본적으로 소문자로 저장됩니다. 따라서 Employee, EMPLOYEEEmPlOyEe라는 이름은 동일합니다.

이는 식별자가 인용되지 않은 경우 대소문자를 구분하지 않음을 의미합니다. 또한 구문 오류가 없는지 확인하기 위해 키워드와 이름이 같은 따옴표 붙은 식별자를 사용하지 않아야 합니다.

예를 들어, 다음과 같은 데이터 정의 언어는 쿼리에 이상을 가져올 수 있으므로 피해야 합니다.

naming_convention_db=# CREATE SEQUENCE "serial"
naming_convention_db-# INCREMENT 5
naming_convention_db-# START 10;

‘SERIAL’은 데이터베이스의 다른 기능을 해석하는 키워드이며 인용된 식별자를 사용하여 다른 직렬 속성을 만들면 잠재적인 오류가 발생할 수 있습니다.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub