NOW OR NEVER

[DataBase] 데이터 모델링 과정 & 용어 본문

Back-End/Database

[DataBase] 데이터 모델링 과정 & 용어

LAURA 2022. 5. 2. 16:51
반응형

데이터 모델링

  • 어플리케이션을 개발하기 앞서 먼저 사용자와의 면접을 통하여 사용자의 요구사항을 파악하여 시스템에 필요한 데이터베이스를 먼저 구축해야 한다. 이때 데이터베이스를 구축하기에 필요한 테이블들을 도출하고 또 각 테이블을 어떠한 속성으로 구성되는지 도출하고 또 각 테이블을 어떤 속성으로 관계가 있는지 설계하는 과정을 데이터 모델링이라고 한다.
  • 데이터 모델링의 결과의 산출물 : 테이블 명세서, 인스턴스 명세서, ER다이어그램(테이블과 테이블 사이의 관계를 그림으로 나타냄)

모델링 과정

  1. 요구사항 분석
    • 데이터 모델링을 하기 위해 사용자 면담을 통해 사용자의 요구사항을 기술한다.
  2. 논리적 설계(개체관계 모델)
    • DBMS에 구애받지 않고 설계하는 단계
    • 요구사항 명세서를 기반으로 데이터 모델링 함
    • 업무처리에 필요한 자료와 속성 기술, 자료 간 관계 정의
    • 일반적으로 객체 관계 모델(Entity Relationshipo Diagram) 사용
      • 결정 사항
        • 구조 : 데이터 베이스에 표현 될 대상으로서 개체 타입과 이들간의 관계 명시
        • 연산 : 데이터베이스에 표현된 개체 인스턴스를 처리하는 작업에 대해 명세한 것
        • 제약조건 : 데이터베이스에 허용될 수 있는 개체 인스턴스에 대한 논리적 제약을 명세한 것
    • 속성(attribute) : 필드라고도 불리며 데이터의 가장 작은 논리적인 단위, relation에서 열(컬럼)의 이름
    • 인스턴스(instance) : 구체적인 하나의 예
    • 기본키는 속성에 밑줄 표시
    • 관계 : 개체관의 연관성, 요구사항 명세서에서 동사형으로 표현
    • 도메인: 속성이 취할 수 있는 값들의 집합
    • 튜플 : relation에서 한행
  1. 물리적 설계
    • DBMS를 정해두고 그것에 맞춰서 설계하는 단계
    • 개발에 사용할 데이터베이스를 선정하여 특정 데이터 베이스로 구현될 수 있도록 구체적인 설계하는 과정
    • 산출물 : 테이블 명세
    • 개체 혹은 관계가 다 테이블로 되고 속성은 필드로 된다
    • 각 속성에는 데이터 형식, 제약조건, 인덱스 등 설정
  2. 데이터베이스 구축

정규화

  • 데이터 중복을 최소화하고 최대의 데이터 안정성 확보를 위한 안정석 자료구조로 변환하기 위해 하나의 테이블을 둘 이상으로 분리하는 작업
  • 이상현상을 제거하는 과정
  • 기대효과
    • 자료 저장에 필요한 저장공간을 최소화
    • 자료의 불일치성 최소화
    • 자료의 삽입, 갱신 및 삭제에 따른 이상현상 제거
      • 이상현상은 속성간의 종속관계를 분석하여 여러 개의 관계로 분해하여 해결
      • 데이터가 중복되어 저장되면 삽입, 삭제, 수정 시 이상(anomaly) 현상 발생
      • 삽입이상 : 어떤 데이터 삽입 시 원하지도 않는 불필요한 데이터를 삽입하던지 그렇지 않으면 삽입되지 않는 현상
      • 갱신이상 : 일부의 행에만 값이 변경되어 정보의 모순성이 생기는 현상
    • 자료구조의 안정성 최대화
  • 1차 정규화
    • 반복그룹속성(반복하는 속성의 그룹) 추출
      • 자식개체가 추출되고 반드시 식별 관계이다
      • 자식객체에 주식별자가 추가됨
  • 2차 정규화
    • 주 식별자에 완전 기능 종속되지 않는 속성 추출: 주 식별자에 완전 기능 종속되지 않는 속성은 주식별자가 2개 이상일 때 해당, 2개 중에 하나만 알아도 일반 속성을 결정할 수 있는 것을 말한다.
    • 위를 해소하는 단계가 2차 정규화 이다.
    • 부모 개체가 추출되고 반드시 식별관계여야 한다.
  • 3차 정규화
    • 주 식별자에 이행종속인 속성 추출
      • 주식별자가 아닌 다른 일반속성이 결정자 역할을 하는 것을 해소하는 것이 3차 정규화 과정이다.
      • erwin에서 점선은 비식별관계

개체(entity)

  • 개체 = 테이블
  • 명사로 된 단어 : 대부분의 개체는 명사이다
  • 명사로 된 단어 중 애매모호하거나 확신 없는 단어 버리기, 버린 명사 중 설계단계에서 다시 가져와 개체 설정도 가능
  • 명사 추출 시 정보시스템의 범위 내에서 찾아야 한다.(관련 범위 내에서 의미 없는 명사는 제외시킨다.)
  • 명사된 단어 중 같은 의미로 사용되면서 다르게 표현되는 것은 버리기, 보편적으로 사용되는 단어를 개체로 설정
  • 개체는 여러개의 속성으로 구성되어야 한다.

관계(Relation)

  • 두 개의 테이블의 관계를 맺을 경우 반드시 부모의 주 식별자로 관계 설정

식별관계

  • 부모의 주 식별자가 자식의 식별자로 가는 것
  • 자신의 객체의 식별자를 하나 만들어 2개의 속성이 합쳐져서 주 식별자가 된다. 그래서 2개의 속성이 합쳐져서 주 식별자가 되는 것을 회피하기 위하여 자식 개체에서 유일한 식별자 역할을 하는 순번을 하나씩 두고 일반속성으로 관계 설정하기도 한다.

비식별관계

  • 부모의 주 식별자가 자식의 일반 속성으로 가는 것

부모 자식 구분하는 방법

  • 두 테이블 중 어느 테이블에 레코드가 먼저 들어가는가
  • 최대한 값이 반복이 되지 않게 구성하려 했을 때 두 개의 테이블에 어디에 레코드가 먼저 들어가는 것이 좋은 가를 따지면 된다.
  • 부모 테이블: 먼저 들어가는 레코드
  • 자식 테이블 : 나중에 들어가는 레코드

Tips

 

[DATABASE] 식별과 비식별 관계

ERD를 작성하다보니 테이블간의 관계를 설정할 때 두 테이블의 관계가 식별관계인지 비식별관계인지 판단함에 어려움을 겪었다. 찾아본 여러 참조문서를 종합해 정리해놔야겠다. 우선 앞에 내

velog.io

'Back-End > Database' 카테고리의 다른 글

[DataBase] DB Programming(PL/SQL)  (0) 2022.04.29
[DataBase] View & Index  (0) 2022.04.28
[DataBase] 내장 함수  (0) 2022.04.26
[DataBase] 데이터 조작어(DML) - 명령어  (0) 2022.04.25
[DataBase] 데이터 정의어(DDL)  (0) 2022.04.24
Comments