SQLD 정규화

정규화

정규화의 가장 쉬운 의미는 데이터 베이스 수행에 있어 성능 향상 전략중에 한가지이다.

데이터 중복제거와 분류를 통해서 입력/수정/삭제 성능을 향상시켜준다. 하지만 계속되는 엔터티의 생성으로 조인이 빈번하게 일어나 데이터 조회 성능은 저하 될수도 있다.

가장 이해하기 쉬운 의미..

  1. 1정규화 : 모든 속성은 하나의 값을 가져야 한다.(반복적이고 같은 의미를 담는 형태가 있어서는 안된다.)
  2. 2정규화 : 모든 속성은 기본키에 종속 되어야 한다.
  3. 3정규화 : 기본키가 아닌 모든 속성간에 서로를 종속 할 수 없다.

예를 들어보자…

주문 테이블
주문번호 (PK)
주문일자
품목코드
품목단가
주문수량
고객번호
고객명

주문이라는 테이블에 주문에 대한 모든 데이터가 들어가있다. 예를 들어 내가 옷 두개를 한번에 주문한다. 그렇다면 데이터는 다음과 같이 저장이 될것이다.

주문번호 주문일자 품목코드 품목단가 주문수량 고객번호 고객명
1 10/17 1 2000 1 1 한주련
1 10/17 2 3000 1 1 한주련

1번이라는 주문번호로 주문한 상품의 수만큼 중복된 컬럼이 존재 하게 될것이다. 이 구조에서는 1정규화가 필요하다. 1번이라는 주문번호가 중복되지 않도록…

주문
주문 번호 (PK)
주문일자
고객번호
고객명
주문품목
주문번호 (FK)
품목코드
품목단가
주문수량

1차 정규화의 결과로 이제 1번이라는 하나의 기본키로 여러개의 상품을 중복없이 식별할 수 있다.

2차 정규화는 주문품목 테이블에서 필요성이 나타난다. 2차 정규화란 복합키로 구성된 (여러개의 PK) 경우 2차 정규화의 대상이 된다 이는 복합키의 일부에만 종속되는 속성이 있을 경우 이 속성을 분리해주는 것이다.

1차 정규화를 마친 주문 품목 테이블에서 품목단가라는 속성은 품목코드라는 키와만 관련이 있고 주문번호와는 관련이 없다 이때 품목단가 속성이 일부 키에만 종속되어 있으므로 해당 속성을 분리해주면 된다.

주문품목
주문번호 (FK)
품목코드 (FK)
주문수량
품목
품목코드 (PK)
품목 단가

2차 정규화를 통해 일부의 종속성을 가진 속성을 분리 해주었다.

마지막 3차 정규화는 일반 속성인 컬럼은 기본키에 의존해야 하는데 일반 속성에 의존하고 있는 속성들을 분리하는 것이다.

주문테이블을 살펴보면 고객명이라는 속성은 기본키인 주문 번호에 종속성을 가지고 있지 않고 고객번호 속성에 종속성을 가지고 있는 상태이다. 따라서 3차 정규화의 대상이 된다.

주문
주문번호 (PK)
주문일자
고객번호 (FK)
화원
회원번호 (PK)
고객명

솔직히 그동안 데이터베이스 설계하면서 정규화에대한 개념을 모르고 한번에 이과정을 수행했는데 그럼 된거 아닌가 싶지만… 시험을 보기위해서 과정을 나열하다보니 내가 해온 과정과 비슷하지만 다른.. 어떤 그런 어려운 느낌…

SQLD 데이터 모델링

데이터 모델링이란?

  • 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
  • 데이터베이스를 구축하기 위한 분석/설계의 과정

모델링

  • 복잡하고 다향한 현상을 표기법에 의해 규칙을 가지고 표기하는 것을 의미한다.
  • 가설적 또는 일정 양식에 맟춘 표현
  • 어떤 것에 대한 에비표현으로 그로부터 최종대상이 구축되도록 하는 계획으로서 기여 하는 것

모델링의 특징

모델링은 추상화, 단순화, 명확화 3가지 특징이 있다.

  1. 추상화는 현실세계를 일정한 형식에 맟추어 표현을 한다는 의미이다.
  2. 단순화는 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법, 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념을 의미한다.
  3. 명확화는 누구나 이해하기 쉽게 대상에 대한 애매모호함을 제거하고 정확하게 표기하는 것을 의미한다.

모델링의 세가지 관점

  1. 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해 모델링 하는 방법
  2. 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링 하는 방법
  3. 데이터와 프로세스의 상관관점 : 업무가 처리하고 있는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링 하는 방법

데이터 모델이 제공하는 기능

  1. 시스템을 현재 또는 원하는 모습으로 가시화하도록 도와준다.
  2. 시스템의 구조와 행동을 명세화 할 수 있게 한다.
  3. 시슽템을 구축하는 구조화된 틀을 제공한다.
  4. 시스템을 구축하는 과정에서 결정한 것을 문서화 한다.
  5. 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공한다.

중요성 및 유의점

  1. 파급효과 : 시스템 구축이 완성되어 가는 과정에서 수많은 단위 테스트가 수행되고 이러한 과정이 반복된다. 이러한 테스트 과정에서 데이터 모델이 변경되는 상황은 프로젝트의 규모가 클수록 문제가 일어난다. 이러한 이유로 데이터 설계는 중요하다.
  2. 복잡한 정보 요구사항의 간결한 표현 : 데이터 모델은 정보요구사항을 파악하기 위해 유용하다.
  3. 데이터 품질 : 데이터로 이용할 수 있는 비즈니스 기회를 얻기 위해 데이터는 필요한 데이터만이 존재 해야 한다.

데이터 모델링의 3단계 진행

데이터 모델링 내용 수준
개념적 데이터 모델링 추상화 수준이 높고 업무 중심적이며 포괄적인 수준의 모델링 추상적
논리적 데이터 모델링 시스템으로 구축하고자 하는 업무에 대하여 key 속성 관계 등을 정확하게 표현
물리적 데이터 모델링 실제로 데이터 베이스에 이식할 수 있도록 설계 구체적

SQLD 속성

속성이란 업무에서 필요로 하고 인스턴스에서 관리하고자 하는 의미상 더이상 분리되지 않는 최소의 데이터 단위이다.

속성의 개념은 다음과 같다.

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

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

  1. 하나의 엔터티는 두개 이상의 속성을 갖는다.
  2. 하나의 엔터티는 두개 이상의 인스턴스의 집합니다.
  3. 하나의 속성은 하나의 속성값을 가진다.

속성의 특징

  1. 업무에서 필요로 하는 정보이다.
  2. 정규화 이론에 의해 정해진 식별자에 함수적 종속성을 가진다.
  3. 하나의 속성에는 한개의 값만을 가지게 해야한다. 하나 이상의 값이 필요하다면 별도의 엔터티로 분리를 하는 것이 좋다.

속성의 분류

  1. 속성에 따른 분류
  • 기본 속성 : 업무로부터 추출한 모든 속성이 여기에 해당된다.
  • 설게 속성 : 업무상 필요한 속성 이외에 데이터 모델링을 위해 업무의 규칙화를 위해 속성을 새로 만들거나 변형하여 정의하는 속성.
  • 파생 속성 : 다른 속성에 의해 영향을 받아 생성되며 보통 계산된 값으로 쓰이는 경우가 많다.
  1. 엔터티 구성 방식
    엔터티를 구별하기 위해 주 식별자로 사용하는 속성을 PK 속성, 다른 엔터티와 관계를 포함한 속성을 FK 속성 나머지 속성을 일반 속성으로 구별한다.

도메인

각 속성이 가질 수 있는 범위를 도메인이라고 하는데 쉽게 이해하기 위해서 속성에 대한 값의 범위, 데이터 타입, 크기, 제약사항을 의미한다.

속성의 명명

  1. 엔터티와 마찬가지로 현업에서 사용하는 이름을 사용한다.
  2. 약어 사용은 자제한다.
  3. 서술식 표현은 자제하며 명사를 사용한다.
  4. 유일한 속성 이름을 지정한다. 이는 반 정규화 적용시 안정적 적용이 가능한 장점을 가진다.

SQLD 엔터티의 개념

엔터티란?

  • 사람, 장소, 물건, 사건, 개념 등의 명사에 해당
  • 업무상 관리가 필요한 관심사
  • 저장이 되기 위한 어떤 것

즉 엔터티란 업무에 필요하며 유용한 정보를 저장하고 관찰하기 위한 집합으로 지속적인 관심을 가지고 있어야 하는 대상이다. 또한 그 대상간의 동질성을 지닌 인스턴스나 그들이 행하는 행위의 집합이다.

엔터티의 특징

  1. 반드시 업무에 필요한 정보여야 한다.
  2. 유일한 식별자에 의해 식별이 되어야 한다.
  3. 영속성으로 존재하는 인스턴스의 집합이다.
  4. 업무 프로세서에 의해 이용되어야 한다.
  5. 반드시 속성이 존재해야 한다.
  6. 다른 엔터티와 최소 한개 이상의 관계를 가지고 있어야 한다.

엔터티의 분류?

엔터티는 자신의 성격, 실체 유형에 따라 구분하거나 업무를 구성하는 모습에 따라 구분이 되고 발생시점에 따라 구분이 가능하다.

  1. 유무형에 따른 분류
    유/무형에 따라 유형, 개념, 사건 엔터티로 구분이 가능하다.
  • 유형 엔터티 : 물리적인 형태가 있고 지속적으로 활용이 가능한 정보 EX) 사원, 물품
  • 개념 엔터티 : 물리적인 형태가 없고 관리해야 할 개념적 정보로 구분이 되는 엔터티 EX) 조직, 보험상품
  • 사건 엔터티 : 업무 수행에 있어 발생되는 엔터티 EX) 주문, 청구, 미납
  1. 발생 시점에 따른 분류
    엔터티의 발생 시점에 따라서 기본/키엔터티, 중심 엔터티, 행위 엔터티로 구분이 된다.
  • 기본 엔터티 : 업무에 원래 존대하는 정보, 다른 엔터티에 의해 생성이 되지 않고 독립적으로 생성이 가능하며 다른 엔터티의 부모 역할 수행이 가능
  • 중심 엔터티 : 기본 엔터티로부터 발생, 업무의 중심적 역할을 수행한다.
  • 행위 엔터티 : 두개 이상의 부모 엔터티로부터 생성 주로 상세 설계 단계에서 도출된다.

엔터티의 네이밍

  • 현업에서 사용하는 이름을 사용한다.
  • 약어 사용은 자제한다.
  • 단수명사를 사용한다.
  • 유일한 이름을 부여한다.
  • 생성 의미에 맞는 이름을 부여한다.