모델링의 개념 및 특징
- 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적 및 구조화 된 형태로 표현하는 과정
- 데이터베이스의 구조와 관계를 정의하여 데이터의 저장 / 조작 / 관리 방법을 명확하게 정의
1. 단순화(Simplification)
- 현실을 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항을 제거
- 단순화를 통해 복잡한 현실 세계를 이해하고 표현
2. 추상화(Abstraction)
- 현실세계를 일정한 형식에 맞추어 간략하게 표현하는 과정
- 다양한 현상을 일정한 양식인 표기법에 따라 표현
3. 명확화(Clarity)
- 대상에 대한 애매모호함을 최대한 제거하고 정확하게 현상을 기술
- 명확화를 통해 모델을 이해하는 이들의 의사소통을 원활하게 함
데이터 모델링 3가지 관점
데이터 관점 | 말 그대로 데이터의 입장에서 바라보는 관점, 데이터가 어떻게 저장되고 접근되며 관리되는지 정의함 |
프로세스 관점 | 데이터가 시스템 내에서 어떻게 흐르고 변화되는지에 대해 확인 |
데이터와 프로세스 관점 | 특정 프로세스가 어떤 데이터를 사용하는지, 데이터는 어떻게 생성되고 변경되는지를 정의함 |
데이터 모델링 유의점
1. 중복(Duplication)이 일어나면 안된다.
- 한 테이블 혹은 여러 테이블에 동일한 정보를 저장하지 않도록 설계해야 한다.
2. 비유연성(Inflexibility)이 되면 안된다.
- 사소한 변화에도 모델 자체가 변경되지 않도록 유연성 있게 설계해야 한다.
- 예시로, 학생이 수강하는 과목에 대해서 국어, 수학, 영어 등 과목을 컬럼으로 지정하게 되면 새로운 과목이 추가될 때마다 컬럼이 추가된다. 이는 모델 자체가 변경되는 것이니 옳은 설계가 아니며, '과목' 하나의 컬럼을 만들고 인스턴스가 새로 추가되는 형식이야말로 유연한 설계라고 할 수 있다.
3. 비일관성(Inconsistency)이 되면 안된다.
- 데이터베이스 내의 정보가 모순되거나 상반된 내용을 갖게 되선 안되며, 이는 중복을 피하더라도 비일관성이 발생할 수 있기 때문에 데이터간 상호 연관 관계를 명확히 정의하고 품질 관리가 필요하다.
데이터 모델링 3가지 요소
대상, 엔터티 (Entitiy) | 업무가 관리하고자 하는 대상 (객체, 엔터티) - 현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄 - 유일한 식별자에 의해 식별 가능 - 영속적으로 존재하는 2개 이상의 인스턴스의 집합체 - 엔터티는 2개 이상의 속성을 가져야 함 - 업무 프로세스에 의해 이용되어야 함 - 타 엔터티와 최소 1개 이상의 관계가 성립해야 함 |
속성, 컬럼 (Attribute) | 대상이 갖는 속성 (하나의 특징으로 정의될 수 있는 것) - 업무에서 필요로 하는 고유한 성질, 특징을 의미 (컬럼으로 표현할 수 있는 단위) - 정해진 주식별자에 함수적 종속성을 띄고 있어야 함 - 인스턴스로 관리하고자 하는 더 이상 분리되지 않는최소의 데이터 단위 - 한 개의 속성은 1개의 속성 값을 갖는다 (속성의 원자) - 인스턴스를 이루는 구성 요소를 일컫음 (ex. 학생 엔터티의 속성은 이름 / 학번 / 학과번호 등) |
관계 (Realationship) | 엔터티간의 연관성을 나타낸 개념 - 관계를 정의할 때 인스턴스간의 논리적인 연관성을 파악하여 정의함 - 존재적 관계 : 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계 (ex. 부서 엔터티가 삭제되면 사원 엔터티의 존재에 영향을 미침) - 행위적 관계 : 엔터티 간의 어떤 행위가 있는 관계 (ex. 고객 엔터티의 행동에 의해 주문 엔터티가 발생) - 관계의 구성요소는 관계명 / 차수(Cardinality) / 선택성(Optionality)이 있음 - 차수(Cardinality) : 1대1 / 1대N(1대다) / M대N(다대다) (차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식) - 관계의 페어링 : 엔터티 내의 인스턴스가 개별적으로 관계를 가지는 것 (페어링은 두 엔터티 간의 특정한 인스턴스를 설명하고 추가 정보를 제공) |
엔터티의 분류
1. 유형과 무형에 따른 분류
- 유형 엔터티 : 물리적인 형태가 있으며, 안정적이고 지속적으로 사용되는 엔터티 (ex. 사원, 물품 등)
- 개념 엔터티 : 물리적인 형태가 없으며, 관리해야 할 개념적 정보로부터 구분되는 엔터티 (ex. 조직, 보험상품 등)
- 사건 엔터티 : 업무 수행에 따라 발생하는 엔터티로서 발생량이 많고, 통계자료에 이용됨 (ex. 주문, 청구 등)
2. 발생 시점에 따른 분류
- 기본 엔터티 : 태초부터 존재하던 정보로 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성됨. 따라서 타 엔터티의 부모 역할을 할 수 있으며, 자신만의 고유한 주식별자를 가지고 있음 (ex. 사원, 고객, 상품 등)
- 중심 엔터티 : 기본 엔터티로부터 발생되어 해당 업무에서 중심적인 역할을 하는 엔터티. 이 또한 많은 데이터가 발생하고, 다른 엔터티와의 관계를 맺으며 다양한 행위 엔터티를 생성할 수 있음 (ex. 계약, 청구, 매출 등)
- 행위 엔터티 : 2개 이상의 부모 엔터티로부터 발생하는 엔터티 (ex. 주문, 사원변경이력 등)
함수의 종속성
속성은 정해진 주식별자에 함수적 종속성을 가져야 한다
- 한 속성의 값이 다른 속성의 값에 종속적인 관계를 갖는 특징을 말한다.
- A속성의 값에 의해 B속성의 값도 바뀐다면, B는 A에 함수적으로 종속됐다 하고, 이를 수식으로 A → B로 표현됨.
1. 완전 함수적 종속
- 특정 컬럼이 기본키에 대해 완전히 종속될 때를 말한다.
- PK를 구성하는 컬럼이 2개 이상일 경우, PK 값 모두에 의한 종속관계를 나타낼 때
- 제품코드 + 제품명이 PK일 때 유통기한 속성은 두 개의 PK값에 의해 바뀌므로 완전 함수적 종속 관계
2. 부분 함수적 종속
- 기본키 전체가 아니라, 기본키 일부에 대해 종속될 때를 말한다.
- 학생번호 + 과목이 PK일 때 강사 속성은 학생번호가 아닌 과목에 따라 결정되므로 부분 함수적 종속 관계
0. 도메인(Domain)
- 도메인이란, 각 속성이 가질 수 있는 값의 범위를 의미한다.
- 엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것을 말한다.
속성의 분류
1. 속성의 특징에 따른 분류
기본 속성 | - 업무로부터 추출된 모든 속성 - 엔터티에 가장 일반적으로 많이 존재하는 속성 (ex. 원금, 예치기간 등) |
설계 속성 | - 기본 속성 외에 업무를 규칙화 하기 위해 새로 만들어지거나 기본 속성을 변형하여 만든 속성 (ex. 상품코드, 지점코드 등) |
파생 속성 | - 다른 속성에 의해 만들어지며, 일반적으로 계산된 값들이 할당된 속성 - 데이터 정합성을 유지하기 위해 가급적 적게 정의하는 것이 좋음 (ex. 합계, 평균 등) |
2. 엔터티 구성 방식에 따른 분류
- PK(Primary Key, 기본키) : 인스턴스를 식별할 수 있는 속성 (중복과 Null값을 허용하지 않음)
- FK(Foreign Key, 외래키) : 다른 엔터티와의 관계에 포함되어 있는 속성
- 일반 속성 : 엔터티의 일반적인 속성 (PK/FK가 아님)
3. 분해 여부에 따른 속성
- 단일 속성 : 하나의의미로 구성된 경우를 말함 (ex. 회원 아이디는 임의로 분해할 수 없기 때문에 단일 속성)
- 복합 속성 : 여러개의 의미로 구성된 경우를 말함 (ex. 주소는 도, 시, 구 등으로 분해가능하기 때문에 복합 속성)
- 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 경우, 이 경우는 엔터티로 분해해야 함
데이터 모델링의 3단계
개념이 있어야 논리를 세울 수 있고, 세워진 논리는 물리적인 형태를 갖출 수 있다!
1. 개념적 모델링
- 업무 중심적이고 포괄적인 수준을 말한다.
- 추상화 수준이 가장 높으며, 업무에 필요한 핵심 엔터티를 추출하는 단계이다.
- 추출된 엔터티들간의 관계들을 표현하기 위해 ERD를 작성한다.
2. 논리적 모델링
- 개념적 모델링의 결과를 바탕으로 세부속성, 식별자, 관계 등을 표현하는 단계이다.
- 데이터의 구조를 정의하기 때문에 비슷한 업무 혹은 프로젝트에서 동일한 형태를 갖추고 있다면 재사용이 가능한데, 재사용성이 높을수록 유지보수에 용이해진다.
- 데이터 정규화를 수행한다.
3. 물리적 모델링
- 논리 모델링이 끝나면 직접 물리적으로 생성하는 단계이다.
- 데이터 베이스의 성능, 디스크의 저장구조, 하드웨어의 보안성을 고려해야 한다.
- 가장 구체적인 모델링이기 때문에 추상화 수준이 가장 낮다.
0. ERD 작성 절차 (Entity Relationship Diagram)
ERD란? 엔터티와 엔터티 간의 관계(Relationship)를 시각적으로 표현한 다이어그램
- 엔터티를 도출한 후 그리기
- 엔터티 배치하기
- 엔터티 간의 관계를 설정하기
- 관계명을 서술하기
- 관계의참여도 기술하기
- 관계의 필수 여부를 확인하기
식별자 란?
- 하나의 엔터티에 구성된 여러개의 속성 중에 해당 엔터티를 대표할 수 있는 속성을 말한다.
- 엔터티는 하나의 유일한 식별자가 존재해야 한다.
- 식별자는 논리 모델링 단계에서 사용하는 용어이며, 물리 모델링에서는 키(Key)라고 한다.
식별자 분류
대표성 여부에 따른 분류 |
주식별자 (기본키) |
- 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자 - 엔터티 내에서 각 인스턴스를 유일하게 구분할수 있는 식별자 - 타 엔터티와 참조관계를 연결할 수 있는 식별자 |
보조 식별자 (후보키) |
- 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자 - 엔터티 내에서 각 인스턴스를 구분할 수 있지만 참조 관계를 연결할 수 없음 |
|
생성 여부에 따른 분류 |
내부 식별자 | - 타 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자 |
외부 식별자 | - 타 엔터티와의 관계로 인하여 만들어지는 식별자, 즉 외래키(FK) | |
속성 수에 따른 분류 |
단일 식별자 | - 하나의 속성으로 구성 |
복합 식별자 | - 두 개 이상의 속성으로 구성 | |
대체 여부에 따른 분류 |
본질 식별자 | - 원조 식별자 - 비즈니스 프로세스(업무)에서 만들어지는 식별자로 반드시 필요한 식별자 |
인조 식별자 | - 인위적으로 만들어지는 식별자 (꼭 필요하진 않지만 편의성 등의 이유로 만들어짐) - 각 행을 구분하기 위해 사용되며, 자동 증가하는 일련번호와 같은 성질을 띔 - 중복 데이터 발생 가능성이 높아지며 이에 따라 불필요한 인덱스가 낭비되기도 함 |
주식별자 특징
- 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분할 수 있어야 한다.
- 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성되어야 한다.
- 불변성 : 주식별자의 값은 변해선 안되며 항상 고유의 값으로 존재해야 한다.
- 존재성 : 반드시 값이 존재해야 하기 때문에 Null을 허용하지 않는다. (Null - 값이 없음)
주식별자 도출기준
- 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭이나 내역과 같은 이름은 피하는게 옳다. (이 때 마땅한 속성이 없다면 인조 식별자를 만듦)
- 속성의 수를 최소한으로 설정해야 한다.
식별 관계와 비식별 관계
1. 식별 관계 (Identification Relationship)
- 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계
- 식별 관계는 ERD에서 실선으로 표시함
2. 비식별 관계 (Non-identification Relationship)
강한 개체 : 독립적으로 존재할 수 있는 엔터티
약한 개체 : 독립적으로 존재할 수 없는 엔터티
- 강한 개체의 기본키를 약한 개체에선 기본키가 아닌 일반속성으로 관계를 가지는 것을 말함
- 비식별 관계는 ERD에서 점선으로 표시함
정규화
- 최소한의 데이터를 하나의 엔터티에 넣는 식으로 데이터를 분해하는 과정
- 데이터의 일관성, 최소한의 데이터 중복 및 유연성을 위한 과정
- 데이터의 중복을 제거하고 이상현상을 줄이기 위한 데이터베이스 설계 기법
- 논리 데이터 모델링 수행 시점에서 고려되며 제 1 정규화부터 제 5 정규화까지 존재 (보통 제 3정규화 까지 다룸)
0. 이상현상(Abnormality)
정규화를 하지 않아 발생하는 현상으로 삽입이상, 갱신이상, 삭제이상 등이 있다!
- 삽입이상 : 특정 인스턴스가 삽입 될 때 정의되지 않아도 될 속성까지 반드시 입력해야 하는 상황
- 삭제이상 : 특정 정보만 삭제하려 했으나, 연관된 다른 데이터까지 삭제되는 상황
정규화 단계
1. 제 1 정규화 (1NF)
- 테이블의 컬럼이 원자성(한 속성이 하나의 값만 갖는특성)을 갖도록 테이블을 분해하는 단계
- 즉, 하나의 행이 가진 컬럼의값이 반드시 한 값만 입력되도록 행을 분리하는 단계
2. 제 2 정규화(2NF)
- 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해하는 단계
- PK(기본키)가 2개 이상의 컬럼일 경우, 기본키 컬럼의 일부와 종속되는 관계가 존재하면 분리하는 단계
3. 제 3 정규화(3NF)
- 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 단계
- 이행적 종속이란 B가 A에 함수적으로 종속되고, C가 B에 함수적으로 종속된 경우, C가 A에도 함수적으로 종속이 되는 경우가 성립할 때를 말함 (즉, AB와 BC로 분리하는 과정이며 주로 A는 PK상태이다)
- 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음
0. 조인(Join)
- 데이터의 중복을 피하기 위해 테이블은 정규화에 의해 분리되며, 분리된 두 테이블은 서로 관계성을 갖게 된다. 그리고 다시 이 두 테이블의 데이터를 동시에 출력하거나, 관계가 있는 테이블을 참조하기 위해서는 데이터를 연결해야 하는 이 과정을 조인(Join)이라고 한다.
- 계층형 데이터 모델 : 하나의 엔터티 내의 인스턴스끼리 계층 구조를 갖는 경우를 말함 (즉, 셀프조인)
'개인공간' 카테고리의 다른 글
003 :: 발등에 불 떨어진 SQLD 2과목 정리 (0) | 2024.11.10 |
---|---|
001 :: JDK(Java SE 17) 다운로드 및 환경 변수 설정 편집해보기 (0) | 2024.09.10 |