SQL 테이블 ALIAS 규칙: 가장 효과적인 방법과 장단점 비교

SQL 테이블 ALIAS 규칙은 딱히 표준이라고 할만한 것이 없고, 개발자마다 선호하는 규칙이 많이 다르다. 각 규칙 별 장단점과 어떤 규칙이 제일 추천할만한지 알아보도록 하자.



알파벳 순차 할당

SELECT a.user_id, b.order_date FROM users a JOIN orders b ON a.user_id = b.user_id JOIN products c ON b.product_id = c.product_id;

장점

1. ALIAS명 만들 때 고민이 전혀 안된다.
2. ALIAS명이 짧기 때문에 쿼리가 짧아지고, 간결해진다.

단점

1. 테이블 수가 늘어나면 이 ALIAS가 어떤 테이블의 ALIAS인지 구분하기 어렵다.
2. 테이블 추가/삭제 시 알파벳 순서가 애매해진다.

나의 의견

제일 많이 보이는 방법이지만 내가 제일 싫어하는 방법이기도 하다.

a, b, c 정도 까지는 보기도 괜찮고, ALIAS명 고민하지 않아도 되서 좋지만 e, f, g, h, i 정도 까지 가면 지옥이 펼쳐진다.

SQL을 작성하다가 "e가 무슨 테이블이었지?" 하고 다시 확인하고 오고, "f는 무슨 테이블이었지?" 하고 또 확인하고 오고...

SQL에서 참조하는 테이블 수는 언제든지 늘어날 수 있기 때문에 이 방법은 되도록 쓰지 않아야 한다고 본다.


각 단어 첫 글자 사용

SELECT ui.user_name, od.order_date FROM user_info ui JOIN order_details od ON ui.user_id = od.user_id;

장점

1. 테이블 이름과 관련이 있기 때문에 기억하기 쉽다.
2. 길이도 적당하고, 간결하다.

단점

1. 테이블 이름이 길면 ALIAS명도 복잡해진다.
2. 테이블 이름이 비슷하면 ALIAS명이 같을 수도 있어서 뒤에 추가적인 구분자를 붙여야 한다. (실무에서 꽤 자주 발생함)

나의 의견

한 때 제일 좋아했던 방법이지만 이 방법을 선호하지 않는 개발자들도 많은 것 같다. 테이블 이름이 비슷하면 ALIAS명도 같아지는 경우가 많기 때문에 이 방법도 되도록 쓰지 않아야 한다고 본다.


ALIAS 사용하지 않음

SELECT users.user_id, orders.order_date FROM users JOIN orders ON users.user_id = orders.user_id;

장점

1. 테이블 이름이 ALIAS명이기 때문에 명확하다.
2. ALIAS명 만들 때 고민이 전혀 안된다.

단점

1. 쿼리가 너무 길고, 복잡해진다.
2. 가독성이 심각하게 떨어진다.

나의 의견

지금까지 딱 한 번 봤다...


테이블 이름 축약 또는 의미 있는 약어 사용

SELECT cust.name, ord.amount FROM customers cust JOIN orders ord ON cust.id = ord.customer_id;

장점

1. 테이블 이름과 관련이 있기 때문에 기억하기 쉽다.
2. 길이도 적당하고, 간결하다.

단점

1. ALIAS명 정할 때마다 고민이 많이 된다.
2. 일관성을 지키기 힘들다. (어떤 쿼리에서는 cust, 어떤 쿼리에서는 cus... 등)

나의 의견

단점이 너무 치명적이긴 하지만 이 방법이 제일 좋다고 생각한다.



결론

제일 중요한 것은 어떤 방법을 쓰든 간에 표준은 명확히 정하고 시작해야 한다는 것이다. 표준 없이 각자 하고 싶은 데로 하는 곳이 너무 많다.
내가 권장하는 방법은 "테이블 이름 축약 또는 의미 있는 약어 사용", "각 단어 첫 글자 사용" 둘 중 하나를 표준으로 잡아서 하는 것이다.

AI 친구들에게도 의견을 물어봤다.
1. DeepSeek(R1, DeepThink) : 테이블 이름 축약 또는 의미 있는 약어 사용
2. Claude(3.7 Sonnet Extended Thinking) : 테이블 이름 축약 또는 의미 있는 약어 사용, 각 단어 첫 글자 사용
3. Gemini(2.0 Pro) : 각 단어 첫 글자 사용
4. ChatGPT(4o) : 각 단어 첫 글자 사용
5. Grok(3, DeepSearch) : 테이블 이름 축약 또는 의미 있는 약어 사용

다행히 AI 친구들도 나랑 의견이 비슷하다.


댓글 쓰기

다음 이전