✔ DataBase Modelling
◾ DataBase Modelling(데이터베이스 모델링)
- 데이터가 존재 하는지 또는 업무에 필요한 정보는 무엇인지 분석하는 방법.
관계형 데이터베이스(RDB)
: 표 개념을 사용하여 데이터를 구성하는 방법.
✔ 개념적 데이터베이스 모델링
1. 개념적 데이터베이스 모델링 기초
- Entity간의 관계를 정의하여 ER-Diagram 정의
- 업무 분석 단계에서 얻은 내용을 토대로 Entity 추출.
- Entity내에 속성(Attribute) 구성.
◾개념적 데이터베이스 순서
- 사용자 부문의 처리 현상 분석.
- 중요 실체와 관계를 파악하여 ERD 작성.
- 실체에 대한 상세 정의.
- 식별자 정의, 식별자 업무 규칙 작성.
- 실체별로 속성 상세화.
- 필요한 속성 및 영역 상세 정의.
- 속성에 대한 업무 규칙 정의.
- 각 단계를 마친 후 사용자와 함게 모델 검토.
◾Entity Relationship (E-R) Diagram 기호
2. 개념적 데이터베이스 모델링 용어
◾속성(Attribute)
- 저장할 필요가 있는 실체에 관한 정보
- 개체(Entity)의 성질, 분류, 술야, 상태, 특성 등을 나타내는 세부 사항.
- 개체에 포함되는 속성의 숫자는 10개 내외로 하는 것이 바람직.
- 최종 DB 모델링 단계를 통해 테이블의 컬럼으로 활용.
- 속성의 유형
기초 속성
: 원래 갖고 있는 속성. 기본적으로 사용되는 속성.
추출 속성
: 기초 속성으로부터 계산(가공)에 의해 얻어질 수 있는 속성.
설계 속성
: 실제로 존재하지 않으나 시스템의 효율성을 도모하기 위해 설계자가 임의로 부여하는 속성.
◾식별자
- 한 개체(Entity) 내에서 인스턴스를 유일하게 구분할 수 있는 단일 속성 또는 속성 그룹.
- 식별자 종류
- 후보키(Candidate Key) : 개체내에서 각각의 인스턴스를 구분할 수 있는 속성. 기본키가 될 수 있는 후보 속성.
기본키(Primary key)
: 개체에서 각 인스턴스를 유일하게 식별하는데 가장 적합한 Key
- 기본키 설정 시 고려 사항 : 실체를 대표할 수 있을 것, 업무적으로 활용도가 높을 것, 길이가 짧을 것 등.
- 대체키(Alternate Key) : 후보키중에서 기본키로 선정되지 않은 속성.
- 복합키(Composite Key) : 하나의 속성으로 기본키가 될 수 없는 경우 둘 이상의 컬럼을 묶어 식별자로 정의하는 경우.
- 대리키(Surrogate Key) : 식별자가 너무 길거나 여러 개의 속성으로 구성되어 있는 경우 인위적으로 추가할 식별자.
◾관계(Relationship)
- 두 Entity간의 업무적인 연관성 도는 관련 사실
- Relationship 분석
- 각 Entity간에 특정한 존재 여부 결정.
- 현재의 관계 뿐만 아니라 장래에 사용될 경우도 고려.
- 관계 설정 순서
- 관계가 있는 두 실체를 실선으로 연결하고 관계 부여
- 관계차수 표현
- 차수성(Cardinality) : 한 실체의 하나의 인스턴스가 다른 실체의 몇 개의 인스턴스와 관련될 수 있는가 정의.(경우에 다라 발생 횟수 조사, 양쪽 방향 모두 조사.)
- 선택성 표시
- 선택성(Optionality) : 선택적인지 반드시 인지 표시.
- 일반적이고 상식적인 선에서 먼저 판단.
- 항상 그 관계를 만족해야만 하는지 파악.
- 관계가 만족되지 않는 경우를 찾아보고 하나라도 만족되지 않는 경우가 있으면 optional로 표시.
- 양쪽 방향 모두 조사.
3. 차수성
◾차수성의 종류
- 1:1(일대일) : 두 실체의 레코드가 서로 하나씩 대응.
- 1:N(일대다) : 부모 실체 하나의 레코드가 자식 실체의 여러 레코드에 대응.
- N:N(다대다) : 양 쪽 실체 간에 여러 개의 레코드와 관계를 맺을 수 있는 경우.
✔ 논리적 데이터베이스 모델링
1. 논리적 데이터베이스 모델링 기초
◾논리적 데이터베이스 모델링
- 개념적 데이터베이스 모델링에서 정의된 ER-Diagram을
Mapping Rule
을 적용하여 관계형 데이터베이스 이론에 입각한 스키마를 설계하는 단계. 필요하다면 정규화 진행하는 단계로 구성.
2. 논리적 데이터베이스 모델링 용어
◾기본키(Primary Key)
- 후보키 중에서 선택한 주 키.
- 널(Null)의 값을 가질 수 없다.(Not Null)
- 동일한 값이 중복해서 저장될 수 없다.(Unique)
◾참조키, 이웃키(Foreign Key)
- 관계를 맺는 두 엔티티에서 서로 참조하는 릴레이션의 attribute로 지정되는 키.
3. Mapping Rule
- ER-Diagram Entity를 관계형 스키마로 변환.
4. 정규화
◾정규화
- Attribute간에 존재하는 함수적 종속성을 분석하여 스키마 구조를 정제하는 과정
- 데이터 중복을 제거하고 속성들을 본래의 제자리에 위치 시키는 것.
- 정규화 종류
◾제1 정규화
- 반복되는 그룹 속성 제거 + 기본키 추가 = 새로운 테이블 생성.
- 기존 테이블과 1:N의 관계를 형성하는 과정.
- 반복되는 그룹 속성 : 같은 성격의 내용의 컬럼이 연속적으로 나타나는 컬럼.
- 정규화 적용 전 테이블 : 부수적인 데이터를 저장하기 위해 기본 데이터 중복.
◾제2 정규화
- 복합키(Composite Primary Key)에 전체적으로 의존하지 않는 속성 제거.
- 부분적 함수 종속을 제거하는 작업
- 부분적 함수 종속 : 복합키의 일부분에 종속되는 것.
◾제3 정규화
- 이행적 함수 종속을 제거하는 작업.
- 이행적 함수 종속 : 기본키에 의존하지 않고 일반 컬럼에 의존하는 컬럼
✔ 물리적 데이터베이스 모델링
1. 물리적 데이터베이스 모델링 기초
◾물리적 데이터 베이스 모델링
- 논리적 데이터베이스 모델링 단계에서 얻은 데이터베이스 스키마를 좀더 효율적으로 구현하기 위한 작업.
- DBMS 특성에 맞게 실제 데이터베이스 내의 개체들을 정의하는 단계.
- Column의 domain 설정(int, varchar, date, ...)
- 데이터 사용량 분석과 업무 프로세스 분석을 통해 효율적인 데이터베이스가 될 수 있도록 인덱스 정의, 상황에 따라 역정규화 작업 수행.
2. 역정규화
◾역정규화(Denomalization)
- 시스템 성능을 고려하여 기존 설계를 재구성하는 것.
- 정규화에 위배되는 행위.
- 테이블의 재구성.
◾역정규화 방법
- 데이터 중복(컬럼 역정규화)
- 조인 프로세스가 많아 시스템의 성능 저하를 가져오는 경우.
- 조인 프로세스를 줄이기 위해 해당 컬럼을 중복함으로써 성능을 향상시키기 위한 방법.
- 파생 컬럼의 생성
- 기본적으로 테이블에 없는 컬럼을 숫자 연산이나 데이터 조작 등을 통해 조회할 때 새로운 정보를 보여주는 경우.
- 판매테이블의 판매금액 컬럼이나 성적 테이블의 총점과 평균.
- 테이블 분리
- 컬럼 기준으로 분리(컬럼수)
- 레코드 기준으로 분리(레코드양)
- 요약 테이블 생성(Summary Table)
- 조회의 프로세스를 줄이기 위해 요약된 정보만을 저장하는 테이블을 만드는 것.
- 테이블 통합
- 분리된 두 테이블이 시스템에 영향을 끼칠 경우 고려.