데이터 모델링(데이터베이스 설계)
는 현실 세계의 개념을 단순화/추상화 시켜서 데이터베이스에 저장하고 관리하기 위한 설계 과정을 의미합니다.
모델링을 제대로 수행해야 데이터베이스 시스템의 사용성, 확장성, 유지보수성, 데이터 무결성을 높일 수 있습니다.
데이터 모델링
은 3단계의 과정을 거치며 수행됩니다.
개념적 모델링 Conceptual Modeling
은 요구사항을 수집하고 분석한 결과를 통해 데이터베이스 시스템에서 다뤄야하는 개체(실체, Entity)
와 개체들 간의 관계(Relation)
을 추상화하는 과정입니다.
추상화 하는 과정에서 ERD (Entity-Relationship Diagram)
를 이용하여 개체들 간의 관계를 나타내게 됩니다.
예를들어 학교 데이터베이스 시스템에서는
학생, 선생님
개체가 존재하고, 학생과 선생님 간의 관계는사제 관계
라는 관계로 얽혀있다고 할 수 있습니다.
이때 각 개체에 대한 핵심적인 속성들 또한 표현합니다. 예를들어 학생의 핵심적인 속성이라고 한다면 이름, 학번, 반 정도를 개념적 모델링 단계에서 표현합니다.
ER 다이어그램
정의 방법은 내용이 좀 많아지는 관계로 다음 포스트에서 따로 다루도록 하겠습니다.
논리적 모델링 Logical Modeling
은 개념적 모델링에서 만들어진 ERD
를 프로젝트에 사용되는 DBMS의 맞춰서 독립적인 구조로 모델링을 구체화하는 과정입니다.
논리적 모델링
의 단계에서는 다음 작업들을 수행합니다.
정규화
는 한 릴레이션에서 발생한 이상현상을 제거하는 과정입니다. 이상현상은 데이터 조작 과정에서 NULL 삽입 등의 데이터가 훼손되는 현상을 의미합니다.
정규화나 이상현상에 대해서는 추후에 따로 다루도록 하겠습니다.
모델링의 마지막 단계인 물리적 모델링 Physical Modeling
은 논리적 모델링의 결과를 DBMS에 실제로 저장하기 위한 물리적 구조를 정의 및 구현하는 단계입니다.
사용하는 DBMS에 맞게 데이터 타입이나 인덱스 등을 고려해서 저장 공간을 고려합니다.
이후 DBMS에 실제로 저장하기 위해 데이터 정의문 DDL
과 프로시저, 트리거 등을 정의합니다.
물리적 모델링
의 결과로 실제로 저장된 DB 스키마를 얻을 수 있습니다.