개발/MySQL
[MySQL] 명명 규칙 (Naming Convention)
여름청춘
2024. 7. 19. 13:36
공통
- 소문자 사용
- 축약어 사용 최소화
- 축약어를 사용하는 경우에도 소문자를 사용
테이블
- snake_case를 사용
- 복수형 명사 사용
- 복수형을 사용하는 이유
- 테이블이름과 컬럼이름이 같은 경우 방지 (ex. coupon_code 테이블의 coupon_code컬럼)
- 예약어와의 중복방지 (ex. orders / order는 order by 와 중복)
- 복수형을 사용하는 이유
- many-to-many 관계에 사용하는 교차 테이블
- 적절한 명사가 없다면 두 테이블을 and로 연결
- movies 테이블과 genres 테이블 사이의 교차 테이블 ⇒ movies_and_genres
- 적절한 명사가 없다면 두 테이블을 and로 연결
컬럼
- snake_case를 사용합니다.
- 특별한 이유가 없다면 Auto Increment 속성의 대체키 (Surrogate Key)를 Primary Key로 사용하고, 컬럼의 이름은 “테이블 이름의 단수형” + “_id” 형식으로 합니다.
- movies 테이블의 PK 컬럼: movie_id
- BIT 유형의 컬럼은 “is” 또는 “has” 와 같은 접두사를 붙입니다.
- 완료 여부: is_completed
- 닉네임이 있는지 여부: has_nickname
- 날짜 또는 시간이 포함된 날짜 컬럼
- “date” 접미사를 붙입니다.
- 어떤 날짜인지를 표현하는 동사는 과거 분사를 사용하지 않고 기본형을 사용합니다.
- 생성 일자
- created_date (X)
- create_date (O)
인덱스
- “접두사”, “테이블 이름”, “컬럼 이름”의 순서로 kebab-case를 사용하여 연결합니다.
- 접두사
- Unique Index : ux
- Full Text Index : fx
- Spatial Index : sx
- 기타 Index : ix
- movies_and_genres 테이블의 genre_id 컬럼에 만든 인덱스
- ix-movies_and_genres-genre_id
[출처]