식별자
식별자
- 엔터티를 대표하는 속성(하나의 엔터티는 반드시 유일한 식별자를 가짐)
- 엔터티 내 각 인스턴스를 유일하게 구분할 수 있는 구분자
- 다른 엔터티와 관계를 연결하는 식별자
주식별자 특징
최소성 | 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수 |
존재성 | 주식별자가 지정되면 반드시 값이 존재 |
유일성 | 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분 할 수 있어야 함 |
분별성 | 주식별자가 특정 엔터티에 지정되면 그 식별자의 값은 (자주)변하지 않아야 함 |
식별자 분류
내부식별자 | 엔터티 내부에서 스스로 생성되는 식별자 |
외부식별자 | 다른 엔터티와 관계로 인하여 만들어지는 식별자 (상속되어 정의된 식별자) |
단일식별자 | 하나의 속성으로 구성된 식별자 |
복합식별자 | 다수의 속성으로 구성된 식별자 ex) (학번+반+번호)로 식별자를 만들 수 있음 -> 복합식별자 |
본질식별자 | 비즈니스 프로세스에서 만들어지는 식별자 |
인조식별자 | 인위적으로 만들어지는 식별자 (중복 데이터 막기 어려워짐) 대체로 본질식별자가 복잡한 구성을 가질때 만들어짐 본질식별자를 사용할때와 비교해 추가적인 인덱스 필요 |
+추가) 식별자 분류체계
대표성 여부 | 주식별자 | - 엔터티 내에서 각 어커런스로 구분할 수 있다 - 타 엔터티와 참조관계를 연결할 수 있다 |
보조식별자 | 엔터티내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결 못함 | |
스스로 생성 여부 | 내부식별자 | |
외부식별자 | ||
속성의 수로 구분 | 단일식별자 | |
다중식별자 (복합식별자) |
||
대체여부로 구분 | 본질식별자 | |
인조식별자 |
주식별자 도출방법
- 주로 사용되는 속성
- 이름/명명된 호칭/길이가 일정하지 않은 내용은 피한다
- 복합키를 구성할 때 너무 많은 속성이 포함되지 않도록 주의
식별자/비식별자 비교
식별자관계 | 비식별자관계 | |
목적 | 강한 연결관계 | 약한 연결관계 |
자식 주식별자 영향 | - 자식 주식별자의 구성에 포함 - 부모 엔터티의 주식별자가 자식 엔터티의 주식별자로 상속 |
- 자식 엔터티의 일반속성에 포함 - 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성으로 상속 |
표기법 | 실선 | 점선 |
연결 고려사항 | - 반드시 부모 엔터티에 종속 - 자식 식별자 구성에 부모 주식별자 포함 필요 - 상속받은 주식별자 속성을 타 엔터티에 이전 필요 - 조인문 최소화하려면 식별자 관계로 연결하는게 좋음 |
- 약한 종속관계 - 자식 주식별자 구성을 독립적으로 구성 - 자식 주식별자 구성에 부모 주식별자 부분 필요 - 상속받은 주식별자 속성을 타엔터티에 차단 필요 - 부모쪽의 관계 참여가 선택관계 |
키의 종류
기본키(Priamry Key) | 후보키 중에서 엔터티를 대표할 수 있는 키 |
후보키(Candidate Key) | 유일성과 최소성을 만족하는 키 |
슈퍼키(Super Key) | 유일은 만족하지만 최소성은 만족하지 않는 키 ex) 복합식별자는 유일성을 만족하지만 최소성을 만족하지 못한다 |
대체키(Alternate Key) | 여러개의 후보키 중에서 기본키를 선정하고 남은 키 |
외래키(Foreign Key) | 타 테이블의 기본키 필드 참조 무결성 제약을 받을 수 있다(참조무결성 확인하기 위해 사용됨) NULL 가능, 하나 이상 생성 가능 |
정규화 & 반정규화
정규화
- 데이터의 일관성, 최소한의 중복, 최대한의 데이터 유연성을 위한 방법
- 데이터를 분해, 엔터티를 상세화 하는 과정(데이터 모델링 독립성 확보)
- 논리적 데이터 모델링 상세화 과정(논리데이터 모델링 수행 시점에서 고려)
- 데이터 이상현상을 줄이기 위한 실제 기법
이상현상
삽입이상 | 행 삽입시 지정되지 않은 속성값이 NULL을 가지는 경우 |
갱신이상 | 데이터 갱신시 일부분의 데이터만 갱신되어 일관성 유지가 않되는 경우 |
삭제이상 | 행 삭제시 원하지 않은 연쇄 삭제가 발생하는 현상 |
정규화 단계
제1정규화 | 테이블 내 속성의 원자성 확보(속성 중복값 제거), 기본키 설정 |
제2정규화 | 기본키가 2개 이상의 속성들로 이루어진 경우 부분 함수 종속성 제거 -> 일반 속성은 주식별자 전체에 종속되어야 한다 |
제3정규화 | 이행적 함수 종속성 제거 -> 기본키를 제외한 컬럼간 종속성 제거(일반 속성들간에는 서로 종속적이지 않음) |
BCNF(강한 제3정규화) | 기본키를 제외하고 후보키가 있는 경우 후보키가 기본키를 종속시키면 분해, 결정자 함수 제거 |
제4정규화 | 여러 컬럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속 제거 |
제5정규화 | 조인에 의한 종속성이 발생되는 경우 분해 |
더보기
* 진부분집합
집합 {1,2} 있을때 진부분 집합은 {}, {1}, {2}, {1,2}
* 완전 함수적 종속
속성 x가 집합 A의 기본키에 종속이지만 집합 A의 일반 속성에는 종속이 아니다
* 부분 함수적 종속
속성 x가 집합 A의 기본키에 종속, 기본키의 진부분 집합의 한 부분에서도 종속
>ex) 집합 A의 기본키: (주문번호, 제품번호)일 때 속성 x가 기본키에 종속이면서 (주문번호)에도 종속
집합 {1,2} 있을때 진부분 집합은 {}, {1}, {2}, {1,2}
* 완전 함수적 종속
속성 x가 집합 A의 기본키에 종속이지만 집합 A의 일반 속성에는 종속이 아니다
* 부분 함수적 종속
속성 x가 집합 A의 기본키에 종속, 기본키의 진부분 집합의 한 부분에서도 종속
>ex) 집합 A의 기본키: (주문번호, 제품번호)일 때 속성 x가 기본키에 종속이면서 (주문번호)에도 종속
정규화 주의사항
- 이전 정규화 만족해야함
- 조인이 많아져 조회 성능 저하로 이어질 수 있다 (단일 테이블 조회시엔 중복이 제거되어 조회 성능이 향상됨)
반정규화 (역정규화)
- 데이터 베이스 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 방법
- 정규화된 데이터 모델을 중복, 통합, 분리하는 모델링 기법
- 조회 속도는 향상시킬 수 있지만 데이터 모델의 유연성은 낮다 (항상 성능을 보장하는 건 아님)
반정규화 필요한 경우
- 조회속도 느려진 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 조회하는 경우
- 요약/집계를 자주 사용하는 경우
반정규화 절차
- 대상파악 및 검토(문제파악): 대량의 범위 처리 및 빈도수, 통계성 프로세스, 테이블 조인수
- 다른 방법 검토: 클리스터링/뷰/인덱스/응용 프로그램/파티셔닝....
- 반정규화 수행: 테이블 반정규화 또는 속성의 반정규화 또는 관계의 반정규화 수행
반정규화 기법
테이블의 반정규화 | - 테이블 병합(1:1, 1:M, 서브/슈퍼타입) - 테이블 분할(수직, 수평) - 테이블 추가(중복, 통계, 이력, 부분) |
컬럼의 반정규화 | 중복칼럼 추가, 파생칼럼 추가, 이력 테이블 칼럼 추가 |
관계의 반정규화 | 중복관계 추가 |
분산 데이터 베이스
데이터 베이스 구조
- 중앙 집중형 데이터 베이스: 한대의 물리적 시스템에 여러 사용자가 접속
- 분산 데이터 베이스: 네트워크로 연결된 달일 데이터 베이스 이미지를 보여주고 분산된 작업
분산 데이터 베이스 투명성
분할 투명성 | 고객은 하나의 논리적 관계가 여러 단편으로 분할되어 각 사본이 여러 시스템에 저장되어 있음을 알 필요가 없다 |
위치 투명성 | 고객이 사용하는 데이터 베이스의 위치를 알릴 필요는 없다 |
지역사상 투명성 | 각 시스템 이름과 무관한 이름을 사용할 수 없다 |
중복 투명성 | 데이터 베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터 일관성이 유지되어야 한다 |
장애 투명성 | 데이터 베이스가 분산되어있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터의 무결성은 유지되어야한다 |
병행 투명성 | 여러 고객의 응용 프로그램이 동시에 분산 데이터 베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없어야한다 |
분산 데이터 베이스 설계 방식
- 상향식: 지역 스키마 작성 후 해당 지역 사상 스키마 작성
- 하향식: 전역 스키마를 생성한 후 지역별로 지역 스키마 생성
분산 데이터 베이스 장/단점
- 장점: 신뢰성, 가용성, 빠르다(병렬처리 수행), 시스템 용량 확장이 쉽다
- 단점: 여러 네트워크를 통해 분리되어 있기 때문에 관리 및 통제가 어렵다, 데이터 무결성 관리 어렵다, 설계 복잡
'공부 > SQLD' 카테고리의 다른 글
SQLD 자격증 2과목 SQL기본 및 활용(개념 + 노랭이) (0) | 2024.03.06 |
---|---|
SQLD 자격증 1과목 데이터 모델링의 이해(개념+노랭이) (0) | 2024.03.02 |