데이터 모델링(Data Model)

데이터모델링이란

데이터 모델링이란 현실 세계를 데이터베이스로 표현하기 위해 개체(Entity), 속성(Attribute), 관계(Relationship) 등을 구조화하는 작업입니다. 

Entity는 관리 대상 정보의 집합으로 Table을 의미합니다. 

Attribute는 Entity가 가지는 성질로 Entity 안에 종속되어 있습니다.

테이블의 컬럼(Column)을 의미합니다. 

Relationship은 2개 이상의 Entity 연관성을 의미합니다. Foreign key, join이 있습니다. 

현실 세계를 객체로 변환하는 객체지향 방법론의 DB버전이라고 볼 수 있겠네요. 

데이터 모델링을 만들때는 중복되지않고 유연해야하며 일관성이있어야합니다. 

인스턴스와 도메인에 대해서도 정리하고가겠습니다. 

인스턴스는 테이블(Entity)에서 조회된 하나의 Row 데이터입니다. 

도메인은 속성의 데이터 타입 또는 값의 범위를 의미합니다. 속성에 대한 정의서라고 보면 될 것 같네요. 

 

개체(Entity)

특징

반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야합니다. 

유일한 식별자에 의해 식별이 가능해야합니다.

두 개 이상의 인스턴스의 집합이어야합니다.

반드시 속성이 존재해야합니다. 

다른 개체와 한 개 이상의 관계가 있어야합니다. 

표기법

Entity 용어 표기법은 가능하면 현업 업무에서 사용하는 용어를 사용합니다. 

약어를 사용하지 않고 단수명사를 사용합니다.

모든 Entity 통틀어 유일하게 이름이 부여되어야합니다.

마지막으로 Entity 생성의미대로 이름을 부여합니다. 

 

속성(Attribute)

특징

인스턴스에서 관리하고자 하는 더 분리되지 않는 최소의 데이터 단위로 정의합니다.

한개의 속성은 한 개의 속성값을 갖습니다.

두 개 이상의 속성값은 1정규형에 어긋나는 형태로 잘못된 형태입니다.

표기법

업무에서 사용하는 이름을 부여합니다.

서술식 속성명은 사용하지 않습니다.

약어 사용은 가급적 제한합니다.

중복되지 않게 유일성을 확보합니다.

 

관계(Relationship)

 

 

스키마

데이터 모델링을하기위해서는 스키마가 빠질 수 없는데요. 

스키마는 데이터베이스 구조와 제약조건에 대한 정의입니다. 

정리하면 데이터베이스의 뼈대라고 보면 됩니다. 

더 쉽게 풀어보면 데이터 구조에 대한 설계도 입니다. 

스키마 구조는 3단계로 구분되고 각각은 상호 독립적인 의미를 가집니다. (외부, 개념, 내부)

외부스키마는 사용자가 보는 데이터의 일부분 또는 가공된 형태를 의미하는 가상 테이블 입니다. View 라고 표현합니다. 

개념스키마는 데이터 전체 구조의 논리적 설계를 의미합니다.

테이블 관계, 제약조건 등 대표적으로 ERD 있습니다. 

내부스키마는 테이블이 실제로 DB에 저장되는 방식으로 물리적 저장 구조를 나타냅니다. 

Index, Partition 등이 포함됩니다. 

정리하면 외부 스키마는 View, 개념 스키마는 ERD, 내부 스키마는 DB 구조를 의미합니다. 

 

 

정규화

정규화는 데이터 중복과 이상을 방지하기 위해 테이블 구조를 정리하는 과정입니다. 

풀어쓰면 테이블 간에 중복된 데이터를 허용하지 않고 무결성을 유지할 수 있게하는 것 입니다.

 

1정규형(1NF)

모든 속성값이 원자값을 유지해야합니다. 

아래는 비정규형의 데이터인데요. 과목명, 교수명 속성에서 1정규형 위반이 발생했습니다. 

1정규형을 적용하면 아래와 같이 분리됩니다. 

즉 1정규형이 필요한 형태는 속성 값에 2개 이상의 값이 들어간 경우입니다. 

 

2정규형(2NF)

1정규형을 만족하면서 부분 함수 종속을 제거한 형태를 의미합니다. 

부분 함수 종속이란 기본키가 복합키일 때 속성이 기본키의 일부분에만 의존하는 경우입니다. 

풀어쓰면 기본키 2개 이상일 경우 특정 속성이 2개의 기본키에 모두 종속되지 않는 상태를 부분 함수 종속이라고합니다. 

아래에서 복합키는 학번과 과목코드입니다. 

이름 속성의 경우 학번에는 종속되지만 과목코드에는 종속되지 못합니다. 이 때 부분 함수 종속이 발생합니다. 

 

2정규형을 적용한 최종 상태입니다. 

부분 함수 종속이었던 이름 속성을 분리하여 모든 속성은 기본키에 종속되어야한다는 규칙을 지켰습니다. 

 

3정규형(3NF)

3정규형은 2정규형을 만족하면서 이행 함수 종속을 제거한 형태를 의미합니다. 

이행 함수 종속은 속성 A가 B를 결정하고 B가 C를 결정할 때 결과적으로 A가 C를 결정하는 관계입니다. 

아래 예제에서 학번이 학과코드를 결정하고 학과코드가 학과이름을 결정합니다. 

그러므로 학번 -> 학과이름은 이행 함수 종속이라고 볼 수 있습니다. 

아래 예제는 3정규형을 적용하여 분리한 테이블입니다. 

 

 

 

'DB' 카테고리의 다른 글

NoSQL VS RDBMS 무엇이 다를까?  (0) 2025.05.27
SQL 기본 및 활용  (0) 2025.05.27
SQLD 데이터 모델링의 이해  (1) 2025.05.22
인덱스(Index)와 쿼리 속도는 어떤 관계일까.  (0) 2025.02.14
'DB' 카테고리의 다른 글
  • NoSQL VS RDBMS 무엇이 다를까?
  • SQL 기본 및 활용
  • SQLD 데이터 모델링의 이해
  • 인덱스(Index)와 쿼리 속도는 어떤 관계일까.
memoryman
memoryman
memoryman 님의 블로그 입니다.
  • memoryman
    MEMORYMAN STACK
    memoryman
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • Dart (11)
      • Python (2)
      • C# (1)
      • DB (5)
      • Algorithm (1)
      • Project (4)
      • IT (12)
      • .NET (7)
      • Flutter (12)
  • 블로그 메뉴

    • 프로필
    • 방명록
    • 메모장
    • 자소서
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    D
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
memoryman
데이터 모델링(Data Model)
상단으로

티스토리툴바