DevJoy
2023. 10. 7. 16:10
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
- 저자
- 한국데이터산업진흥원
- 출판
- 한국데이터산업진흥원
- 출판일
- 2021.03.15
1. 식별자 개념
식별자
- 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자
- 엔터티를 대표하는 속성
- 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 함
2. 식별자의 특징
- 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
- 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않음
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재 (NULL X)
외부 식별자는 참조 무결성 제약 조건에 따른 특징을 가짐
3. 식별자 분류 및 표기법
식별자 분류
식별자 표기법
4. 주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것은 피함 → 일련 번호나 코드 사용
- 속성의 수가 많아지지 않도록 함 → 인조 식별자 생성
5. 식별자 관계와 비식별자 관계에 따른 식별자
식별자 관계와 비식별자 관계의 결정
- 외부 식별자 : 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성, Foreign key
- 자식 엔터티가 외부식별자를 주식별자로 이용할지 부모와 연결되는 속성으로만 이용할지 결정해야 함
식별자 관계
- 자식 엔터티의 주식별자로 부모의 주식별자가 상속되는 경우
- 반드시 부모엔터티가 생성되어야 자신의 엔터티가 생성되는 경우
비식별자 관계
- 부모 엔터티로부터 받은 속성을 주식별자가 아닌 일반 속성으로만 사용하는 경우
- 비식별자 관계에 의한 외부속성을 생성하는 경우
- 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방한 경우
- 엔터티별로 데이터의 생명주기를 다르게 관리할 경우
- 여러개의 엔터티가 하나의 엔터티로 통합•표현되었는데 각각의 엔터티가 별도의 관계를 가질 경우
- 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 경우
식별자 관계로만 설정할 경우의 문제점
- 주식별자 속성이 지속적으로 증가할 수 밖에 없어 개발 복잡성과 오류를 유발하는 요인이 될 수 있다.
비식별자 관계로만 설정할 경우의 문제점
- 자주 조회하는 속성의 경우 불필요하게 부모엔터티까지 찾아가야해서 SQL구문에 많은 조인이 걸리고 그에 따라 복잡성이 증가하고 성능이 저하된다.