안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 6-9. 데이터 무결성 - 데이터 무결성 주의사항을 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 진행할 강좌는 데이터 무결성 참고사항입니다.
TL;DR
데이터 무결성과 시스템 부하, 기본 키와 외래 키 제약의 중요성, 체크 제약과 규칙의 활용, NULL 값과 기본값 사용에 대한 팁, 트리거의 사용 여부와 문제점 등을 다룹니다. 특히 트리거는 제한적으로 사용하며, 모듈화를 위해 저장 프로시저 사용을 권장합니다.
데이터 무결성과 시스템 부하
이미지 - 데이터 무결성 종류와 시스템 부하
트리거를 제외하고는 부하가 거의 없다고 보셔도 됩니다. 선형적인 증가라기보다는 트리거만 트랜잭션으로 처리되기에 차원이 다르게 부하가 높습니다.
기본 키(Primary Key)와 외래 키(Foreign Key) 제약은 거의 모든 테이블에서 사용
참조 무결성의 핵심인 기본 키와 외래 키 조합은 실무에서 거의 모든 테이블에 적용되어 사용될 정도로 중요한 데이터 무결성을 보장하는 데이터베이스의 핵심 기능입니다. 아직 외래 키 사용과 JOIN 구문 사용이 익숙하지 않다면, 천천히 연습을 많이 하시길 바랍니다.
체크(CHECK) 제약과 규칙(RULE)은 애플리케이션에서 주로 수행합니다.
도메인 무결성을 제공하는 체크 제약과 규칙 모두 입력되는 값을 제한하는 훌륭한 기능입니다. 일반적으로 이런 입력값 제약은 대부분 애플리케이션 측에서 수행합니다. 애플리케이션의 프로그래밍 언어에서 제공하는 여러 기능이 이러한 입력 값 검사를 더 쉽고 간편하게 수행할 수 있기 때문입니다. 예를 들어, 웹 애플리케이션이라면, 웹서버에서 입력값을 검사하고 검사 완료된 값을 데이터베이스로 보내는 패턴이 더 효율적입니다. 만약, 레거시 클라이언트/서버 스타일 애플리케이션이라면 당연히 SQL Server에서도 검사를 해야 합니다.
☑️ 챗GPT 활용: 레거시 클라이언트/서버 아키텍처에 대해서 알려줘
NULL값 입력을 허용하지 말고 기본값(DEFAULT)을 사용하세요
기본값을 이용해 가능한 NULL 값을 받지 않는 게 좋습니다. NULL 값 비교는 일반 데이터형과 다르게 처리됩니다. WHERE 절에서 “IS NULL”로 비교하거나, ISNULL() 함수, COALESCE() 함수를 따로 사용하여 복잡도가 높고, 동적 SQL 구문 적용이 어려워집니다. 테이블 디자인 시 항상 NOT NULL로 구성하고, 특수한 케이스가 아니라면 NULL을 허용하지 않고, 기본값을 적극 활용하세요.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.