데이터 모델링은 어떻게 하는가?
데이터베이스 모델링을 진행할 때는 완결성과 중복을 최소화 해야 한다.
정규화 과정을 통해 이런 모델링을 만들어 낼 수 있다.
# 데이터 모델링
- 현실 세계의 존재하는 개체에 대한 특성과 특징을 파악해서 특성화 시킨다.
- 개체들 사이의 관계성을 파악해서 구체화 시켜나가는 과정을 의미한다.
- Ex)
학생 : {성명, 학번, 학과, 주민번호, 전화번호 ...}
교수 : {성명, 교수번호, 전공, 전화번호, 주민번호 ...}
개체들은 모두 식별할 수 있는 정보가 존재한다.
- 개체정의 : 현실 세계에서 개체를 정의하는 단계
- 식별자 정의 : 각 개체를 식별하기 위해 특성화 하는 단계
- 상세화 : 각 개체를 구체화 하는 단계(스키마)
- 통합 : 개체와 개체 사이의 관련성을 파악해서 전체를 통합하는 단계
- 검증 : 실제 맞는지 검증
# 정보 모델링 vs 데이터 모델링
- 정보 모델링 : 현실 세계의 개체 요소를 추상화 시켜 사람이해할 수 있는 형태로 정보 구조를 만드는 과정
- 데이터 모델링 : 정보 모델링 과정에서 생성된 정보 구조를 컴퓨터가 이해할 수 있는 형태의 논리적 구조(데이터 구조)로 만드는 과정
# 데이터 모델의 개요
- 데이터베이스 설계 과정에서 데이터의 구조를 표현하기 위해 사용되는 도구
- 개념적 데이터 모델Conceptual Data Model) : 속성들로 기술된 개체타입과 개체간 관려를 이용해 현실세계를 표현하는 방법
- 논리적 데이터 모델(Logical Data Model) : 필드로 기술된 데이터 타입들 간의 관계를 이용해 현실 세계를 표현하는 방법
-가장 많이 쓰이는 개념적 데이터 모델은 E-R모델이며, 논리적 데이터 모델은 관계형 데이터 모델RDM이다.
# 데이터 모델의 구성 요소
- 데이터의 논리적 구조 Structure
- 개체 인스턴스를 처리하는 연산 Operation
- 개체 인스턴스에 대한 논리적 제약 사항 Constraint
# 개체 관계 모델 Entity-Relatiohnship Model
- 개체 타입과 관계 타입을 이용해서 현실세계를 개념적으로 표현한 모델
- 개체 : 학생, 강사, 자동차
- 관계 : 대여행위, 수강행위, 운전행위 등을 의미한다.
# 비디오가게 개체관계모델 예시
# 논리적 데이터 모델
- 논리적 단계에서 쓰이는 도구. 개념적 단계에서 만들어진 개념적 구조를 컴퓨터에 저장할 수 있는 논리적 구조로 변환하고자 쓰이는 데이터 모델이다.
- 관계형 데이터 모델, 계층 데이터 모델, 네트워크 데이터모델로 구분되지만, 관계형 데이터 모델을 가장 많이 사용한다.
- 관계데이터는 테이블로, 계층 데이터 모델은 트리 구조로 , 네트워크는 그래프 구조로 나타낸다.
# 관계형 데이터 모델
- 통일적이고 단순한 데이터 구조
- 릴레이션(표, 테이블) 구조로 운영되는 데이터베이스다.
- 기본키(Primary Key)와 이를 참조하는 외래키(Foreign Key)로 구분된다.
# 계층형 데이터 모델(Hierarchical Data Model)
- 데이터 간의 관계를 트리 형태로 나타낸다.
- 속성간 관계를 레코드로, 레코드 간의 관계를 링크로 나타낸다.
- 모든 링크의 관계는 1:n의 관계를 가진다.
- 두 레코드 타입 간의 관계는 하나의 링크 관계만 있을 수 있으므로 별도의 이름을 부여하지 않는다.
- 레코드 타입 간에는 상하 계층이 존재한다.
# 네트워크 데이터 모델
- 데이터 간 관계는 그래프 구조 형태로 나타낸다.
- 1에 해당하는 레코드 타입을 오너 레코드 타입(Owner Record Type)
- n에 해당하는 레코드 타입을 멤버 레코드 타입(Member Record Type)이라고 한다.
- 화살표를 이용해서 레코드 타입간의 관계를 나타낸다.
- 링크는 어느 한쪽 방향으로 반드시 함수적 관계로 해서 화살표로 나타난다.
# 관계 스키마(Relation Schema) 설계
- 데이터베이스 설계에서 중요한 사항 중 하나가 현실 세계를 가장 정확하게 표현하기 위한 데이터의 논리적 구조를 결정하는 것을 의미한다.
- 관계 스키마 설계 원칙
1. 필요한 속성, 개체, 관계성을 식별하여 릴레이션을 구성한다.
2. 불필요한 데이터의 중복이 발생되지 않도록 한다.
3. 속성 사이의 관계성과 데이터의 종속성을 고려하여 설계한다.(기본키를 고려한다.)
4. 효율적 데이터 처리와 일관성 유지 방법등을 고려하여 설계한다.
- 스키마 변환(Schema Transformation) : 관련된 Attribute를 수집하고 이들간 존재하는 종속성을 파악하여 Attribute 집합인 릴레이션으로 만든 다음 보다 바람직한 형태의 릴레이션들로 다시 변환하는 과정을 의미한다.
# 이상현상 Anomaly
- 관계 DB가 잘못되면 불필요한 데이터 중복을 초래하게 된다.
1) 삭제이상 : 임의의 레코드를 삭제했을 때 관계를 형성하고 잇는 관계성까지 모두 삭제되는 현상을 의미한다. 이 회원의 유일한 정보를 잃어버리게 된다.
2) 삽입이상 : 임의의 레코드를 삽입할 때 삽입의도가 없는 관계까지도 삽입되는 현상을 말한다. Null(컴퓨터 메모리가 할당 될때 최초에 아무것도 가지지 않는 값)이 채워진다.
3) 갱신이상 : 임의의 데이터를 갱신할 때 관계를 맺고 있는 데이터에 대해 일관성을 유지할 수 없는 현상
# 함수 종속(Functional Dependency)
- nice한 릴레이션 설계를 위한 정형적 기준으로 속성의 의미와 속성 상호간의 관계에서 유도되는 일종의 제약조건이다.
- Primary Key가 종속되는 값들간의 관계를 정의하는 것이다.
- 표현 : 결정자 -> 종속자
- 정규화는 분해가 핵심이다. 큰 규모로 되어 있는 릴레이션들을 세부적으로 쪼개서 다시 조립하는 과정에서 우수한 릴레이션을 만드는 과정이다.
# 정규화(Normalization)의 개념
- 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해 나가는 과정이다.
- 정규형이란 특정 조건에 만족하는 릴레이션 스키마의 형태를 의미한다.
- 기본키와 종속키를 하나의 단위로 묶어서 나눌 수 있을 때 까지 나누는 것이다.
- 모는 릴레이션이 중복되지 않고, 삽입이상, 삭제이상, 갱신이상 문제를 발생시키지 않고, 효과적인 연산을 위해 진행한다.
- 자료 저장공간 최소화
- 자료 불일치 최소화
- 자료구조 안정화
- 자료 이상화 현상 방지
# 정규화 과정
# 제 1 정규형 (First Normal Form : 1NF)
- 릴레이션의 R에 속한 모든 도메인이 원자값만으로 되어 있다면 제 1 정규형에 속한다.
- 도메인은 속성에 들어간 값 자체를 의미한다.
- 분해할 수 없는 값을 원자값 이라고 한다.
# 제 2 정규형 (Second Normal Form : 2NF)
- 릴레이션 R이 제 1 정규화에 속하고 기본키에 속하지 않는 모든 속성이 기본키에 완전 함수적 종속이면 제 2 정규형에 속한다.
- 아래 그림은 부분 종속을 보여준다.
- 아래 그림은 학번+과목번호가 되어야 학년 성적을 구분할 수 있다.
- 위 그림을 종속화 하기 위해서는 아래처럼 정규화를 진행해야 된다.
- 기본값이 종속값에 대한 완전 함수적종속성을 가지고, 이상현상을 방지할 수 있다.
- 성적 테이블 한개 만들고, 학년 테이블을 하나 만들어 2개의 테이블로 나누어야 하는 것이다.
# 제3정규형 (Third Normal Form : 3NF)
- 릴레이션 R이 제2정규화에 있으면서 기본키에 속하지 않는 모든 속성들이 기본키에 이행적 함수 종속이면 제 3정규형에 속한다.
- 아래 릴레이션은 지도 테이블에 학번, 지도교수, 학과가 들어있지만, 이행적 함수종속이 되지 않은 상태다.
- 위 릴레이션을 제3정규화시키면 다음과 같다.
- 학번이 정해지면 지도교수가 정해진다.
- 지도교수가 정해지면 지도교수의 학과가 정의된다.
- 즉 지도 및 지도교수 모두 이행적 함수 종속 형태를 띄고 있어 제3정규화라 할 수 있다.
# 보이스 코드 정규형(Boyce-Code Normal Form : BCNF)
- 비 결정자에 의한 함수 종속 관계를 해결하는 것이다.
- 모든 속성이 모든 후보키에 대해 만족할 만한 종속 관계를 유지시키는 것을 의미한다.
- 고정적인 릴레이션에 문제가 생길 경우 추가적인 테이블을 추가해서 정규화하는 방법이다.
# 제4정규형(Four Normal Form : 4NF)
-릴레이션 R에 비당연 MVD(Multi Value Dependency) A->>B가 존재할 때 R의 모든 속성도 A에 함수 종속이면 릴레이션 R은 제 4정규형에 속한다.
- 다중치 종속을 제거하는 과정이다.
# 제5정규형(Five Normal Form : 5NF)
- 릴레이션 R에 존재하는 모든 조인종속(JD)이 릴레이션 R의 후보키를 통해서만 성립되면, 릴레이션 R은 제5정규형 또는 PJ/NF(Projection-Join Normal Form)에 속한다.
- 분해를 통해서 정규화를 진행했지만, 불필요한 튜플이 새로 생긴다면 새로운 테이블을 만들어서 완전한 릴레이션을 만들어내는 과정이다.
# 데이터베이스 설계시 유의사항
- 저장된 데이터가 연산 수행 후 무결성이 유지되도록 설계해야 한다.
- 시스템 장애 발생시 복구 가능하도록 회복 + 예비절차 염두(항상 백업을 염두해두어야 한다.)
- 외부로 부터 불법적인 접근을 방지하도록 보안 절차 유의 설계해야 한다.
- 데이터 관리에 대한 효율성과 일관성이 유지되도록 설계해야 한다.
- 데이터베이스의 확장과 축소에 대비한 신축성을 고려하여 설계해야 한다.
# 데이터베이스의 설계 순서
- 요구조건 분석 : 개체의 속성, 관계, 트랜잭션 유형, 실행 횟수 파악
- 개념적 설계 단계 : 개념 스키마 모델링(전체 사건)과 트랜잭션 모델링(개별사건)을 병행
1) 개념 스키마 모델링 : 요구 분석 단계에서 나온 결과(명세)를 E-R 다이어그램과 같은 DBMS에 독립적이고 고차원적인 표현기법으로 기술하는 과정을 의미한다.
2) 트랜잭션 모델링 : 요구조건 분석결과로 식별된 응용을 검토하고, 이들을 구현할 수 있는 트랜잭션을 고차원 명세로 구분하는 것
- 논리적 설계 단계 : 개념적 설계를 바탕으로 DBMS이 어떤 모델을 지원하는지 파악 하여 그 지원 모델에 일치하게 논리적 데이터 모델로 변환시키는 단계, 대부분 관계형 데이터베이스를 가진다.
1) 트랜잭션에 대한 인터페이스를 설계하고,
2) 설계에 논리적 데이터 모델을 이용하고,
3) 스키마에 대한 평가 및 정제 작업이 이뤄진다.
- 물리적 설계 단계 : 논리적 설계를 바탕으로 물리적으로 구현가능하도록 여러 파일 타입에 대한 저장 레코드의 양식, 순서등을 정의한다.
1) 저장될 레코드의 양식 설계
2) 레코드들의 분포 및 집중에 관한 설계
3) 접근 경로 설계
- 물리적 설계 시 유의사항
1) 응답시간 : 트랜잭션을 실행시키기 위해 시스템에 입력하여 결과가 나올 때 까지 소요되는 시간
2) 저장 공간 효율화 : 데이터베이스 구축에 필요한 모든 파일과 구조들을 저장하기 위한 최소한으 효율적 공간설계
3) 트랜잭션 처리도 : 단위 시간에 데이터 베이스 시스템이 처리할 수 있는 평균 트랜잭션의 수
4) 인덱스, 스키마 변경여부, 트랜잭션 수행속도 향상, 트랜잭션 갱신 및 참조 성향 검토
'Programming > Database' 카테고리의 다른 글
postgres Database # Primary Key (0) | 2021.10.24 |
---|---|
postgres Database 명령어 (0) | 2021.10.22 |
postgreSQL in windows BASIC TUTORIAL (0) | 2021.10.22 |
Database #4 Relation Database (0) | 2021.10.21 |
Database #2 데이터베이스 시스템 DBMS system (0) | 2021.10.20 |
Database #1 정보시스템 (0) | 2021.10.20 |
댓글