과거 DBMS는 이름 길이가 8자, 16자로 제한되는 경우가 많아서 축약어 사용이 거의 필수였다. 지금은 이름 길이 제한이 거의 없고, IDE의 자동완성 기능도 매우 강력하다.
그럼에도 "타이핑이 귀찮다"는 이유로 의미가 모호한 축약어를 쓰면, 시간이 지날수록 의미를 해석하는 비용이 커지고 유지보수성이 떨어진다.
대표적인 문제는 다음과 같다.
auth_status가 인증 상태인지, 권한 상태인지 모호하다.모든 축약어가 나쁜 것은 아니다. 다음 조건을 만족하면 좋은 축약어라고 볼 수 있다.
id, avg, max, min, qty 등desc는 설명(description)과 내림차순(descending)을 모두 떠올리게 하므로 피한다.auth도 author, authentication, authorization 등으로 해석될 수 있어 모호하다.pnl(profit and loss), 쇼핑몰의 sku(Stock Keeping Unit) 등핵심 원칙은 "의심스러우면 축약하지 않는다" 이다.
현실에서는 명확성과 편의성 사이의 균형을 잡는 것이 중요하다.
member 테이블 안에서 member_name, member_email 대신 name, email로 충분하다.id, qty, avg, no, dt 등product_average_rating_point → product_avg_rating 정도로 줄여도 의미가 잘 전달된다.primary_shipping_address_street_and_postal_code 같은 컬럼은, 사실 "주소"라는 개념을 별도 테이블 또는 복수 컬럼으로 분리했어야 할 가능성이 크다.테이블 이름을 단수(singular)로 할지, 복수(plural)로 할지는 오래된 논쟁이다.
members, products, ordersSELECT * FROM members처럼 문장이 자연스럽게 읽힌다는 장점이 있다.