181218 TIL - DB모델링

2018-12-18

요구사항 수집 및 분석

  • 업무 요구사항을 수집하고 분석하여 요구사항의 모호성 제거
  • 요구명세서(업무기술서) 도출

DB설계

  • 개념적 모델링
    • 현실 세계에서 나타나는 정보 구조를 추상적으로 개념화하여 나타내는 단계
    • 주로 ER모델 사용.
    • ERD 도출
    • 엔티티,엔티티 식별자,엔티티간 관계, 관계의 대응 수 및 차수,엔터티의 속성 등이 도출됨
  • 논리적 모델링
    • 사람의 이해를 위한 개념적 설계의 결과를 DB저장이 용이한 논리적 구조로 변환하는 단계
    • 주로 관계형 모델이 사용되며, ERD를 테이블 구조도로 변환하는 작업이 이루어짐
    • 테이블명,기본키,외래키 등이 정의된다.
  • 물리적 모델링
    • 논리적 설계 결과를 실제 DBMS의 특성을 고려해 물리적 저장 구조로 변환하는 단계
    • 열의 데이터 형식 정의, 제약조건 정의, 인덱스 정의

Crow’s foot model

  • 엔티티의 분류
    • 유무형에 따른 분류
      • 유형 엔티티, 개념 엔티티, 사건 엔터티
    • 발생 시점에 따른 분류
      • 기본/키엔티티,중심엔티티,행위엔터티
  • 속성의 분류
    • 기본 속성: 업무 분석을 통해 바로 정의한 속성
    • 설계 속성: 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성
    • 파생 속성: 다른 속성으로부터 계산이나 변형되어 생성되는 속성
  • 식별자의 특징 : 주식별자의 경우
구분 내용 예시
유일성 주식별자에 의해 앤터티 내 모든 인스턴스들을 유일하게 구분함 사원번호가 모든 직원들에 대해 개인별로 고유하게 부여됨
최소성 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 사원번호만으로도 고유한 구조임. 사원분류코드+사원번호로 식별자를 구성하면 부적절
불변성 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 사원번호의 값이 변한다: 이전기록이 말소되고 새로운 기록이 발생한다는 개념
존재성 주식별자가 지정되면 반드시 데이터 값이 존재해야 함(not null) 사원번호 없는 직원은 존재하지 않음
  • 식별자의 분류
    • 대표성 여부
      • 주식별자: 엔티티 내에서 각 어커런스를 구분 가능. 타 엔터티와 참조관계 연결
      • 보조식별자: 각 어커런스 구분 가능, 대표성이 없어 참조관계 연결 X
    • 스스로 생성 여부
      • 내부식별자: 엔터티 내부에서 스스로 만들어지는 식별자
      • 외부식별자: 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
    • 속성의 수
      • 단일식별자: 하나의 속성으로 구성된 식별자
      • 복합식별자: 둘 이상의 속성으로 구성된 식별자
    • 대체 여부
      • 본질식별자: 업무에 의해 만들어지는 식별자
      • 인조식별자: 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자
  • 식별자와 비식별자관계

    • 외부식별자는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽의 엔터티에 생성되는 속성. DB생성 시 foreign key 역할을 한다.

    • 관계의 속성을 정의하고 주식별자를 정의하면 논리적인 관계에 의해 자연스럽게 외부식별자가 도툴되나 중요하게 고려해야 할 사항이 있다.

      • 엔터티에 주식별자가 지정되고 엔터티간 관계를 연결하면 부모쪽의 주식별자를 자식 엔터티의 속성으로 내려 보낸다.

      • 이때 자식 엔터티에서 부모 엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지, 부모와 연결되는 속성으로서만 이용할 것인지를 결정해야 한다.

        1545137222330

항목 식별자 관계 비식별자 관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주식별자 영향 자식 주식별자의 구성에 포함됨 자식 일반 속성에 포함됨
표기법 실선 표현 점선 표현
연결 고려사항 -반드시 부모 엔터티 종속
-자식 주식별자 구성에 부모 주식별자 포함
-상속받은 주식별자 속성을 타 엔터티에 이전 필요
-약한 종속관계
-자식 주식별자 구성을 독립적으로 구성
-자식 주식별자 구성에 부모 주식별자 부분 필요
-상속받은 주식별자 속성을 타 엔터티에 차단 필요
-부모쪽의 관계 참여가 선택관계
  • 슈퍼타입과 서브타입

    • 배타적 서브타입 : 슈퍼타입은 최대 하나의 서브타입과 연결됨

    • 포괄적 서브타입 : 슈퍼타입은 둘 이상의 서브타입과 연관될 수 있음

      1545137501254

  • 무결성(Integrity)
    • 영역 무결성 : 속성 값은 원자성을 가지며, 해당 도메인에서 정의된 값이어야 함
    • 키 무결성 : 테이블의 모든 레코드는 서로 식별 가능해야 함
    • 엔터티 무결성 : 기본키는 반드시 유일값을 가져야 하며 null이 될 수 없음
    • 참조 무결성 : 외래키는 null값이거나, 외래키가 참조하는 테이블의 기본키에 존재하는 값이어야 함
    • 사용자 정의 무결성 : 다른 무결성 범주에 속하지 않는 특정 업무 규칙을 정의함
  • 키(key)
    • 수퍼키 : 테이블 내의 레코드를 유일하게 식별해 낼 수 있는 속성 또는 속성 집합
    • 후보키 : 최소성을 갖는 수퍼키, 즉 수퍼키 중 어떤 한 속성이라도 제거하면 수퍼키의 성질을 잃는 경우, 이 수퍼키를 후보키라고 함
    • 기본키 : 후보키 중 하나이며, 설계자에 의해 선택됨
    • 외래키 : 테이블 A가 테이블B를 참조할 때, 테이블 A의 외래키는 테이블B의 기본키를 참조하는 테이블 A의 속성을 의미함