ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQLD 데이터 모델의 이해 / PDF 요약정리
    Web dev/SQL 2022. 10. 10. 13:34
    728x90
    반응형

    SQLD 데이터 모델의 이해 정리.pdf
    0.14MB

    데이터 모델의 이해

    데이터 모델링이란

    *정보 시스템을 구축하기 위한 데이터 관점의 업무 분석 기법

    *현실 세계의 데이터(what) 대해 약속된 표기법에 의해 표현하는 과정

    *데이터베이스를 구축하기 위한 분석/설계의 과정

     

    모델링의 특징

    현실세계를 일정한 형식에 맞추어 표현하는 추상화의 의미를 가짐

    *시스템 구현, 업무분석, 업무 형상화의 목적이 있음

    *복잡한 현실을 제한된 언어나 표기법으로 이해하기 쉽도록하는 단순화의 의미를 가짐

    *애매모호함을 배제하고 누구나 이해 가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가짐

    *데이터 모델링 자체로 업무를 설명하고 분석하는 부분에서도 매우 중요한 의미를 가짐

     

    데이터 모델링 유의점

    중복(Duplication)

    *데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.

    비유연성(Inflexibility)

    *데이터의 정의를 데이터의 사용 프로세스와 분리한다.

    *데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 있는 가능성을 줄인다.

    비일관성(Inconsistency)

    *데이터의 중복이 없더라도 비일관성은 발생할 있다.

    *데이터와 데이터간의 상호 연관 관계에 대해 명확하게 정의하여야 한다.

    *사용자가 처리하는 프로세스 혹은 이와 관련된 프로그램과 테이블의 연계성을 높이는 것은 데이터 모델이 업무 변경에 대해 취약하게 만드는 단점.

     

    개념적 데이터 모델링

    *추상화 수준이 높다.

    *업무 중심적이고 포괄적인 수준의 모델링 진행.

    *전사적 데이터 모델링

    *EA(Enterprise Architect) 수립시 많이 사용

     

    논리적 데이터 모델링

    *시스템으로 구축하고자 하는 업무에 대해 key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음.

     

    물리적 데이터 모델링

    *실제 데이터베이스에 이식할 있도록 성능, 저장  물리적인 성격을 고려하여 설계.

     

    데이터베이스 스키마 구조 3단계

    개념 스키마

    *모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현

    *데이터 모델링은 통합 관점을 가지고 있는 개념 스키마(Conceptual Schema) 만들어 가는 과정.

    외부 스키마

    *사용자 (View)

    *사용자나 응용 프로그래머가 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의

    *전체 데이터베이스의 논리적인 부분 (서브 스키마)

    *같은 데이터베이스에 대해서도 서로 다른 관점을 정의 있도록 허용

    *일반 사용자는 SQL 사용하여 DB 사용한다.

    내부 스키마

    *물리적 저장장치 입장에서 데이터베이스 구조물리적인 저장 장치와 밀접한 계층

    *실제 데이터베이스에 저장될 레코드의 물리적인 구조를 정의

    *데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타냄

    *시스템 프로그래머, 설계자가 보는 관점의 스키마

     

    엔티티

    엔티티의 특징

    *반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.

    *유일한 식별자에 의해 식별이 가능해야 한다.

    *영속적으로 존재하는  이상의 인스턴스 집합이어야 한다.

    *엔티티는 반드시 속성이 있어야 한다.

    *엔티티는 다른 엔티티와 최소  이상의 관계가 있어야 한다.

     

    ERD 작성 순서

    *엔티티를 그린다.

    *엔티티를 적절하게 배치한다.

    *인티티간 관계를 설정한다.

    *관계명을 기술한다.

    *관계의 참여도를 기술한다.

    *관계의 필수여부를 기술한다.

     

    발생 시점에 따른 엔티티 분류

    기본 엔티티 ( 엔티티)

    *업무에 원래 존재하는 정보

    *다른 엔티티와의 관계에 의해 생성되지 않고 독립적으로 생성 가능

    * 엔티티의 부모역할을 하게됨

    *사원, 부서, 고객, 상품

     

    중심 엔티티

    *기본 엔티티로부터 발생하며, 업무에 있어서 중요한 역할을 한다.

    *데이터량이 많이 발생되고 다른 엔티티와의 관계를 통해 행위 엔티티를 생성한다.

    *계약, 청구, 주문, 매출

     

    행위 엔티티

    * 이상의 부모 엔티티로부터 발생

    *자주 내용이 바뀌거나 데이터량이 증가한다.

    *분석 초기 단계에서는 나타나지 않고 상세 설계나 프로세스와 상관 모델링을 하면서 도출될 있다.

    *주문목록, 사원 변경이력

     

    엔티티 명명 기준

    *가능하면 현업에서 사용하는 용어를 사용한다.

    *가능하면 약어를 사용하지 않는다.

    *단수명사를 사용한다.

    *모든 엔티티를 통틀어서 유일하게 이름이 부여되어야 한다.

    *엔티티 생성 의미대로 이름을 부여한다.

     

    속성(Attribute)

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

    *엔티티에 대한 자세하고 구체적인 정보를 나타냄

    *하나의 엔티티는  이상의 속성을 갖는다.

    *속성도 집합이다.

     

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

    * 개의 엔티티는  이상의 인스턴스의 집합이어야 한다.

    * 개의 엔티티는  이상의 속성을 갖는다.

    * 개의 속성은  개의 속성값을 갖는다.

     

    속성 특성에 따른 분류

    기본 속성

    *원래 가지고 있어야 하는 속성

    *업무로 부터 추출된 일반적인 속성

     

    설계 속성

    *원래 존재하지 않지만 필요에 따라 설계자가 추가한 속성

    *주문번호, 예약번호, 고객번호, 상품코드

     

    파생 속성

    *데이터를 조회할 빠른 성능을 있도록 하기 위해 원래 속성의 값을 계산하여 저장할 있도록 만든 속성

     

    도메인

    * 속성이 가질 있는 값의 범위

    *엔티티 내에서 속성에 대한 데이터타입과 제약사항을 지정하는

    *) 제품명이라는 속성은 길이가 20자리 이내의 문자열로 정의 있다.

     

    속성 명칭 부여

    *해당 업무에서 사용하는 이름을 부여한다.

    *서술적인 속성명을 사용하지 않는다.

    *약어는 가급적 사용하지 않는다.

    *전체 데이터 모델에서 유일성을 확보하는 것이 좋다.

     

    관계

    관계의 표기법

    *관계명(Membership) : 관계의 이름

    *관계차수(Cardinality) : 1:1, 1:M, M:N

    *관계선택사양(Optionality) : 필수 관계, 선택 관계

     

    관계 도출시 체크 사항

    * 개의 엔티티 사이에 관심있는 연관 규칙이 존재하는가?

    * 개의 엔티티 사이에 정보의 조합이 발생하는가?

    *업무기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?

    *업무기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb) 있는가?

     

    식별자

    식별자의 종류

    대표성 여부

    * 식별자 : 인스턴스를 유일하게 구분 있으며 참조관계를 연결 있음

    *보조 식별자 : 유일하게 구분 가능하지만 대표성을 가지지 못해 참조관계 연결을 못함

     

    스스로 생성 여부

    *내부 식별자 : 엔티티 내부에서 스스로 만들어지는 식별자

    *외부 식별자 : 엔티티와의 관계를 통해 엔티티로부터 받아오는 식별자

     

     

    속성의

    *단일 식별자 : 하나의 속성으로 구성됨

    *복합 식별자 : 2 이상의 속성으로 구성됨

     

    대체 여부

    *본질 식별자 : 업무에 의해 만들어지는 식별자

    *인조 식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

     

    식별자의 특징

    *유일성 : 엔티티내의 모든 인스턴스를 유일하게 구분함

    *최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야

    *불변성 : 식별자가 지정되면 값은 변하지 않아야

    *존재성 : 주식별자가 존재하면 반드시 데이터 값이 존재 (null 안됨)

     

    주식별자를 도출하는 기준

    *해당 업무에서 자주 사용되는 속성을 주식별자로 지정

    *명칭, 내역 등과 같이 이름으로 기술되는 속성은 주식별자로 지정하지 않는다.

    *복합으로 주식별자를 구성하는 경우 너무 많은 속성이 포함되지 않도록 한다.

     

    식별자 관계

    *부모 엔티티의 주식별자가 자식 엔티티의 식별자로 상속된 경우

     

    비식별자 관계

    *부모 엔티티의 주식별자가 자식 엔티티의 일반 속성으로 상속된 경우

     

    비식별자 관계로 설정하는 경우

    *부모 없는 자식이 생성될 있는 경우

    *부모가 있었지만 자식만 남겨두고 먼저 소멸될 있는 경우

    *여러 엔티티가 하나의 엔티티로 통합되어 표현될 경우

    *자식 엔티티에서 별도의 주식별자를 생성하는 것이 유리하다고 판단될

    *자식과 관련이 있는 엔티티로의 주식별자 상속을 차단하기 위해

     

    728x90
    반응형

    'Web dev > SQL' 카테고리의 다른 글

    SQLD 성능 데이터 모델링 개요 / PDF 요약정리  (0) 2022.10.10
    SQLD Oracle / DDL 정리  (0) 2022.08.15

    댓글

Designed by Tistory.