본문 바로가기

프로그래밍/SQLD

SQLD_데이터 모델링의 이해 - 데이터 모델, 엔티티, 속성, 관계, 식별자

반응형

데이터 모델링이란

  • 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
  • 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
  • 데이터베이스를 구축하기 위한 분석/설계 과정

데이터 모델링 유의점

  • 중복
    : 여러 장소의 데이터베이스에 같은 정보를 저장하지 않는다.

  • 비유연성
    : 데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다. 

  • 비일관성
    : 데이터 간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.

개념적 모델 vs 논리적 모델 vs 물리적 모델

  • 개념적 데이터 모델링
    : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행.
    전사적 데이터 모델링, EA 수립시 많이 이용

  • 논리적 데이터 모델링
    : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음.

  • 물리적 데이터 모델링
    : 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계

데이터베이스 스키마 구조 3단계

스키마란 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다.

 

  • 외부스키마
    • 데이터 추상화의 최상위 단계로서 전체 데이터 베이스의 일부분만 기술해 놓는다.
    • 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의 
    • 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용 
    • 하나의 외부 스키마를 여러 개의 응용프로그램이나 사용자가 공용할 수 있음
    • 일반 사용자는 질의어를 사용하여 데이터베이스를 사용
  • 개념스키마
    • 데이터베이스의 전체적인 논리 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만    존재
    • 개체간의 관계와 제약 조건을 나타냄
    • 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의
    • 단순히 스키마라고 한다면 개념 스키마를 의미
    • 기관이나 조직체 관점에서 데이터베이스를 정의 
  • 내부스키마
    • 데이터베이스의 물리적 구조를 정의
    • 데이터 실제 저장방법을 기술 (데이터의 물리적인 설계도)
    • 물리적인 저장장치와 밀접한 계층 (데이터의 저장위치, 데이터의 구조, 파일 구성 및 보안대책 등)
    • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마 

ERD 작성 순서

  1. 엔티티를 그린다.
  2. 엔티티를 적절하게 배치한다.
  3. 엔티티간 관계를 설정한다.
  4. 관계명을 기술한다.
  5. 관계의 참여도를 기술한다.
  6. 관계의 필수여부를 기술한다.

발생 시점에 따른 엔티티 분류

엔티티란 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것이다.

 

  • 기본엔티티 (키 엔티티)
    : 기본엔티티란 그 업무에 원래 존재하는 정보로서 다른 엔티티와 관계에 의해 생성되지 않고, 독립적으로 생성이 가능하고 자신은 타 엔티티의 부모 역할을 하게 된다. 다른 엔티티로부터 주식별자를 상속받지 않고, 자신의 고유한 주식별자를 가짐. 
    ex) 사원, 부서, 고객, 상품 등

  • 중심엔티티
    : 중심엔티티란 기본엔티티로부터 발생되고, 그 업무에 있어서 중심적인 역할을 한다. 데이터의 양이 많거나 다른 엔티티와의 관계를 통해 많은 행위엔티티를 생성한다. 
    ex) 계약, 사고, 예금원장, 주문, 매출 등

  • 행위엔티티
    : 행위엔티티란 두 개 이상의 부모엔티티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가된다. 
    분석 초기 단계에서 잘 나타나지 않으며 설계단계나 프로세스와 상관모델링을 진행하면서 도출된다. 
    ex) 주문목록, 사원변경이력 등

엔티티의 특징

  • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다. 
    ex) 환자, 토익의 응시횟수, ...
  • 유일한 식별자에 의해 식별이 가능해야 한다.
  • 영속적으로 존재하는 인스턴스의 집합이어야 한다. ('한 개'가 아니라 '두 개 이상')
  • 엔티티는 업무 프로세스에 의해 이용되어야 한다.
  • 엔티티는 반드시 속성이 있어야 한다.
  • 엔티티는 다른 엔티티와 최소 한 개 이상의 관계가 있어야 한다.

속성의 특성에 따른 분류

속성은 더 이상 쪼개지지 않는 최소의 데이터 단위이다. 

업무에 필요한 데이터이며, 의미상 더 이상 분리되지 않고, 엔티티를 설명하는 인스턴스의 구성요소가 된다.

 

  • 기본 속성
    : 사원이름, 직책이름, 고용일자 등 가장 일반적인 속성
  • 설계 속성
    : 업무상 필요한 데이터 외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성
  • 파생 속성
    : 다른 속성에 영향을 받아 발생하는 속성으로, 계산된 값들이 여기에 해당한다. 다른 속성에 영향을 받으므로, 영향받는 속성을 알아두어야 하는 등 유의할 점이 많아 가급적 적게 정의하는 것이 좋다.

각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라하며, 엔티티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것이다. 

속성의 명칭 부여

  • 해당업무에서 사용하는 이름을 부여한다.
  • 서술식 속성명은 사용하지 않는다.
  • 약어사용은 가급적 제한한다.
  • 전체 데이터 모델에서 유일성을 확보하는 것이 좋다. 

ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않지만 클래스다이어그램에서는 이것을 구분하여 연관관계와 의존 관계로 표현한다.

엔티티, 인스턴스, 속성, 속성값의 관계

  • 한 개의 엔티티는 두 개 이상의 인스턴스의 집합이어야 한다.
  • 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
  • 한 개의 속성은 한 개의 속성값을 갖는다.

관계의 표기법

  • 관계명
    : 관계의 이름
  • 관계차수
    : 1:1, 1:M, M:N
  • 관계선택사양
    : 필수관계, 선택관계

관계 읽기

  • 기준 엔티티를 한 개 또는 각으로 읽는다. 
  • 대상 엔티티의 관계참여도 즉 개수를 읽는다. 
  • 관계선택사양과 관계명을 읽는다. 

식별자의 종류

  • 엔티티 내에서 대표성을 가지는가에 따라 주식별자와 보조식별자로 구분
  • 엔티티 내에서 스스로 생성되었는지 여부에 따라 내부식별자와 외부식별자로 구분
  • 단일 속성으로 식별이 되는가에 따라 단일식별자와 복합식별자로 구분
  • 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분하기 위해 본질식별자와 인조식별자로 구분

주식별자의 특징

  • 유일성 : 주식별자에 의해 엔티티내에 모든 인스턴스들을 유일하게 구분함
  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
  • 불변성 : 주식별자가 한 번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
  • 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재 (Null 허용 안됨)
반응형

'프로그래밍 > SQLD' 카테고리의 다른 글

[SQLD] 오라클 계층형 쿼리  (0) 2024.02.25
SQLD_DB의 구조  (1) 2023.12.30