SQLD 시험준비 (벼락치기) 개념정리 3번째 글
개념정리 1, 2편은 아래 글을 참조
2024 SQLD 시험 준비 - 개념 정리 1편 <데이터 모델의 이해>
1월 말일에 SQLD 시험을 등록하고 한 달이 지났는데 아직 공부 시작을 하지 않았다. 물론 개인적으로 진짜 바쁘긴 했지만, 이렇게 코앞에 다가올 때까지 하지 않을 줄 몰랐다. 사실 사이트에 가서
minbook.tistory.com
2024 SQLD 시험 준비 - 개념 정리 2편 <엔터티, 속성, 관계>
SQLD 시험준비 (벼락치기) 개념정리 2번째 글 첫 번째 글인 정리는 아래를 참고. 2024.03.03 - [일상 기록] - 2024 SQLD 시험 준비 - 개념 정리 1편 엔터티 (Entity) 엔터티 (Entity) 정의 및 개념 데이터의 집합
minbook.tistory.com
식별자
식별자 정의
- 하나의 엔터티에 구성된 여러 개의 속성 중에서 엔터티를 대표하는 속성
- 유일성을 만족하는 속성
- 하나의 엔터티는 반드시 하나의 유일한 식별자를 가지고 있어야 함
- 논리 모델링 <식별자> 물리 모델링 <키/key>
- 예) 고객 엔터티의 주식별자는 고객번호 속성 (논리 모델링) → 고객 테이블의 기본키는 고객번호 컬럼 (물리 모델링)
주식별자 특성
- 엔터티 내 각 인스턴스를 유일하게 구분할 수 있는 구분자
- 다른 엔터티와 관계를 연결하는 식별자
최소성 | 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수 예) 고객번호는 고유 값으로 주식별자가 되기 충분, 굳이 고객번호+이름 등 추가 구성 하지 않아도 됨 |
존재성 | 주식별자가 지정되면 반드시 값이 존재해야 함 예) NULL은 허용되지 않음 |
유일성 | 주식별자에 의해 엔터티 내 모든 인스턴스들을 유일하게 구분해야 함 예) 이름의 경우 동명이인 존재 가능, 고객번호 등 유일한 식별자를 주식별자로 사용 |
불변성 | 주식별자가 한번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함 예) 고객번호가 고정적이지 않고 변동하면 안됨 |
DB 키의 종류
기본키 (Primary Key) | 후보키 중 엔터티를 대표할 수 있는 키 (후보키 중 선정) |
후보키 (Candidate Key) | 유일성 + 최소성 만족하는 키 |
슈퍼키 (Super Key) | 유일성 만족 |
대체키 (Alternate Key) | 후보키 중 기본키 제외하고 남은 키 |
외래키 (Foreign Key) | 여러 테이블의 기본 키 필드 참조 무결성(Referential Integrity)을 확인하기 위해 사용됨 (허용된 데이터 값만 저장하기 위함) |
식별자 분류
대표성 여부에 따른 식별자의 종류
주식별자 | 보조식별자 |
대표성을 만족하는 식별자 | 유일성과 최소성만 만족하는 식별자 |
- 유일성 + 최소성을 만족하며 엔터티를 대표하는 식별자 - 엔터티 내에서 각 인스턴스를 유일하게 구분할 수 있는 식별자 - 타 엔터티와 참조관계를 연결할 수 있는 식별자 |
- 엔터티 내에서 각 인스턴스를 구분할 수 있는 구분자 이지만 대표성을 가지지 못해 참조관계 연결을 할 수 없는 식별자 - 유일성과 최소성 만족, 대표성을 만족하지 못함 |
예) 주민번호 같은 경우 고유 값이지만 여러 이슈 (개인정보 등) 으로 주식별자가 될 수 없음
참고) 식별자 표기법
- IE 표기법: 주식별자는 윗칸에 기술, 보조식별자는 아랫칸에 기술
- Barker 표기법: 주식별자는 #와 함께 표기함
생성 여부에 따른 식별자의 종류
내부 식별자 | 외부 식별자 (외래키) |
- 다른 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자 - 자연스럽게 존재하는 식별자 (~ 본질식별자) |
- 다른 엔터티와 관계를 통해 생성되는 식별자 |
속성 수에 따른 식별자의 종류
단일 식별자 | 복합 식별자 |
하나의 속성으로 구성 | 2개 이상의 속성으로 구성 |
대체 여부에 따른 식별자의 종류
본질 식별자 | 인조 식별자 |
비즈니스 프로세스에서 만들어지는 식별자 | 인위적으로 만들어지는 식별자 Ex) 자동 증가하는 일련번호 같은 형태 |
예)
- 담당 부서 코드 → 부서 식별을 위해 필요한 본질식별자
- 주문번호 → 주문일자, 시간, 상품코드 등을 대신하기 위해 만들어진 인조식별자
주식별자 도출기준
- 업무에서 자주 이용되는 속성
- 같은 식별자 조건을 만족하더라도 업무적으로 더 자주 사용되는 속성을 주식별자로 (Ex: 주민번호 대신 학생번호)
- 이름, 명칭, 내역과 같은 이름을 피함
- 이름 자체를 주식별자로 사용하는 것을 지양 (Ex: 부서명 대신 부서코드)
- 속성의 수를 최대한 적게 구성 (즉, 복합 식별자 지양)
- 일반적으로 7~8개 이상의 주식별자 구성은 새로운 인조식별자를 생성해 모델 단순화 하는 게 좋음
- Ex: 주문 엔터티에 대해, 주문일자, 주문시간, 고객번호, 주문상품카테고리, 등으로 구성 → 주문번호 속성을 추가
관계 간 엔터티 구분
강한 개체 | 독립적으로 존재할 수 있는 엔터티 Ex) 고객 vs 계좌 엔터티 중 고객은 독립적으로 존재할 수 있음 |
약한 개체 | 독립적으로 존재할 수 없는 엔터티 Ex) 위의 예시에서 계좌는 고객에 의해 파생되는 엔터티로 독립 존재할 수 없음 |
식별 관계와 비식별 관계
식별 관계 (Identification Relationship) | - 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계 - ERD 상 실선 표시 Ex) 고객번호는 고객 엔터티, 구매기록 엔터티 에서 기본키 |
비식별 관계 (Non-identification Relationship) | - 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 속성으로 관계를 가짐 - ERD 상 점선 표시 Ex) |
반응형
'일상 기록' 카테고리의 다른 글
2024 SQLD 시험 준비 - 개념 정리 5편 <관계와 조인, 트랜잭션, Null> (0) | 2024.03.08 |
---|---|
2024 SQLD 시험 준비 - 개념 정리 4편 <성능 데이터 모델링, 정규화, 반정규화> (0) | 2024.03.08 |
2024 SQLD 시험 준비 - 개념 정리 2편 <엔터티, 속성, 관계> (0) | 2024.03.03 |
2024 SQLD 시험 준비 - 개념 정리 1편 <데이터 모델의 이해> (0) | 2024.03.03 |
인공지능, 블록체인, 데이터 무료 교육 과정 추천 및 후기 by 서울 ICT 이노베이션 스퀘어 (0) | 2024.02.14 |
댓글