제한 사항 네이밍 규칙

가장 일반적인 옵션은 Rails가 데이터베이스 제약 조건과 인덱스의 이름을 선택하거나 PostgreSQL이 기본값을 사용하도록 하는 것입니다(해당될 때). 그러나 Rails에서 사용자 정의 이름을 정의하거나 ORM이 사용되지 않는 Go 애플리케이션에서 작업을 할 때는 일관성과 발견 가능성을 향상시키기 위해 엄격한 네이밍 규칙을 준수하는 것이 중요합니다.

아래 표는 사용자 정의 PostgreSQL 제약 조건의 네이밍 규칙을 설명합니다. 의도는 기존 데이터베이스의 이름을 후향적으로 변경하는 것이 아니라 미래 변경의 일관성을 보장하는 것입니다.

유형 구문 참고 예제
기본 키 pk_<테이블 이름>   pk_projects
외래 키 fk_<테이블 이름>_<컬럼 이름>[_및_<컬럼 이름>]*_<외래 키가 있는 테이블 이름>   fk_projects_group_id_groups
인덱스 index_<테이블 이름>_on_<컬럼 이름>[_및_<컬럼 이름>]*[_and_<부분 절의 컬럼 이름>]* 인덱스 이름은 모두 소문자여야 합니다. index_repositories_on_group_id
고유 제약 조건 unique_<테이블 이름>_<컬럼 이름>[_및_<컬럼 이름>]*   unique_projects_group_id_and_name
체크 제약 조건 check_<테이블 이름>_<컬럼 이름>[_및_<컬럼 이름>]*[_<접미사>]? 선택적인 접미사는 lengthenum과 같은 유형의 유효성 검사를 나타내야 합니다. 또한 같은 열에 대해 여러 CHECK 제약 조건을 명확히 구분하는 데 사용할 수 있습니다. check_projects_name_length
check_projects_type_enum
check_projects_admin1_id_and_admin2_id_differ
배제 제약 조건 excl_<테이블 이름>_<컬럼 이름>[_및_<컬럼 이름>]*_[_<접미사>]? 선택적인 접미사는 수행되는 배제 유형을 나타내야 합니다. excl_reservations_start_at_end_at_no_overlap

관찰 사항

  • 충돌을 확인하려면 db/structure.sql을 확인합니다.
  • 접두사가 접미어보다 우선되며, 특정 제약 조건의 유형을 빠르게 식별하고 알파벳순으로 그룹화하는 데 편리합니다.
  • 컬럼 이름을 연결하는 _and_은 PostgreSQL에서 정의한 63자 길이 제한에 맞추기 위해 생략할 수 있습니다. 또한 이 표기법은 이 제한을 유지하기 위해 최선을 다할 때 약어로 표시될 수 있습니다.
  • 매우 특정한 문제를 해결하기 위해 추가된 인덱스의 경우 이름이 해당 사용을 반영하는 것이 좋을 수 있습니다.