제약 조건 명명 규칙
PostgreSQL 데이터베이스 제약 조건 및 인덱스에 대한 GitLab의 커스텀 명명 규칙과 형식을 설명합니다.
가장 일반적인 방법은 Rails가 데이터베이스 제약 조건 및 인덱스 이름을 선택하도록 하거나, PostgreSQL의 기본값을 사용하는 것입니다(해당되는 경우). 그러나 Rails에서 커스텀 이름을 정의하거나, ORM을 사용하지 않는 Go 애플리케이션에서 작업할 때는 일관성과 검색 용이성을 높이기 위해 엄격한 명명 규칙을 따르는 것이 중요합니다. 아래 표는 커스텀 PostgreSQL 제약 조건에 대한 명명 규칙을 설명합니다. 이는 기존 데이터베이스의 이름을 소급하여 변경하기 위함이 아니라 향후 변경 사항의 일관성을 보장하기 위한 것입니다. 유형 구문 참고 예시 Primary Key pk_<테이블명> pk_projects Foreign Key fk_<테이블명> <칼럼명>[ and <칼럼명>]* <외래 테이블명> fk_projects_group_id_groups Index index_<테이블명> on <칼럼명>[ and <칼럼명>] [ and <부분 조건의 칼럼명>] 인덱스 이름은 모두 소문자여야 합니다. index_repositories_on_group_id Unique Constraint unique_<테이블명>_<칼럼명>[ and <칼럼명>]* unique_projects_group_id_and_name Check Constraint check_<테이블명> <칼럼명>[ and <칼럼명>]*[ <접미사>]? 선택적 접미사는 length , enum 등 유효성 검사 유형을 나타내야 합니다. 동일한 칼럼에 대한 여러 CHECK 제약 조건을 구별하는 데에도 사용할 수 있습니다. check_projects_name_length check_projects_type_enum check_projects_admin1_id_and_admin2_id_differ Exclusion Constraint excl_<테이블명> <칼럼명>[ and <칼럼명>]* [_<접미사>]? 선택적 접미사는 수행되는 제외 유형을 나타내야 합니다. excl_reservations_start_at_end_at_no_overlap 참고 사항 # 충돌 여부는 db/structure.sql 을 확인하세요. 접두사는 접미사보다 선호됩니다. 주어진 제약 조건의 유형을 빠르게 식별하고 알파벳순으로 그룹화하기 더 쉽기 때문입니다. 칼럼명을 연결하는 _and_ 는 PostgreSQL에서 정의한 63자 길이 제한 내에서 식별자를 유지하기 위해 생략할 수 있습니다. 또한 이 제한을 지키기 어려운 경우 최대한 축약하여 표기할 수 있습니다. 매우 특정한 문제를 해결하기 위해 추가된 인덱스의 경우, 이름에 사용 목적을 반영하는 것이 의미 있을 수 있습니다.