1. 이상

  • 중복된 데이터 때문에 데이터에 의도하지 않은 현상이 발생되면 이를 이상현상이라고 한다.
  • 이상 현상에는 삽입 이상, 갱신 이상, 삭제 이상이 존재한다.

- 삽입이상

  • 릴레이션에서 새로운 인스턴스를 삽입할 때 발생하는 데이터 이상 현상이다.
  • 인스턴스 삽입 시 기존의 상품이라도 상품번호, 상품명, 단가를 모두 추가해 주어야 한다. -> 불필요한 정보를 함께 저장해야 한다 -> 중복
  • 주문이 아닌 상품을 추가하기 위한 인스턴스 추가일 경우 주문번호나 주문 수량이라는 불필요한 속성의 값도 추가하여야 한다.

- 갱신이상

  • 릴레이션에서 속성의 값을 업데이트할 때 발생하는 데이터 이상 현상이다.
  • 반복된 데이터 중에 일부만 수정하면 데이터의 불일치가 발생한다.
  • 상품명이나 단가와 같은 속성의 값들이 변경될 경우 같은 상품은 빠짐없이 모두 수정해 주어야 한다.

- 삭제 이상

  • 릴레이션에서 인스턴스를 삭제할 때 발생하는 데이터 이상 현상이다.
  • 유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능하다.
  • 주문 내역을 삭제하려고 할때 관련 상품도 같이 소멸되어 상품 자체가 사라져 버리게 된다.

 

= > 데이터가 잘 쪼개져있어야 한다. -> 정규화


논리 모델

  • 개념 모델을 상세화하는 작업으로 전체 속성을 도출하고 도출되지 않은 대부분의 엔티티들과 관계들을 도출하는 단계이다.
  • 정규화(Normalyzation)를 진행하는 단계이다.

 

논리 모델의 목적

  • 업무에 대해 충분히 의견을 교환하고 반영하여 진행하는데 도움을 준다.
  • 중복값을 제거하여 이상(Anomaly)현상을 제거하기 위해 속성간에 종속관계를 확인하고 엔터티를 분할한다.

 

논리 모델의 주의 사항

  • 업무 요건을 빠짐없이 정확하게 반영해야 한다.
  • 더 이상 삭제할 엔터티나 속성은 없어야 한다.
  • 주 식별자에 있어 효율성에 따라 인조 식별자를 채택할지에 대해 결정한다.
  • 지나치게 성능 문제를 해결하려고 하지 않는다.

정규화

정규화이 목적

  • 중복 데이터를 제거하여 안정성과 확장성을 도모한다.
    • 안정성: 함수 종속을 기반으로 데이터의 성격에 맞는 엔터티가 도출되어 모델 구조를 정의할 수 있다.  ->이상 현상이 없다.
    • 확장성: 데이터의 정체성이 그대로 반영되어 업무가 수정되거나 추가 되더라도 엔터티에 반영하기가 수월해 진다.

 

함수 종속 -> 밑에 예시를 통해 이해한다.

  • 릴레이션 내에 존재하는 속성 간의 종속성을 의미한다.
  • 대표 속성(식별자)이 나머지 속성을 유일하게 식별할 수 있다면 대표 속성과 나머지 속성 사이에는 연관관계가 성립하고 이것을 함수 종속이라고 한다.
  • 속성 간의 종속성을 나눌 때 기준이 되는 결정자(Determinant)와 결정자의 값에 의해 유일하게 식별될 수 있는 값을 종속자(Dependent)라고 한다.
  • 속성 Y가 속성 X에 의해 함수적으로 종속됨을 표현한 것이다.

  • 속성 X의 값을 이용해 속성 Y의 값을 유일하게 식별할 수 있다는 의미로 X의 값에 대해 Y의 값이 오직 하나만 연관되어 있음을 의미한다.

정규화의 종류

=>제 3정규화까지 고려해도 충분하다.

 

1 정규형(1NF)

  • 모든 속성은 반드시 하나의 값을 가져야 한다.(속성은 원자값을 지녀야 한다.)
  • 다가 속성(Multivalued Attributes)과 복합 속성(Composite Attributes)에 대해 판단하여 처리한다.
    • 다가 속성: 하나의 인스턴스에 하나의 속성이 여러 값을 가지게 되는 속성
    • 복합 속성: 여러 속성이 하나의 속성으로 묶여있는 속성

다가 속성과 관련된 1 정규형 처리 방법

  • (1)의 경우와 같이 속성을 추가해서 인스턴스별로 하나의 속성에 하나의 값이 들어갈 수 있게 할 수 있다. 다만 이렇게 처리할 경우 속성의 갯수가 더 적을 경우가 많거나 추가한 속성의 수보다 많은 값은 처리할 수 없다. 속성이 한정적이고 제한적으로 존재할 때 처리할 수 있는 방법이다.
  • (2)의 경우와 같이 엔터티를 따로 추출해서 1대 다 관계로 처리할 수 있다. 새로 생성된 엔터티의 인스턴스들을 구분하기 위해 속성들을 모두 식별자(복합키)로 활용하는 경우이다. (인스턴스의 구분 기준을 고려하여 식별자를 선정)
  • -> 두 개를 묶어서 pk를 만들어야 유일성이 성립된다. 불빌요한 컬럼 X

  • (3)의 경우는 (2)에서 추가적인 속성으로 인조식별자를 추가하여 인스턴스를 구분하고 나머지 속성은 비식별자로 처리하는 경우이다. 
  • -> 위 처럼 묶고 싶지 않을 경우 인조적인 식별자 추가. pk관리 수월함

복합 속성과 관련된 1정규형 처리 방법

  • 주소라는 속성은 여러 속성이 하나로 묶인 복합속성의 의미가 될 수 있다.
  • 업무상 주소를 구분해서 사용하고자 하는 경우가 많을 때 속성을 구별하며 되려 하나의 주소로 다룰 때가 많을 때는 속성을 구분해서 사용하는 것이 좋지 않다.

 

 

2 정규형(2NF)

  •  식별자 중에 하나의 식별자에만 종속되는 속성이 있다면 분리한다.
  • 후보 식별자 속성과 일반 속성 간의 종속성을 판단하여 처리한다.

 

3 정규형(3NF)

 

  • 이행적 종속성(Transitive Dependency)을 제거하고 일반 속성 간에 종속관계가 없도록 처리한다.
  • 일반 속성에 결정자 속성과 종속자 속성이 있는 경우 다른 엔터티로 구별하여 분리한다.

01 교육학개론 2 -> 여러 강사가 개설할 수가 있음.

 

'LECTURE > DB Modeling' 카테고리의 다른 글

개념 모델  (0) 2023.01.31
ERD  (0) 2023.01.31
DB Modeling 개요  (0) 2023.01.31

ERD를 통한 개념 모델링

  • 요구분석 단계에서 정의된 핵심적인 엔터티와 엔터티의 주요 속성을 도출하고 엔터티 간의 관계를 도출하여 ERD를 생성하는 단계이다.
  • 데이터의 범위나 구조를 용이하게 파악할 수 있는 상위 수준의 ERD 형태이다.

 

개념 모델의 목적

  • 요구사항을 이해관계자들(사용자, IT담당자, 개발자, 모델러 등)이 이해할 수 있도록 데이터로 간결하게 표현하는 것이다.
  • 대규모 프로젝트에서 개발자가 업무의 큰 틀을 잡는 데 도움을 준다.
  • 개발 프로젝트 뿐 아니라 시스템의 유지, 보수에 있어서도 유용하게 사용할 수 있다.

 

개념 모델이 주의 사항

  • 이해 관계자들 사이에서 충분한 의사소통을 통해 구체적이고 명확하게 해석이 다르지 않도록 도출해야 한다.
  • 관계형 데이터 모델인 개념 모델에서는 데이터만을 대상으로 표현해야 한다.
  • 논리 모델링 기간의 1/3 정도에 해당하는 적지 않은 기간을 소요해서라도 충분한 의사소통이 필요하다.
  • 복잡성에 빠지지 말아야 한다.

 

 

 

'LECTURE > DB Modeling' 카테고리의 다른 글

논리 모델  (0) 2023.02.01
ERD  (0) 2023.01.31
DB Modeling 개요  (0) 2023.01.31

ERD - Entity Realtionship Diagram 개체-관계 모델 : 구조화된 데이터에 대한 이련의 표현

 

엔터티 Entity

업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유,무형의 사물(개체)

업무 분석 단계 이후, 분석 자료(업무 기술서, 인터뷰 자료, 장부와 전표 등..)들로 부터 엔터티를 도출한다.

- 엔터티 도출 원칙

  • 업무의 관심 대상이 되는 사물이어야 된다.
  • 두 개 이상의 인스턴스를 소유해야 한다.
  • 데이터의 정체성이 분명해야 한다.
  • 데이터 종속성에 의해서 하나의 주제만을 관리하는 정의가 명확한 모델이어야 한다.
  • 엔터티의 인스턴스를 식별할 수 있는 식별자(Identifier)가 존재해야 한다.
  • 동일한 성격의 데이터는 유일해야 한다.
  • 엔터티 명은 관리하고자 하는 데이터의 성격(주제)을 가장 잘 표현하는 이름으로 한다.

- 엔터티의 종류

1. 실체 엔터티

  • 보이는 물체의 본질적인 성격을 관리하는 엔터티이다.
  • 수표, 사원, 창고, 제품, 고객, 학생, 입출금전표 등이다.

2. 기준 엔터티

  • 실체나 행위 데이터의 기준이 되는 데이터를 관리하는 엔터티이다.
  • 업무를 수행하면서 참조하는 데이터가 있어 참조 엔터티라고도 불린다.
  • 기준이 되는 엔터티의 데이터들이 여러 개면 어떤 것을 참조해야 할지 알 수 없으므로 하나만 존재해야 한다.
  • 우편번호, 이자율, 수수료율, 영업일자 등

3. 행위 엔터티

  • 행위나 활동에 의해 발생된 원천 데이터를 관리하는 엔터티이다.
  • 계약, 주문, 신청, 입금 등이다.

4. 가공 엔터티

  • 원천 데이터가 아닌 원천 데이터를 추출, 집계한 데이터를 관리하는 엔터티
  • 가공 엔터티에 데이터를 쌓는 방법은 두가지가 있다.
    • 트랜잭션 데이터가 발생할 때마다 집계
    • 특정 시점에 해당하는 기간의 데이터를 집계
  • 집계, 임시, 요약 등

 

속성 : 인터티가 가지는 항목이며 인스턴스의 구성요소이다.

속성(Attribute)의 종류

- 분해 여부에 따른 속성의 종류

  • 단일 속성
    • 하나의 의미로 구성된 속성
    • 부서명, 상품명, 재고 수량 등
  • 복합 속성
    • 두 개 이상의 세부 속성으로 구성된 속성
    • 전화번호(국번, 전화번호)나 주소(시, 구, 동)처럼 의미에 따라 별도로 나눠서 관리할 수도 있고 하나로 관리할 수도 있다.
  • 다가 속성(다치 속성, 다중값 속성)
    • 속성에 여러 값을 지니고 있는 속성
    • 주문 내역, 입출고 내역, 결제 내역, 주문 메뉴명 등
    • 1정규형에 의하면 속성은 단일값을 지녀야 하므로 다른 인스턴스로 구분하거나 어느정도 한정적인 갯수라면 속성을 분리해서 관리할 수도 있다.

- 특성에 따른 속성의 종류

  • 기초 속성
    • 엔터티의 본질을 설명하는 속성
    • 기초 속성만으로도 엔터티의 성격을 알 수 있다.
  • 관계 속성
    • 타 엔터티와의 연관성을 나타내는 속성
    • 관계속성은 다른 엔터티의 주 식별자 속성이다.
  • 추출 속성
    • 원본 속성의 값을 연산해서 채울 수 있는 속성이다.

 

식별자

주식별자(Primary Identifier)

  • 엔터티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성이다.
    • 주식별자는 유일성, 최소성, 불변성, 존재성의 특징을 갖는다.
    • 유일성: 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분되어야 한다.(중복되지 않는다.)
    • 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
    • 불변성: 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
    • 존재성: 주식별자가 지정되면 반드시 데이터 값이 존재해야한다.(NULL은 허용되지 않는다.)
  • 주식별자는 하나가 아닌 여러 속성일 수 있다. (복합키)
    • 엔터티의 속성 중 주식별자 속성이 없다면 새로운 속성을 만들어 준다.

외래식별자(Foreign Identifier)

  • 관계가 있는 두 엔터티를 부모, 자식 엔터티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래식별자로 지정한다.
  • 자식 엔터티에 부모 엔터티 주식별자 공통 속성이 없을 경우 자식에게 속성을 추가한 후 외래식별자로 지정한다.

 

도메인

  • 하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합
  • 유사한 속성에 동일한 데이터 타입을 할당할 수 있어 데이터의 일관성과 정합성을 유지할 수 있다.

도메인 도출 및 할당

1. 모든 속성을 엔터티별로 나열한다.

2. 합성명사를 분리한다.

3. 공통적인 합성명사와 명사들을 나열한다.

4. 공통적인 명사를 도메인으로 설정하고 속성을 도메인에 할당한다.

5. 각 도메인별로 데이터 타입과 길이를 지정한다.

 

2.관계 (RealationShip)

  • 두 개 이상의 엔터티 간에 존재하는 연관성을 나타낸다.
  • 하위(자식) 엔터티의 속성으로 관리될 때만 관계를 표현한다.
  • 관계에는 종속관계와 참조 관계가 있다.
    • 종속관계: 부모 엔터티와 자식 엔터티 간의 관계로 부모 엔터티가 존재해야 자식 엔터티가 존재할 수 있다. 반대로 말하면 부모 엔터티 없이 관계를 삭제하고 자식 엔터티만 존재할 수 없다.
    • 참조관계: 엔터티간에 연관성이 존재하긴 하지만 다른 엔터티가 없다고 존재할 수 없는 관계는 아니다. 단순히 참조 데이터를 관리하므로 관계를 삭제해도 한 속성에 대한 연관성만 문제가 되고 하위 엔티티 존재에는 지장이 없다.

관계의 구성요서

카디널리티(Cardinality)

  • 카티널리티는 릴레이션에서 튜플의 개수이자 상위(부모) 엔터티의 인스턴스 하나가 하위(자식)엔터티의 인스턴스 몇 개와 관련이 있는지 혹은 그 반대를 나타내는 것이다.
  • 카디널리티를 통해 관계가 있는 두 엔터티는 일대일(1:1), 일대다(1:M), 다대다(M:M) 관계를 나타낸다.
  • 다대다(M:M) 관계이면 교차 엔터티(Association Entity)를 통해 다대다 관계를 일대다(1:M) 관계로 해소해 주어야 한다.

옵셔널리티(Optionality)

  • 상위(부모) 엔터티와 하위(자식)엔터티가 서로 연관되는 값이 반드시 존재해야 하는지 존재하지 않아도 되는지를 의미한다.
  • 서로 연관되는 값이 반드시 존재하면(최소 1개 이상) Mandatory이다.
  • 서로 연관되는 값이 반드시 존재하지 않아도 된다면(최소 0개 이상) Optional이다.

 

특별한 관계의 종류

일대일관계 

  • 상위(부모)엔터티의 하나의 인스턴스가 하위(자식)엔터티의 하나의 인스턴스와 연관되는 관계를 말한다.
  • 성능이나 업무 규칙에 의해 일대일 관계를 채택할 수 있다.
  • 데이터의 성격이 다르면 업무를 표현하기 위해서 일대일 관계를 채택할 수도 있다.
  • 유사한 속성을 과도하게 일대일로 분해하는 것은 유의해야 한다.

 

배타 관계

두 개 이상의 상위(부모) 엔터티와 관계를 가지며 상호 배타적(하위(자식)엔터티의 하나의 인스턴스가 한번에 하나의 부모 엔터티와 관계를 가지게 됨)일 때의 관계를 말한다.

 

재귀관계

  • 하나의 엔터티에서 인스턴스가 같은 엔터티의 다른 인스턴스와 관계를 가진다.
  • 주로 계층 구조로 상위와 하위의 개념인 계층 구조(레벨이 존재하는 개념)가 생기는 데이터를 관리하는데 사용되며 엔터티의 개수가 늘어나 조인해야 할 엔터티가 늘어나는 것을 방지해 준다.

'LECTURE > DB Modeling' 카테고리의 다른 글

논리 모델  (0) 2023.02.01
개념 모델  (0) 2023.01.31
DB Modeling 개요  (0) 2023.01.31

1. 모델링

- 모델링의 필요성

복잡한 현실세계를 단순화하고 목적에 부합하며 정확한 내용을 표현하기 위함

- 모델링의 특징

1. 단순화 : 복잡한 현실 세계를 선택과 집중을 통해 목적에 부합하는 필요한 것만 선택하는 것

2.추상화 : 현실세계의 다양한 현상을 일정한 형식의 표기법으로 관련있는 비슷한 수준끼리 묶어낸 것

3.명확화: 누구나 쉽게 이해할 수 있게 애매모호함을 제거하고 정확하게 기술하는 것

 

2. 데이터 모델링

관계형 데이터 베이스 저장

- 각 데이터의 종류를 한눈에 파악하기 쉽고, 데이터 테이블 간의 관계를 통해 연관있는 데이터들이 어떻게 누적되어 가는지 한눈에 파악하기 쉽다.

- 중복값이 제거되어 중복된 데이터로 인한 문제들을 해결할 수 있다.

 

관계형 데이터 베이스 저장을 위한 설계

- 각 테이블들이 어떤 기준으로 따로 만들어져야 하는지에 대한 기준을 세울 수 있어야 한다.

- 테이블들의 컬럼이 어떤 의미인지 파악해서 테이블 별로 정의될 수 있도록 해야 한다.

- 데이터들 간에 어떤 관계들이 있는지를 확인하고 설 관련 있는 테이블들 간에 어떤 관계를 맺어야 하는지 정의할수 있어야 한다.

 

소프트웨어 개발절차에 따른 정보시스템 구축 절자

- 폭포수(Waterfall)모델 방식으로 일반적인 소프트웨어 개발 절차이다.

- 정보시스템이란 데이터를 입력받아 처리하여 정보를 산출하는 시스템이다.

- 기업환경에서 업무처리나 경영 의사결정에 필요한 데이터를 수집, 저장, 가공, 배분하게 된다.

데이터 관점 모델링

- 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대한 모델링을 통해 ERD를 산출하고 물리적 데이터베이스 설계와 데이터베이스 구축 및 튜닝까지의 과정이 포함된다.

프로세스 모델링

- 업무가 어떻게 구성되고, 업무의 처리절차, 방법이 어떻게 되는지를 모델로 표현하는 단계

상관 모델링

- 데이터르 가지고 하는 일에 따라 데이터가 어떻게 영향을 받고 있는지 모델링 하는 단계

데이터 모델링의 이해관계자

- 정보 시스템을 구축하는 모든 사람은 데이터 모델링도 전문적으로 할 수 있거나 적어도 완성된 모델을 정확하게 해설할 수 있어야 한다.

- IT 종사자가 아닌 경우에도 해당 업무에서 정보화를 추진하는 위치에 있는 사람 또한 데이터 모델링에 대한 개념 및 세부사항에 대해 어느 정도 지식을 가지고 있어야 한다.

- 현업 IT업무 담당자 또한 모델링을 이해할 수 있어야 프로젝트 수행 중 의사소통을 잘 할 수 있고 업무를 잘못 해석하여 잘못된 시스템을 구축하는 위험을 줄일 수 있다.

 

데이터 모델 표기법

IE 표기법 vs 바커 표기법

IE표기법이 범용적인 표기법이나, 바커 포기법이 논리 모델링 단계에서 배타 관계나 슈퍼 서브 속성에 대한 표기에 있더 거 구체적으로 표현이 가능하다.

관계형 모델

- 릴레이션

-무결성

무결성은 데이터 값이 정확한 상태를 의미한다.(완전성과 정확성)

정합성은 데이터가 서로 모순이 없이 일관되게 일치해야 함을 의마하는 반면, 무결성은 데이터가 완전하고 정확해야 한다는 의미이다.

-무결성의 종류 및 설명

무결성 종류 무결성 특징
엔터티 무결성 (Entity Integrity) 모든 인스턴스는 고유해야 하며 인스턴스를 대표하는 속성에는 널값을 가지면 안된다.
참조 무결성 (Referentail Integrity) 인터티의 외래 식별자 속성은 참조하는 엔터니의 주식별자 값에 포함되거나 널이어야 한다.
도메인 무결성 (Domain Integrity) 특정 속성 값은 같은 데이터 타입, 길이, 널 여부, 중복 값 허용, 기본 값 등 동일한 범주의 값만 존재해야 한다.
업무 무결성 (Business Integrity) 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙을 의미한다.

 

'LECTURE > DB Modeling' 카테고리의 다른 글

논리 모델  (0) 2023.02.01
개념 모델  (0) 2023.01.31
ERD  (0) 2023.01.31

+ Recent posts