🌸 기본 키의 구성
고유한 데이터를 식별하기 위해 테이블에는 기본 키가 존재해야 한다.
이때 기본 키를 어떻게 구성하는가에 따라 테이블의 관계를 표현할 수 있다.
크게 3개의 형태에 대해 키를 구성하는 방법에 대해 알아본다.
- 기본 키가 단일 키로 구성될 때(순번)
- 마스터 - 디테일 구조(부모의 순번을 갖고 자식의 순번을 채번)
- 마스터 - 디테일 구조(부모의 순번으로 일련번호를 채번)
1. 기본 키가 단일 키로 구성될 때
위와 같은 테이블이 있을 때, Key 값에 대해 채번을 한다.
1. 삽입할 데이터를 정렬시킨다.
2. 기존 테이블 키값의 Max값을 가져온다.
3. 삽입할 데이터들의 키값을 Max+1 부터 채번한다.
// 위의 테이블의 경우 다음 데이터는 5부터 채번
2. 마스터 - 디테일 구조(부모의 순번을 갖고 자식의 순번을 채번)
1. 삽입할 데이터를 정렬시킨다.
2. 삽입할 데이터의 마스터 키값을 갖는 Row의 Desc키의 Max값들을 가져온다.
3. 각각의 데이터의 Desc키를 Max+1 값부터 채번한다.
// 위의 테이블의 경우 Master 키값이 1인 디테일 테이블의 다음 키값은 (4, 1, null, null, null) 이 된다.
// 위의 테이블의 경우 Master 키값이 2인 디테일 테이블의 다음 키값은 (3, 2, null, null, null) 이 된다.
3. 마스터 - 디테일 구조(부모의 순번을 갖고 자식의 일련번호를 채번)
1. 삽입할 데이터를 정렬시킨다.
2. 삽입할 데이터의 마스터 키값을 갖는 Row의 Serl Max값들을 가져온다.
3. 각각의 데이터의 Serl을 Max+1 값부터 채번한다.
// 위의 테이블의 경우 Master 키값이 1인 디테일 테이블의 다음 키값은 (1, 4, null, null, null) 이 된다.
// 위의 테이블의 경우 Master 키값이 2인 디테일 테이블의 다음 키값은 (2, 3, null, null, null) 이 된다.
써놓고 보니까 2번과 3번은 큰 차이가 없는거 같기도 하다...
채번 시 함수는 ROW_NUMBER() 를 이용한다.
728x90
'# Database' 카테고리의 다른 글
클래스 다이어그램, ERD 예제 (0) | 2022.01.18 |
---|---|
SQL vs NoSQL (0) | 2021.09.27 |
[SQL 구문] 차집합 (LEFT OUTER JOIN 이용) (4) | 2021.04.07 |
[SQL구문] Delete records with table join (0) | 2021.04.07 |
[MS SQL] 월요일 날짜를 리턴하는 SQL (0) | 2021.01.19 |
SELECT 구문 작성 순서, 작동 순서 (0) | 2020.04.01 |
[MS SQL] 날짜 변환표 (0) | 2020.01.20 |