목차
모델링이란?
모델링은 여러가지로 표현할 수 있다. 건축 모델링일 수도 있고 석고 모델링일 수도 있고 3D 모델링을 떠올릴 수 있다.
이렇게 다양한 분야의 모델링 공통 분모를 찾아보면 공통적으로 '설계'나 '디자인', '형상'이라는 단어들이 존재한다.
데이터베이스의 모델링은 '현실 세계를 단순화하여 표현하는 기법'이다. |
예를 들어, 고객이 물건을 주문한다고 하자. 이상황을 도식화하면 어떻게 될가? 고객, 물건(상품), 그리고 주문하는 행위로 나눠진다.
우리가 머리속으로 생각하면 매우 단순하지만 우리가 물건을 주문하는 현실 세계를 위의 그림과 같은 모델로 만듦으로써 모델링이 된다.
따라서 모델링의 모델은 이처럼 현실 세계에서 일어날 수 있는 다양한 현상(일)에 대해서 일관성 있는 표기법으로 표현해 놓은 모형이라고 보면된다.
모델링의 특징
- 추상화(Abstraction)
흔히들 현실 세계를 일정한 형식으로 표현하는 것이다. 또는 아이디어나 개념을 간략하게 표현하는 과정이라고들한다. - 단순화(Simplification)
복잡한 현실 세계를 정해진 표기법으로 단수하고 쉽게 표현한다는 의미라고 하는데 단순화는 복잡한 것을 더 쉽게 이해하고 사용할 수 있도록 불필요한 요소를 제거하고 간소화하는 과정으로 마치 복잡한 수식을 간단한 식으로 바꾸는 것과 같다. - 명확화(Clarity)
불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미인데 더 쉽게 말하면 명확화는 모호함이나 혼란을 제거하고 명확하고 이해하기 쉬운 상태로 만드는 과정으로 마치 흐린 사진을 선명하게 하는 것과 같습니다.
데이터베이스의 모델링은 '현실 세계를 추상화, 단순화, 명확화하여 데이터베이스 시스템에 적합한 형태로 표현하는 과정'이다. |
모델링에서 본 세 가지 관점
데이터베이스 모델링에서 세 가지 주요 관점인 데이터 관점, 프로세스 관점, 데이터와 프로세스의 상관 관점은 데이터베이스 설계 및 구현을 이해하는 데 중요한 역할을 한다. 이를 통해 데이터베이스 시스템이 어떻게 작동하고 어떻게 사용되는지를 포괄적으로 이해할 수 있다.
- 데이터 관점(What, Data)
데이터 위주의 모델링으로 무엇을 저장할 것인가에 대한 질문을 다룬다. 예를들어 어떤 데이터들이 업무와 얽혀있고 그 데이터간에는 어떤 관계가 있는지에 대해서 모델링하는 방법이다.
엔터티(Entities) : 현실 세계나 객체나 개념을 의미한다. 예를들어 고객, 제품, 주문 등이 엔터티가 될 수 있다.
속성(Attributes) : 엔터티가 가지는 특성으로 예를들어, 고객 엔터티는 이름, 주소, 전화번호 등의 속성을 가질 수있다.
관계(Relationships) : 엔터티 간의 연관성을 나타내는데 예를 들어 고객이 주문을 한다는 관계가 있다.
데이터 모델을 통해 데이터의 구조를 명확하게 정의하고, 이를 기반으로 데이터베이스 스키마를 설계하고 효율적인 데이터 저장 및 검색을 가능하게 한다. - 프로세스 관점(How, Process)
프로세스 위주의 모델링으로 데이터베이스 내에서 데이터를 처리하고 활용하는 방법에 중점을 두는데 어떻게 데이터를 처리할 것인가에 대한 질문을 다룬다.
프로세스(Processes) : 데이터 처리 절차를 의미하는데, 예를 들어 주문 처리, 결제 처리, 재고 관리 등이 프로세스가 될 수 있다.
활동(Activities) : 각 프로세스 내에서 수행되는 구체적인 작업으로 예를 들어, 주문 처리 프로세스에는 주문 접수, 결제 확인, 배송 준비 등이 포함.
워크플로우(Workflow) : 활동들의 순서와 흐름을 나타낸다. 한마디로 데이터가 어떻게 흐르고 처리되는지를 시각화한다.(그냥 그림 그린다~)
프로세스 모델을 통해 데이터베이스가 어떻게 작동하고, 데이터를 어떻게 처리할 것인지를 정의하며 시스템의 기능적 요구사항을 충족시키고, 데이터의 효율적 처리를 보장한다. - 데이터와 프로세스의 상관 관점(Data vs Process, Interaction)
데이터와 프로세스 관계를 위주로 한 모델링으로 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법이다.
데이터 흐름(Data Flow) : 데이터가 프로세스를 통해 어떻게 이동하고 변환되는지를 나타낸다. 예를들어, 주문 데이터가 주문 처리 프로세스를 거쳐 결제 데이터로 변환되는 과정을 의미한다.
데이터 의존성(Data Dependency) : 프로세스가 데이터를 필요로하는 정도를 나타낸다. 예를 들어, 재고 관리 프로세스는 제품 데이터에 의존한다.
통합 모델(Integrated Model) : 데이터 모델과 프로세스 모델을 결합하여 전체 시스템의 동작을 이해하는데 도움을 준다.
데이터와 프로세스의 상호작용을 명확히 정의하여 시스템의 통합적 관점을 제공하며, 이는 데이터 무결성을 유지하고, 시스템의 효율성과 일관성을 보장한다.
데이터의 품질(데이터의 신뢰도, 정확성 등을 나타내는 척도)을 보장하기 위해 데이터 모델링 시 중복, 비유연성, 비일관성을 조심해야한다. | |
중복(Duplication) | 같은 데이터가 여러 엔터티에 중복으로 저장되는 현상을 지양해야하는데, 더 쉽게 말하자면 중복은 동일한 데이터가 여러 장소에 중복 저장되는 것을 의미한다. 데이터베이스에서는 불필요한 데이터 복제를 말한다.
|
비유연성(Inflexibility) | 데이터 모델이 변화하는 요구사항에 쉽게 적응하지 못함을 말한다. 그 이유는 데이터 모델이 수시로 변경되어야 하는 상황이 생길 수 있는데 이런 상황은 시스템을 유지보수하는 데에 어려움을 가중시키기 때문이다.
해결책: 데이터 모델링 시 미래의 요구사항 변화를 고려하여 유연한 구조를 설계하고 이를 위해 객체 지향 모델링(Object-Oriented Modeling)이나 ERD(Entity-Relationship Diagram)를 통해 추상화 수준을 높이고, 모듈화된 구조를 채택한다. |
비일관성(Inconsistency) | 데이터의 중복이 없는 경우에도 비일관성이 발생할 수 있다. 개발자가 다른 데이터와의 연관성을 고려하지 않고 일부 데이터만 변경할 수 있기 때문이다. 즉, 비일관성은 데이터가 서로 다른 값이나 형식으로 저장되어 일관성이 없는 상태를 의미하며 이는 동일한 데이터가 여러 곳에 서로 다르게 저장된 경우 발생한다.
|
모델링의 세 가지 단계
데이터베이스 모델링은 데이터의 구조를 정의하고 체계화하는 과정이다. 이 과정은 세 가지 주요 단계로 나눌 수 있다. 개념적 데이터 모델링, 논리적 데이터 모델링, 물리적 데이터 모델링. 각 단계는 데이터베이스 설계의 다른 측면을 다루며, 데이터베이스의 효율적이고 일관된 동작을 보장하기 위해 필요하다
- 개념적 데이터 모델링(Conceptual Data Modeling)
개념적 데이터 모델링은 사용자 요구사항을 반영하여 데이터의 구조를 추상화하는 과정으로 전사(회사 전체 차원의)적 데이터 모델링 수행 시 행해지며 추상화 레벨이 가장 높은 모델링이다.
엔터티 : 현실 세계의 객체나 개념을 모델링한다.
속성 : 각 엔티티의 특성을 나타낸다.
관계 : 엔티티 간의 연관성을 나타낸다.
목표: 사용자와 데이터베이스 설계자 간의 소통을 원활하게 하고, 시스템 요구사항을 명확히 정의하여 이를 통해 데이터베이스 설계의 기초를 구축한다.(ERD (Entity-Relationship Diagram)과 같은 다이어그램을 사용하여 시각적으로 표현) - 논리적 데이터 모델링(Logical Data Modeling)
논리적 데이터 모델링은 개념적 모델을 기반으로 데이터베이스의 논리적 구조를 정의하는 과정으로 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계이다.
테이블 (Tables): 엔터티를 테이블로 변환한다.
컬럼 (Columns): 속성을 컬럼으로 변환한다.
키 (Keys): 데이터의 고유성과 무결성을 보장하기 위한 기본 키 (Primary Key)와 외래 키 (Foreign Key)를 정의한다.
제약 조건 (Constraints): 데이터 무결성을 유지하기 위한 규칙을 설정한다.
목표: 데이터베이스의 논리적 구조를 명확히 정의하여 데이터의 저장, 조회, 업데이트 등의 작업이 효율적으로 이루어지도록 하며, 이 단계에서는 데이터의 논리적 관계와 구조를 구체적으로 설계한다.(ERD를 확장하여 논리적 모델로 전환하거나, UML (Unified Modeling Language) 등을 사용) - 물리적 데이터 모델링(Physical Data Modeling)
물리적 데이터 모델링은 논리적 모델을 기반으로 실제 데이터베이스 시스템에 데이터를 저장할 구조를 정의하는 과정으로 이는 특정 DBMS에 종속적이며, 데이터의 물리적 저장 방법을 상세히 정의한다. 실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계이다.
테이블 스키마 (Table Schema): 실제 테이블과 컬럼을 생성하고, 데이터 타입을 지정한다.
인덱스 (Indexes): 데이터 검색 속도를 향상시키기 위해 인덱스를 설정한다.
저장소 구조 (Storage Structures): 데이터 파일의 물리적 저장소 구조를 정의한다.
파티셔닝 (Partitioning): 데이터의 물리적 분할을 통해 성능을 최적화한다.
목표: 데이터베이스의 성능, 보안, 저장 효율성을 최적화하며, 물리적 모델은 데이터의 실제 저장 방식과 접근 방법을 구체적으로 설정하여 데이터베이스 시스템이 효과적으로 작동하도록 한다.
데이터의 독립성
- 내부 단계(internal level)
내부 스키마(internal schema)를 가지며, 내부 스키마는 데이터베이스의 물리적 저장 구조를 기술한다.
내부 스키마는 물리적 데이터 모델을 사용하고 데이터 저장 구조의 세부 사항과 데이터베이스에 대한 접근 경로들을 제공한다. - 개념 단계(conceptual level)
개념 스키마를 가지며, 개념 스키마는 모든 사용자들을 위한 전체 데이터베이스의 구조를 기술한다. 개념 스키마는 물리적 저장 구조의 세부 사항을 은폐시키고, 엔티티, 데이터 타입, 관계, 사용자 연산, 제약 조건들을 나타내는 데 중점을 둔다. 데이터베이스 시스템이 구현될 때 개념 스키마를 나타내기 위해서 일반적으로 표현 데이터 모델이 사용된다. - 외부 단계(external level)
뷰 단계라고도 불리는 외부 단계는 외부 스키마나 사용자 뷰들을 포함한다. 각 외부 스키마는 특정 사용자 그룹이 관심을 갖는 데이터베이스의 부분을 기술하고, 그 사용자 그룹에게 데이터베이스의 나머지 부분을 은폐시킨다. 이전 경우와 마찬가지로 각 외부 스키마는 일반적으로 표현 데이터 모델을 사용하여 구현된다. 기능하면 고수준 데이터 모델에서 외부 스키마 설계를 기반으로 한다.
이러한 3단계 스키마 아키텍처는 사용자가 데이터베이스 시스템 내에서 스키마 단계들을 시각화하는 데 편리한 수단이다.
그리고 이 세 개의 스키마는 단지 데이터에 대한 기술임을 주의해야한다. 실제의 데이터는 물리적 단계에만 위치한다.
논리적 데이터 독립성(Logical Data Independence)과 물리적 데이터 독립성(Physical Data Independence)은 데이터베이스의 3단계 아키텍처에서 각각 다른 사상(mapping)과 관련이 있다. 이 3단계 아키텍처는 외부 단계(External Level), 개념 단계(Conceptual Level), 내부 단계(Internal Level)로 구성되어 있으며, 이들 간의 사상(mapping)을 통해 데이터의 독립성을 보장한다.
논리적 데이터 독립성 (Logical Data Independence)
정의: 논리적 데이터 독립성은 데이터베이스의 개념적 스키마(논리적 구조)가 변경되더라도 외부 스키마(사용자 관점의 구조)와 응용 프로그램에 영향을 미치지 않는 특성을 의미. 이는 개념적 단계와 외부 단계 간의 독립성을 보장.
관련 사상: 외부/개념 사상 (External/Conceptual Mapping)
- 외부 단계는 사용자나 응용 프로그램이 데이터를 보는 관점을 나타내며, 여러 개의 외부 스키마가 존재할 수 있다.
- 개념 단계는 데이터베이스의 전체 논리적 구조를 나타낸다.
- 외부/개념 사상은 외부 스키마와 개념 스키마 간의 매핑을 정의합니다. 이를 통해 개념적 구조의 변경이 외부 스키마에 영향을 미치지 않도록 한다.
예시:
- 새로운 테이블이나 속성을 추가하거나, 테이블 간의 관계를 재정의하는 경우.
- 이러한 변경은 개념 스키마에서 일어나며, 외부 스키마는 이를 통해 그대로 유지.
물리적 데이터 독립성 (Physical Data Independence)
정의: 물리적 데이터 독립성은 데이터베이스의 내부 스키마(물리적 저장 구조)가 변경되더라도 개념 스키마(논리적 구조)에 영향을 미치지 않는 특성을 의미합니다. 이는 내부 단계와 개념 단계 간의 독립성을 보장한다.
관련 사상: 개념/내부 사상 (Conceptual/Internal Mapping)
- 내부 단계는 데이터가 실제로 저장되는 물리적 구조를 나타낸다.
- 개념 단계는 데이터베이스의 전체 논리적 구조를 나타낸다.
- 개념/내부 사상은 개념 스키마와 내부 스키마 간의 매핑을 정의하며, 이를 통해 물리적 구조의 변경이 개념 스키마에 영향을 미치지 않도록 한다.
예시:
- 인덱스를 추가하거나 삭제하거나, 데이터 파일의 위치를 변경하는 경우.
- 이러한 변경은 내부 스키마에서 일어나며, 개념 스키마는 이를 통해 그대로 유지.
결론
논리적 데이터 독립성은 외부/개념 사상(External/Conceptual Mapping)과 관련이 있으며, 이는 개념적 스키마가 변경될 때 외부 스키마가 영향을 받지 않도록 한다. 물리적 데이터 독립성은 개념/내부 사상(Conceptual/Internal Mapping)과 관련이 있으며, 이는 내부 스키마가 변경될 때 개념 스키마가 영향을 받지 않도록 한다. 이러한 독립성을 통해 데이터베이스 시스템은 변화하는 요구사항에 유연하게 대응하고, 유지보수와 관리가 용이해진다.
ERD(Entity Relationship Diagram)
시스템에 어떤 엔티티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램이다.
1.ERD 표기방식
'SQL > SQLD' 카테고리의 다른 글
#6 정규화(Normalization) (2) | 2024.12.06 |
---|---|
#5 데이터 모델링(식별자) (0) | 2024.07.15 |
#4 데이터 모델링(관계) (0) | 2024.07.09 |
#3 데이터 모델링(속성) (0) | 2024.07.08 |
#2 데이터 모델링(엔티티) (0) | 2024.07.04 |