안녕하세요, 똑똑한개발자에서 백엔드 개발을 하고 있는 권창식입니다.
오늘은 데이터베이스 모델의 개념에 대해 소개해드리고 자 합니다.
데이터베이스 모델의 정의
데이터 모델은 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형입니다.
- 데이터 모델은 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건등을 기술하기 위한 개념적 도구들의 모임입니다.
- 현실 세계의 데이터베이스에 표현하는 중간 과정, 즉 데이터베이스 설계 과정에서 데이터의 구조를 논리적으로 표현하기 위해 사용되는 지능적 도구입니다.
데이터 모델의 구성요소
-
개체(ENtitiy) : 데이터베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체입니다.
-
개체의 정의 및 특징
개체는 데이터베이스에서 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체입니다.
- 개체는 실세계에 독립적으로 존재하는 유형, 무형의 정보로서 서로 연관된 몇개의 속성으로 구성됩니다.
- 파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행합니다.
- 영속적으로 존재하는 개체의 집합니다.
- 독립적으로 존재하거나 그 자체로서도 구별이 가능합니다.
- 유일한 식별자에 의해 식별이 가능합니다.
- 개체는 업무 프로세스에 의해 이용됩니다.
- 다른 개체와 하나 이상의 관계가 있습니다.
-
개체 지정 방법
- 일반적으로 해당 업무에서 사용하는 용어로 지정합니다.
- 약어 사용은 되도록 제한합니다.
- 가능하면 단수 명사를 사용합니다.
- 모든 개체명은 유일해야 합니다.
- 가능하면 개체가 생성되는 의미에 따라 이름을 부여합니다.
-
-
속성(Attribute): 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 형식 또는 데이터 필드에 해당합니다.
-
속성의 정의 및 특징
- 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위입니다.
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당합니다.
- 속성은 개체를 구성하는 항목입니다.
- 속성은 개체의 특성을 기술합니다.
- 속성의 수를 디그리(Degree) 또는 차수라고 합니다.
-
속성의 종류
속성은 속성의 특성과 개체 구성 방식에 따라 분류할 수 있습니다.
-
속성의 특성에 따른 분류
-
기본속성
- 업무 분석을 통해 정의한 속성입니다.
- 속성 중 가장 많고 일반적입니다.
- 업무로부터 분석한 속성이라도 업무상 코드로 정의한 속성은 기본 속성에서 제외됩니다.
-
설계 속성
- 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성입니다.
- 업무에 필요한 데이터 외에 데이터 모델링을 위해 업무를 규칙화하려고 속성을 새로 만들거나 변형하여 정의하는 속성입니다.
-
파생 속성
- 다른 속성으로부터 계산이나 변형 등의 영향을 받아 발생하는 속성입니다.
- 파생 속성은 되도록 적은 수를 정의하는 것이 좋습니다.
-
-
개체 구성 방식에 따른 분류
- 기본키 속성(PK) : 개체를 식별할 수 있는 속성입니다.
- 외래키 속성(FK) : 다른 개체와의 관계에서 포함된 속성입니다.
- 기본 속성 : 개체에 포함되어 있고 기본키, 외래키에 포함되지 않은 속성입니다.
-
속성 후보 선정 원칙
속성으로 지정할 후보는 최대한 많이 선택하는 것이 좋으며 선정 원칙은 다음과 같습니다.
- 원시(Source) 속성으로 판된되는 속성 후보는 버리지 않습니다.
- 소그룹별로 속성 후보군을 만들고 가장 근접한 개체에 할당합니다.
-
속성명 지정 원칙
속성명은 웹이나 클라이언트/서버 등 어떠한 환경에서든 사용자 인터페이스에 나타나기 때문에 정확하고 혼란이 없도록 지정해야 합니다.
-
속성명 지정 원칙
- 해당 업무에서 사용하는 용어로 지정합니다.
- 서술형으로 지정하지 않습니다.
- 가급적이면 약어의 사용은 제한합니다.
- 개체명은 속성명으로 사용할 수 없습니다.
- 개체에서 유일하게 식별 가능하도록 지정합니다.
-
-
-
관계(Realationship) : 개체 간의 관계 또는 속성 간의 논리적인 연결을 의미합니다.
-
관계의 정의
- 관계는 개체와 개체 사이의 논리적인 연결을 의미합니다.
- 관계에는 개체 간의 관계와 속성 간의 관계가 있습니다.
-
관계의 형태
- 1:1(One To One) : 개체 집합 A의 각 원소가 개체 집합 B의 원소 한 개와 대응하는 관계입니다.
- 1:N(One To Many) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고 있지만, 개체 집합 B의 각 원소는 개체 집합 A의 원소 한 개와 대응하는 관계입니다.
- N:M(Many To Many) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고, 개체 집합 B의 각 원소도 개체 집합 A의 원소 여러 개와 대응하는 관계입니다.
-
관계의 종류
- 종속관계 : 두 개체 사이의 주, 종 관계를 표현한 것으로 식별 관계와 비식별 관계가 있습니다.
- 중복 관계 : 두 개체 사이에 2번 이상의 종속 관계가 발생하는 관계입니다.
- 재귀 관계 : 개체가 자기 자신과 관계를 갖는 것으로, 순환 관계라고도 합니다.
- 배타 관계 :
- 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계로, 배타 AND 관계와 OR 관계로 구분합니다.
- 배타 AND 관게는 하위 개체들 중 속성이나 구분자 조건에 따라 하나의 개체만을 선택할 수 있고, 배타 OR 관계는 하나 이상의 개체를 선택할 수 있습니다.
-
개념적 데이터 모델
개념적 데이터 모델은 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정입니다.
- 개념적 데이터 모델은 속성들고 기술된 개체 타입과 이 개체 타입들 간의 관게를 이용하여 현실 세계를 표현합니다.
- 개념적 데이터 모델은 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 합니다.
- 대표적인 개념적 데이터 모델로는 E-R 모델이 있습니다.
논리적 데이터 모델
논리적 데이터 모델은 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정입니다.
- 논리적 데이터 모델은 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현합니다.
- 단순히 데이터 모델이라고 하면 놀리적 데이터 모델을 의미합니다.
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용합니다.
- 논리적 데이터 모델은 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분합니다.
논리적 데이터 모델의 품질 검증
논리 데이터 모델 품질 검증은 완성된 논리 데이터 모델이 기업에 적합한지를 확인하기 위해 품질을 검증하는 것입니다.
- 논리 데이터 모델의 품질은 논리 데이터 모델 품질 기준에 따라 개체, 속성, 관계, 식별자, 모델 전반 등에 대하여 검토 체크리스트를 작성하고 체크리스트의 각 항목을 확인하는 방식으로 검증합니다.
- 개체 품질 검증 항목 : 단수 명사 여부, 개체의 주 식별자, 개체 간 상호 배타성, 개체의 정규화 여부, 개체 상세 정의, 개체 관리 업무 기능, 개체에 2개 이상의 속성 존재 여부, 개체의 총 길이, 개체 동의어 여부, 개체 분산 요구 등
- 속성 품질 검증 항목 : 단수 명사 여부, 속성의 값 존재 여부 및 개수, 도메인 정의, 반복되는 속성, 그룹화 가능 속성, 주 식별자 및 비 식별자에 의존하는 속성, 다치종속 속성 등
- 관계 품질 검증 항목 : 관계의 명칭, 2개 이상의 노드와 관계 존재 여부, 노드는 기수성과 선택성, 필수적 관계, 유효한 관계, 중복된 관계, 외부식별자 존재 여부, 참조 무결성 여부 등
- 식별자 품질 검증 항목 : 식별자의 명칭, 정의, 구성, 정합성, 크기, 순서 등
- 전반적인 품질 검증 항목 : 주제 영역 구성의 적절성, 데이터 모델 상에 정규화 여부, 다대다 관계 해소 여부, 이력관리 대상 선정 확인, 이력 관리 방법의 적절성 확인
데이터 모델에 표시할 요소
- 구조(Structure) : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현합니다.
- 연산(Operation) : 데이터베이스에 저정된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구입니다.
- 제약 조건(Constraint) : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건입니다.