'Database/DB design'에 해당하는 글 7건

ERD

Database/DB design 2007. 7. 11. 17:51
ERD 표기법

ERD 는 각각 업무 분석에서 도출된 엔티티타입과 엔티티타입간의 관계를 이해하기 쉽게 그림으로 표시하는 방법이다.
실제 프로젝트에서는 분석된 엔티티타입과 관계, 속성 정보가 ERD 에 표현된다.


ERD를 작성하는 순서
  1. 엔티티타입을 그린다.
  2. 엔티티타입을 적절하게 배치한다.
    (업무 진행 순서에 따라 엔티티타입을 왼쪽에서 오른쪽, 위에서 아래로 표시)
  3. 엔티티타입간 관계를 설정한다.
  4. 관계명을 기술한다.
  5. 관계의 참여도를 기술한다.
  6. 관계의 필수 여부를 기술한다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

정규화

Database/DB design 2007. 7. 11. 17:50
정규화(Normalization)

다양한 유형의 검사를 통해 데이터 모델을 좀 더 구조화하고 개선시켜 나가는 절차에 관련된 이론.
  • 1차 정규화
    복수의 속성값을 갖는 속성을 분리

  • 2차 정규화
    주식별자에 종속적이지 않은 속성의 분리
    부분 종속(Partial Dependency) 속성을 분리

  • 3차 정규화
    속성에 종속적인 속성의 분리
    이전 종속(Transitive Dependency) 속성의 분리

  • 보이스-코드 정규화
    다수의 주식별자 분리

  • 4차 정규화
    다가 종속(Multi-Valued Dependency) 속성 분리

  • 5차 정규화
    결합 종속(Join Dependency)일 경우는 두 개 이상의 N개로 분리

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,
관계의 종류

정상 관계(Normal Relationship)
엔티티타입과 엔티티타입이 독립적으로 분리되어 있으면서 상호간에 한 가지 관계만 존재하는 형태의 관계이다.
사용자 삽입 이미지
<정상 관계>

자기 참조 관계(Self Relationship, Recursive Relationship)
하나의 엔티티타입 내에서 엔티티와 엔티티가 관계를 맺고 있는 형태의 관계이다.
사용자 삽입 이미지
<자기 참조 관계>

병렬 관계(Parallel Relationship)
엔티티타입과 엔티티타입이 독립적으로 분리되어 있으면서 상호간에 한 가지 관계만 존재하는 형태의 관계이다.
사용자 삽입 이미지
<병렬 관계>

슈퍼타입 서브타입 관계(Super-Type sub-Type Relationship)
슈퍼타입과 서브타입은 1:1 관계 형태로, 서브 타입을 구분하는 방법에 따라 배타적 관계와 포함 관계로 나뉜다.
배타적 관계(Exclusive Relationship)는 슈퍼타입의 특정 엔티티가 반드시 하나의 서브타입에만 속해야 하는 것이고, 포함 관계(Inclusive relationship)는 슈퍼타입의 특정 엔티티가 두 개 이상의 서브타입에 포함될 수 있다.

사용자 삽입 이미지
<슈퍼타입과 서브타입 관계>

주식별자/비식별자 관계(Identifying/Non-Identifying Relationship)
부모 엔티티타입의 주식별자가 자식 엔티티타입의 주식별자로 상속되는 주식별자 관계와 부모 엔티티타입의 주식별자가 자식 엔티티타입의 일반 속성으로 상속되는 비식별자 관계로 구분할 수 있다.
사용자 삽입 이미지
<주식별자 관계 / 비식별자 관계>


엔티티 슈퍼타입과 서브타입을 표시하기 위한 특징
  • 대부분 배타적인 관계지만 촉탁 직원이면서 시간 직원으로 등록하여 별도로 일할 수 있다면 서로 포함 관계로 구분된다고 할 수 있다.
  • 각각의 서브타입은 정확하게 하나의 슈퍼타입에만 속해야 한다.
  • 슈퍼타입과 서브타입 사이에는 서브타입을 구분할 수 있는 구분자가 반드시 있어야 하고, 구분자의 위치는 슈퍼타입의 속성으로 포함된다.
  • 서브타입에 대한 서브타입을 지정할 수 있지만 모델의 복잡성이 증가하므로 삼가한다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,
관계의 개념

관계(Relationship)란 두 개의 엔티티타입 사이의 논리적인 관계, 즉 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 것을 말하고, 데이터 모델에서의 관계란 업무의 흐름을 나타낸다.

관계 패어링

엔티티와 엔티티 사이에 관계가 설정되어 있는 것을 관계 패어링이라고 한다.
엔티티타입은 엔티티의 집합을 논리적으로 표현하였다면 관계는 관계 패어링의 집합을 논리적으로 표현한 것이다.

관계의 명명

각각의 관계에는 두 개의 멤버쉽(Membership)이 있다. 멤버쉽은 엔티티타입이 관계에 대해서 자신이 기준이 되는 관점이다. 엔티티타입에서 관계가 시작되는 편을 관계 시작점(The Beginning)이라 하고, 받는 편을 관계 끝점(The End)이라고 한다. 관계 시작점과 끝점 모두 관계 이름을 가져야 하며 멤버쉽의 성격에 따라 관계 이름이 능동적(Active)이거나 수동적(Passive)으로 명명된다.

사용자 삽입 이미지
<멤버쉽>
  • 애매한 동사를 피하라.
  • 현재형으로 표현하라.

관계의 카디낼리티

두 개의 엔티티타입간 관계에서 참여자의 수를 표현하는 것을 카디낼리티(Cardinality)라고 한다.
가장 일반적인 카디낼리티 표현 방법은 1:M, 1:1, M;N 이다.
카디낼리티를 표시하는 방법은 한 개가 참여하는 경우는 실선을, 다수가 참여하는 경우는 까마귀발 같은 모양으로 그려준다.

1:1(One To One) 관계를 표시하는 방법
한 개의 구매신청서에 대해 한 개의 구매주문을 신청하고 한 개의 구매주문에는 한 개의 구매신청 내용을 작성한다.
사용자 삽입 이미지
<Cardinality - 1:1>

1:M(One To Many) 관계를 표시하는 방법
한 명의 사원은 한 부서에 소속되고 한 부서에는 여러 사원을 포함한다.
사용자 삽입 이미지
<Cardinality - 1:M>

M:N(Many to Many) 관계를 표시하는 방법
하나의 주문서에는 여러 개의 제품을 포함할 수 있고, 한 제품은 여러 개의 주문서를 통해 신청될 수 있다.
사용자 삽입 이미지
<Cardinality - M:N>


관계에 참여하는 방법

필수 참여(Mandatory Membership)
참여하는 모든 참여자가 반드시 타 엔티티타입의 참여자와 연결되어야 하는 관계이다.

선택 참여(Optional Membership)
참여하는 모든 참여자가 반드시 타 엔티티타입의 참여자와 연결되지 않아도 되는 관계이다.
선택 참여된 항목은 물리 속성에서 FK로 연결될 경우 NULL을 허용하는 항목이 된다.
ERD에서 선택 참여관계를 표시할 때 선택 참여하는 엔티티타입쪽을 원으로 표시한다.

사용자 삽입 이미지
<관계 참여도>

하나의 주문목록에는 한 개의 목록을 항상 포함하고 한 목록은 여러 개의 주문목록에 의해 포함될 수 있다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,
식별자 개념

식별자(Identifier)란 여러 개의 집합체를 담고 있는 하나의 엔티티타입에서 각각의 엔티티를 구분할 수 있는 결정자다.
모든 엔티티타입에는 반드시 하나 이상의 식별자가 있어야 한다.
식별자는 데이터베이스로 구현했을 때 데이터 처리 기준이 되는 PK, FK 등의 역할을 수행한다.


식별자 특징

식별자에 의해 엔티티타입 내 모든 엔티티들이 유일하게 구분되어야 한다.
특정 엔티티타입에 식별자가 지정되면 그 식별자는 변하지 않아야 한다.
주식별자의 경우 식별자가 지정되면 주식별자 속성에 반드시 데이터값이 있어야 한다.


식별자 구분

1. 주식별자 / 보조 식별자
주식별자는 엔티티타입의 대표성을 나타내는 유일한 식별자이다.
보조 식별자는 주식별자를 대신하여 보조적으로 엔티티를 식별할 수 있게 한다.
주식별자는 엔티티타입 하나에 한 개인 반면 보조 식별자는 엔티티타입 하나에 두 개 이상일 수 있다.
물리 테이블에서는 주식별자가 PK 역할을 하는 반면, 보조 식별자는 Unique Index 로 지정되어 사용된다.

2. 내부 식별자 / 외부 식별자
내부 식별자는 스스로 생성되어 존재하는 식별자를 말한다.
외부 식별자는 다른 엔티티타입으로부터 관계에 의해 주식별자 속성을 상속받아 자신의 속성에 포함되는 식별자이다.
외부 식별자는 주식별자 영역에 포함될 수도 있고, 일반 속성에 포함될 수도 있다.
외부 식별자는 자신의 엔티티타입으로부터 다른 엔티티타입을 찾아가는 연결자(FK) 역할을 한다.

3. 단일 식별자 / 복합 식별자
주식별자의 구성이 한 가지 속성으로만 이루어진 경우를 단일 식별자라 한다.
두 개 이상의 속성으로 구성된 경우는 복합 식별자라고 한다.

4. 원조 식별자 / 대리 식별자
주식별자의 속성이 복합 식별자일 경우 여러 개의 속성을 묶어 하나의 속성으로 만들어 주식별자로 활용하는 식별자와 주식별자 속성을 일반 속성으로 내리고, 일련번호 형태를 사용하는 경우 주식별자로 사용된 일련번호를 대리 식별자(Surrogate Identifier)라고 한다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,