나의 개발자 기록/개발자 지식

[SQLD] 1-1 데이터 모델링 (Data modeling)

써머름 2023. 2. 27. 19:35
728x90
반응형

- 데이터 모델링이란?

: 현실세계의 데이터베이스를 추상화하여 표현하는 것. 

: 데이터가 사용되고 읽히는 프로세스를 파악하여 표기법을 사용하여 명확하게 표현해야 한다.

: 누구나 데이터 모델을 보고 접근하고 이해할 수 있도록, 단순하게 표현해야 한다. 

 

-> 추상화, 단순화, 명확성..데이터 모델링의 3가지 중요한 특징 ! 

 

- 데이터 모델링 단계 

1. 개념적 모델링

    - 전사적 관점에서 업무 전체에 대하여 데이터를 모델링 하는 것

    - 중요한 부분을 위주로 모델링 하며, 추상화 수준이 가장 높다

    - 계층형, 네트워크, 관계형 등과 상관없이 업무 측면에서 모델링 하는 것

    - 엔터티와 속성을 도출하고, 개념적 ERD를 작성한다. 

 

2. 논리적 모델링

    - 개념적 모델링 -> 논리적 모델링의 변환작업을 의미

    - 특정 데이터베이스에서 식별자를 정의하고, 관계와 속성등을 모두 표현한다

    - 정규화를 통해서 재사용성을 높인다

 

3. 물리적 모델링 

    - 실제 데이터베이스를 구축하는 것

    - 테이블, 인덱스, 함수 등을 생성한다

    - 성능과 보안, 가용성을 고려하여 데이터베이스를 구축한다

 

더보기

💡 스키마란 ?

- 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것

-> 개체의 특성을 나타내는 속성 (attribute) , 속성들의 집합으로 이루어진 개체(Entity),

개체 사이에 존재하는 관계 (Relation)에 대한 정의와 이들이 유지해야 할 제약조건을 기술한 것

 

- 데이터 독립성 

: 독립성이 확보된 모델은 데이터 복잡도가 감소하고, 변화 상황에 능동적으로 대응가능하다.

: 독립성을 확보하기 위해서는 중복된 데이터를 제거해야한다. 이 방법이 바로 정규화이다 

 

- 3층 스키마의 구조 

**스키마의 독립성

 

1. 외부 스키마

- 논리적 독립성 : 개념스키마가 변경되어도 외부스키마는 영향x

    - 개개인 사용자 관점, 업무상 관련이 있는 데이터 접근

    - 관련 DB의 뷰를 표시한다

    - 응용 프로그램이 접근하는 데이터베이스를 접근한다

 

2. 개념 스키마

- 물리적 독립성 : 내부스키마가 변경되어도 개념스키마는 영향x

    - 설계자 관점, 사용자 전체 집단의 데이터베이스 구조

    - 전체 데이터베이스 내의 규칙과 구조를 표현

    - 통합 데이터베이스 구조

 

3. 내부 스키마

    - 개발자 관점, 데이터베이스의 물리적 저장 구조

    - 데이터 저장 구조, 레코드 구조, 필드 정의, 인덱스 등을 의미

 

- 엔터티

: 업무에 필요하고 유용한 정보를 저장, 관리하기 위한 집합.

: 데이터 모델링에서 사용하는 객체라고 생각하면 쉽다. 난 개발자니까

 

1. 엔터티의 특징

- 필요성 : 반드시 해당 업무에서 필요하고 관리하고자 함

- 식별자 : 유일한 식별자에 의해 식별이 가능해야 함

- 인스턴스 : 두 개 이상의 인스턴스의 집합

- 속성 : 반드시 속성을 가지고 있어야 함

- 관계 : 다른 엔터티와 최소 1개 이상의 관계가 있어야 함

 

2. 엔터티의 분류

 

- 유무형의 따른 분류 

: 유형 ( 지속적으로 사용되는 물리적 형태 ex: 사원, 물품)

: 개념 ( 개념적 정보이며 물리적 형태가 없음 ex: 조직, 거래소 종목)

: 사건 ( 비즈니스 수행시 발생 ex: 주문, 수수료청구, 미납) 

 

- 발생시점에 따른 분류 

: 기본 ( 원래 존재하는 정보, 키 엔터티하고 한다. 독립적으로 생성된다 ex: 사원, 부서)

: 중심 ( 기본 엔터티로부터 발생해 많은 관계를 맺는 행위 엔터티를 생성한다 ex: 계약, 사고, 주문) 

: 행위 ( 2개 이상의 부모 엔터티로부터 발생, 자주 바뀐다 ex: 주문목록, 사원변경이력)

 

- 속성

: 업무에서 관리되며 의미상 분리되지 않는 최소 데이터 단위 

: 인스턴스의 구성요소이며, 하나의 값을 가진 정보이다. 

 

** 한 개의 속성은 1개의 속성값을 가짐

** 한 개의 엔터티는 2개 이상의 속성을 가짐

** 한 개의 엔터티는 2개 이상의 인스턴스의 집합

 

엔터티 - 테이블,

속성 - 컬럼,

인스턴스 - 행 

1. 속성의 분류

 

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

: 단일 속성 ( 하나의 의미로 구성된 것 ex: 회원Id, 이름)

: 복합 속성 ( 여러개의 의미가 있는 것 ex: 주소)

: 다중값 속성 ( 속성에 여러개의 값을 가질수 있는것, 엔터티로 분해됨 ex: 상품리스트) 

 

- 특성에 따른 속성의 종류

: 기본 속성 ( 업무로부터 도출되는 본래의 속성 ex:회원Id, 이름)

: 설계 속성 ( 데이터 모델링을 위해 새로 만들거나 변형, 정의하는 유일한 값 ex: 상품코드, 일련번호) 

: 파생 속성 ( 다른 속성에 의해 만들어지는 속성 ex: 합계, 평균)

 

**도메인 : 속성에 대한 데이터 타입을 의미한다. 제약사항을 지정해준다.

 

 

- 관계

: 엔터티의 인스턴스 사이의 논리적인 연관성을 의미한다

: 존재나 행위로서 서로에게 연관성이 부여된 상태. 관계 페어링의 집합 (ex 강사 - 가르친다(관계) - 수강생)

 

 

: 존재관계 (엔터티 간의 상태, 관리점 - 고객 ), 행위관계 (엔터티 간에 행위가 있는것, 계좌 - 주문발주 )

관계 차수 : 두 개의 엔터티 간에 관계에 참여하는 수를 의미한다.

관계 차수
관계 차수 도식
실선은 필수관계, 점선은 선택적관계를 의미한다

 

- 식별자

: 엔터티 내에서 인스턴스를 구분하는 구분자

: 식별자는 논리적 데이터 모델링 관계에서 주로 사용한다. ( Key는 물리적 데이터 모델링)

 

1. 식별자의 특징 

- 유일성 : 주 식별자에 의해 모든 인스턴스들이 유일하게 구분

- 최소성 : 주 식별자는 최소성을 만족하는 키이다

- 불변성 : 지정된 주식별자의 값은 자주 변하지 않아야 한다

- 존재성 : 주식별자가 지정되면 반드시 값이 있어야 한다

 

 

2. 식별자의 분류

 

- 대표성 여부

: 주식별자( 엔터티를 대표할 수 있는 식별자. 회원Id같은것..)

: 보조식별자 ( 유일성과 최소성을 지녀 구분자이나 대표성을 지니지 못함. 참조관계 연결이 없다.)

 

- 스스로생성 여부

: 내부식별자( 엔터티 내부에서 스스로 생성되는 식별자이다. )

: 외부식별자 ( 다른 엔터티와의 관계로 인하여 만들어지는 식별자이다.)

 

- 속성의 수 

: 단일식별자( 하나의 속성으로 구성된다 )

: 복합식별자 ( 두개 이상의 속성으로 구성된다 )

 

- 대체여부

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

: 인조식별자 ( 인위적으로 만든 식별자 )

728x90
반응형