SQLD 개발자

데이터 모델링의 이해

도사원 2023. 2. 7. 17:55

 

01. 데이터 모델링 (Data Modeling)

데이터 모델링 (Data Modeling) :  현실세계를 데이터베이스로 표현하기 위해서 추상화 한다.

 

01_1 데이터모델링의 특징

추상화 (Abstraction) - 공통적인 특징을 간략히 표현

단순화 (Simplification) - 누구나 쉽게 이해할 수 있도록 표현

명확성 (Clarity) - 명확하게 의미가 해석되고 한가지 의미를 가져야함

 

01_2 데이터모델링의 단계

 _1 개념적 모델링 : 업무적 관점에서의 모델링, 엔터티(Entity)와 속성(Attribute)을 도출

                                개념적 ERD(Entity Relationship Diagram)를 작성

_2 논리적 모델링 : 개념적 모델링을 논리적 모델링으로 변환

                              식별자를 도출하고 필요한 모든 릴레이션을 정리

                              정규화를 수행해서 데이터 모델의 독립성 확보(재사용성 높임)

_3 물리적 모델링: 성능, 보안, 가용성 등을 고려하여 데이터 베이스 실제 구축

                              (테이블, 인덱스, 함수 등)

 

01_3 데이터 모델링을 위한 ERD(Entity Relationship Diagram)

작성절차 

 _1 엔터티를 도출하고 그린다.

 _2 엔터티를 배치한다.

 _3 엔터티 간의 관계를 설정한다.

 _4 관계명을 서술한다.

     ex) 계좌를 계설한다 / 주문을 발주한다. / 종목을 선택한다.

 _5 관계참여를 표현한다.

     ex) 고객이 여러 개의 계좌를 개설할 수 있다. 

 _6 관계의 필수여부를 표현한다.

     ex) 모든 고객은 반드시 하나의 계좌를 개설해야 한다.  

 

고려사항

중요한 엔터티는 왼쪽 상단에 배치, 쉬워야 하며 복잡하지 않아야 한다.

 

01_4 데이터모델링의 고려사항

_1 데이터모델링의 독립성 : 정규화(중복된 데이터를 제거) 되어

                                            독립성을 확보한 모델은 고객의 업무 변화에  능동적으로

                                            대응할 수 있다.

_2 고객요구사항의 표현 : 간결하고 명확하게 표현

_3 데이터 품질 확보 : 데이터 표준을 정의하고 표준 준수율을 관리해야 한다. 

 

02. 3층 스키마(3-Level Schema)

02_1 3층 스키마

데이터의 독립성을 확보하면 데이터 복잡도 감소, 데이터 중복 제거,

사용자 요구사항 변경에 따른 대응력 향상,

관리 및 유지보수 비용 절감 등의 장점을 가진다.

3단계 계층으로 분리해서 독립성을 확보하는 방법으로 각 계층을 뷰(View)라고 한다.

 * 3층 스키마의 독립성 

   논리적 독립성 - 개념 스키마가 변경되더라고 외부스키마가 영향을 받지 않는 것이다. 

   물리적 독립성 - 내부 스키마가 변경되더라고 개념스키마가 영향을 받지 않는 것이다.

 

02_2 3층 스키마 구조

 

참고

https://velog.io/@ash3767/%EC%8A%A4%ED%82%A4%EB%A7%88%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

03. 엔터티(Entity)

03_1 엔터티

업무에서 관리해야 하는 데이터 집합을 의미, 저장되고 관리되어야하는 데이터

 

  * 엔터디 도출

   1. 고객이 회원가입을 한다.  회원으로 가입할 때는 회원ID, 패스워드, 이름, 주소,

       전화번호 등을 입력해야 한다.

   2. 회원으로 가입하기 위해서는 반드시 하나의 계좌를 개설해야한다.

   3. 고객은 계좌를 여러 개 개설할 수 있다.

   4. 계좌를 개설할 때는 계좌번호, 계좌명, 예수금, 계좌개설 지점, 계좌담당자가 입력된다.

 

 

03_2 엔터티 특징

식별자 - 유일한 식별자가 있어야 한다. (회원ID, 계좌번호)

인스턴스 집합 - 2개 이상의 인스턴스가 있어야한다. (고객정보는 2개 이상)

속성 - 반드시 속성을 가지고 있어야 한다. (고객 엔터티에 회원ID, 패스워드, 이름, 주소, 전화번호)

관계 - 다른 엔터티와 최소한 한개 이상 관계가 있어야 한다.  (고객은 계좌를 계설한다)

업무 - 업무에서 관리되어야하는 집합이다.(고객, 계좌)

 

   * 릴레이션과 테이블, 인스턴스(Instance)

    릴레이션과 테이블은 같은 의미하고 해석,

    릴레이션에 기본키 및 제약조건을 설정하면 테이블이 된다.

    단 Relationship은 릴레이션 간의 관계를 의미.

    인서턴스는 릴레이션이 가질 수 있는 값의 의미 (행의 수)

 

03_3 엔터티 종류

유형과 무형 유형엔터티 -업무에서 도출, 지속적으로 사용
  (고객, 강사, 사원 등)
개념엔터티 - 유형엔터티에는 물리적 형태가 있지만,
  개념엔터티에는 물리적 형태가 없다

  (거래소 종목, 코스닥 종목, 생명보험 상품)
사건엔터티 -비지니스 프로세스를 실행하면서 생성되는 엔터티
  (주문, 체결, 취소주문 등)
발생 시점 기본엔터티
(Basic)
- 키 엔터티 , 독립적으로 생성되는 엔터티
  (고객, 상품, 부서 등)
중심엔터티
(Main)
-기본엔터티와 행위엔터티 중간에 있는것
  (계좌, 주문, 취소, 체결)
행위엔터티
(Active)
-2개 이상의 엔터티로부터 발생
  (주문, 이력, 체결 이력 등 )

 

04. 속성(Attribute)

04_1 속성

업무에서 필요한 정보인 엔터티가 가지는 항목이며 더이상 분리되지 않은 단위로 업무에 

필요한 데이터를 저장할 수 있다. 인스턴스의 구성요소이고 의미적으로 더이상 분해되지 않는다.

 

04_2 속성의 특징과 종류

업무에서 관리되는 정보. 하나의 값만 가짐. 주식별자에게 함수적으로 종속됨.

 

분해 여부 단일 속성 - 하나의 의미로 구성된 것 
  (회원ID, 이름 등)
복합 속성 - 여러 개의 의미가 있는 것으로 대표적으로 주소가 있다.
- 주소는 시, 군, 동 등으로 분해될 수 있다.
다중값 속성 - 속성에는 여러개의 값을 가질 수 있는 것 (상품 리스트)
- 다중값 속성은 언테티로 분해된다.
특성 기본 속성 -  비지니스 프로세스에서 도출되는 본래의 속성
  (회원ID, 이름, 계좌번호, 주문 일자 등)
설계 속성 - 데이터 모델링 과정에서 발생되는 속성이다.
- 유일한 값을 부여한다. 
   (상품코드, 지점코드 등)
파생 속성 - 다른 속성에 의해서 만들어지는 속성이다.
  (합계, 평균 등)

    * 도메인(Domain)

     속성이 가질 수 있는 값의 범위 (성별이라도 속성의 도메인은 남자와 여자이다.)

 

05. 관계(Relationship)

05_1 관계

엔터테 간의 관련성을 의미.

존재 관계(두 개의 엔터티가 존재 여부의 관계가 있는 것)와

행위 관계(두 개의 엔터티가 어떤 행위의 의한 관련성이 있는 것)로 분류된다.

 

05_2 관계의 종류

_존재 관계 : 엔터티 간의 상태를 의미

                    (고객이 은행에 회원가입을 하면 관리점이 할당되고,

                     그 할당된 관리점에서 고객을 관리한다.)

_행위 관계: 엔터티 간의 어떤 행위가 있는 것

                   (증권회사는 계좌를 계설하고 주문을 발주하는 것이다.)

 

05_3 관계 차수

두 개의 엔터티 간에 관계를 참여하는 수를 의미

_1대1관계 : 완전1대1 - 하나의 엔터티에 관계되는 엔터디의 관계가 하나인 경우, 반드시 존재

                     선택적1대1 - 하나의 엔터티에 관계되는 관계가 하나이거나 없을 수도 있다.

_1대N관계 : 엔터티에 행이 하나 있을때 다른 엔터티의 값이 여러개 있는 관계 (고객은 여러개의 계좌를 가질 수 있다)

_ M대N관계 : 두 개 엔터티가 서로 여러 개의 관계를 가지고 있는 것

                     (학생이 여러 개의 과목을 수강할 수 있다. 과목은 여러명의 학생이 수강한다.)

                     관계형 데이터베이스에서 M대N 관계의 조인은 카테시안곱이 발생한다. 그래서 1대N, N대1로 해소해야함

_필수적 관계와 선택적관계 : 필수적 관계는 'ㅣ'표현, 선택적관계는 'O'로 표현

                                             필수적 - 반드시 하나가 있어야함.

                                             선택적- 없을 수도 있는 관계

 

   *카테시안곱

    두 개 이상의 기준 테이블에 대해 연결 가능한 행을 모두 결합하는 조인 방법 union(교집합)/ interction(합집합)

    join 쿼리 중에 WHERE 절에 기술하는 join 조건이 잘못 기술되었거나 아예 없을 경우 발생하는 현상입니다.

 

 

05_4 식별관계(Identification Relationship)와 비식별관계(Non-Identification Relationship)

_식별관계 : 독립적으로 존재할 수 있는 강한개체(Strong Entity)

                   고객 엔터티의 기본기인 회원ID를 계좌 엔터티의 기본키의 하나로 공유한는 것

                   강한 개체의 기본키 값이 변경되면 식별 관계(기본키를 공유받은)에 있는 엔터티의 값도 변경됨 

 

_비식별관계 : 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것

                       비식별 관계는 점선으로 표현

 

06. 엔터티 식별자(Entity Identifier)

식별자라는 것은 엔터테를 대표할 수 있는 유일성을 만족하는 속성

 

06_1 주식별자(기본키, Primary Key)

_ 최소성 :  최소성을 만족하는 키

_ 대표성 : 엔터티를 대표할 수 있어야 한다.

_ 유일성 : 엔터티의 인스턴스를 유일하게 식별한다.

_ 불변성 : 자주 변경되지 않아야 한다. 

기본키
(Primary Key)
후보키 중에서 엔터티를 대표할 수 있는 키
후보키
(Candidate Key)
유일성과 최소성을 만족하는 키
슈퍼키
(Super Key)
유일성은 만족하지만 최소성을 만족하지 않는 키
대체키
(Altermate Key)
여러 개의 후보키 중에서 기본키를 선정하고 남은 키
외래키
(Foreign Key)
하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결정을
확인하기 위해서 사용되는 키. 즉, 허용된 데이터 값만 데이터베이스 저장하기 위해서 사용됨

 

06_2 식별자의 종류

대표성 주식별자 -유일성과 최소성을 만족시키면서 대표하는 식별자
-다른엔터티와 참조관계로 연결될 수 있다
보조 식별자 -유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자
생성여부 내부 식별자 엔터티 내부에서 스스로 생성되는 식별자
(부서코드, 주문번호, 종목코드 등)
외부 식별자 다른 엔터티와의 관계로 인해서 만들어지는 식별자
(계좌엔터티에 회원ID)
속성의 수 단일 식별자 하나의 속성으로 구성 (고객엔터티에 회원ID)
복합 식별자 두 개 이상의 속성으로 구성
대체 여부 본질 식별자 비지니스 프로세스에서 만들어지는 식별자
인조 식별자 인위적으로 만들어지는 식별자
후보 식별자 중에서 주식별자로 선정할 것이 없거나 주식별자가
너무 많은 칼럼으로 되어있는 경우 사용
->순서번호를 사용해서 식별자를 만드는 것

 

 

 

 

02. 데이터 모델과 성능

 

 

'SQLD 개발자' 카테고리의 다른 글

SQL(Structured Query Language) 종류  (0) 2023.02.20
관계형 데이터 베이스(Relation Database)  (0) 2023.02.11