181218 TIL - DB모델링
2018-12-18
요구사항 수집 및 분석
- 업무 요구사항을 수집하고 분석하여 요구사항의 모호성 제거
- 요구명세서(업무기술서) 도출
DB설계
- 개념적 모델링
- 현실 세계에서 나타나는 정보 구조를 추상적으로 개념화하여 나타내는 단계
- 주로 ER모델 사용.
- ERD 도출
- 엔티티,엔티티 식별자,엔티티간 관계, 관계의 대응 수 및 차수,엔터티의 속성 등이 도출됨
- 논리적 모델링
- 사람의 이해를 위한 개념적 설계의 결과를 DB저장이 용이한 논리적 구조로 변환하는 단계
- 주로 관계형 모델이 사용되며, ERD를 테이블 구조도로 변환하는 작업이 이루어짐
- 테이블명,기본키,외래키 등이 정의된다.
- 물리적 모델링
- 논리적 설계 결과를 실제 DBMS의 특성을 고려해 물리적 저장 구조로 변환하는 단계
- 열의 데이터 형식 정의, 제약조건 정의, 인덱스 정의
Crow’s foot model
- 엔티티의 분류
- 유무형에 따른 분류
- 유형 엔티티, 개념 엔티티, 사건 엔터티
- 발생 시점에 따른 분류
- 기본/키엔티티,중심엔티티,행위엔터티
- 유무형에 따른 분류
- 속성의 분류
- 기본 속성: 업무 분석을 통해 바로 정의한 속성
- 설계 속성: 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성
- 파생 속성: 다른 속성으로부터 계산이나 변형되어 생성되는 속성
- 식별자의 특징 : 주식별자의 경우
구분 | 내용 | 예시 |
---|---|---|
유일성 | 주식별자에 의해 앤터티 내 모든 인스턴스들을 유일하게 구분함 | 사원번호가 모든 직원들에 대해 개인별로 고유하게 부여됨 |
최소성 | 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 | 사원번호만으로도 고유한 구조임. 사원분류코드+사원번호로 식별자를 구성하면 부적절 |
불변성 | 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 | 사원번호의 값이 변한다: 이전기록이 말소되고 새로운 기록이 발생한다는 개념 |
존재성 | 주식별자가 지정되면 반드시 데이터 값이 존재해야 함(not null) | 사원번호 없는 직원은 존재하지 않음 |
- 식별자의 분류
- 대표성 여부
- 주식별자: 엔티티 내에서 각 어커런스를 구분 가능. 타 엔터티와 참조관계 연결
- 보조식별자: 각 어커런스 구분 가능, 대표성이 없어 참조관계 연결 X
- 스스로 생성 여부
- 내부식별자: 엔터티 내부에서 스스로 만들어지는 식별자
- 외부식별자: 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
- 속성의 수
- 단일식별자: 하나의 속성으로 구성된 식별자
- 복합식별자: 둘 이상의 속성으로 구성된 식별자
- 대체 여부
- 본질식별자: 업무에 의해 만들어지는 식별자
- 인조식별자: 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자
- 대표성 여부
-
식별자와 비식별자관계
-
외부식별자는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽의 엔터티에 생성되는 속성. DB생성 시 foreign key 역할을 한다.
-
관계의 속성을 정의하고 주식별자를 정의하면 논리적인 관계에 의해 자연스럽게 외부식별자가 도툴되나 중요하게 고려해야 할 사항이 있다.
-
엔터티에 주식별자가 지정되고 엔터티간 관계를 연결하면 부모쪽의 주식별자를 자식 엔터티의 속성으로 내려 보낸다.
-
이때 자식 엔터티에서 부모 엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지, 부모와 연결되는 속성으로서만 이용할 것인지를 결정해야 한다.
-
-
항목 | 식별자 관계 | 비식별자 관계 |
---|---|---|
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | -반드시 부모 엔터티 종속 -자식 주식별자 구성에 부모 주식별자 포함 -상속받은 주식별자 속성을 타 엔터티에 이전 필요 |
-약한 종속관계 -자식 주식별자 구성을 독립적으로 구성 -자식 주식별자 구성에 부모 주식별자 부분 필요 -상속받은 주식별자 속성을 타 엔터티에 차단 필요 -부모쪽의 관계 참여가 선택관계 |
-
슈퍼타입과 서브타입
-
배타적 서브타입 : 슈퍼타입은 최대 하나의 서브타입과 연결됨
-
포괄적 서브타입 : 슈퍼타입은 둘 이상의 서브타입과 연관될 수 있음
-
- 무결성(Integrity)
- 영역 무결성 : 속성 값은 원자성을 가지며, 해당 도메인에서 정의된 값이어야 함
- 키 무결성 : 테이블의 모든 레코드는 서로 식별 가능해야 함
- 엔터티 무결성 : 기본키는 반드시 유일값을 가져야 하며 null이 될 수 없음
- 참조 무결성 : 외래키는 null값이거나, 외래키가 참조하는 테이블의 기본키에 존재하는 값이어야 함
- 사용자 정의 무결성 : 다른 무결성 범주에 속하지 않는 특정 업무 규칙을 정의함
- 키(key)
- 수퍼키 : 테이블 내의 레코드를 유일하게 식별해 낼 수 있는 속성 또는 속성 집합
- 후보키 : 최소성을 갖는 수퍼키, 즉 수퍼키 중 어떤 한 속성이라도 제거하면 수퍼키의 성질을 잃는 경우, 이 수퍼키를 후보키라고 함
- 기본키 : 후보키 중 하나이며, 설계자에 의해 선택됨
- 외래키 : 테이블 A가 테이블B를 참조할 때, 테이블 A의 외래키는 테이블B의 기본키를 참조하는 테이블 A의 속성을 의미함