[SQLD] 1-1 데이터 모델링 (Data modeling)
- 데이터 모델링이란?
: 현실세계의 데이터베이스를 추상화하여 표현하는 것.
: 데이터가 사용되고 읽히는 프로세스를 파악하여 표기법을 사용하여 명확하게 표현해야 한다.
: 누구나 데이터 모델을 보고 접근하고 이해할 수 있도록, 단순하게 표현해야 한다.
-> 추상화, 단순화, 명확성..데이터 모델링의 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같은것..)
: 보조식별자 ( 유일성과 최소성을 지녀 구분자이나 대표성을 지니지 못함. 참조관계 연결이 없다.)
- 스스로생성 여부
: 내부식별자( 엔터티 내부에서 스스로 생성되는 식별자이다. )
: 외부식별자 ( 다른 엔터티와의 관계로 인하여 만들어지는 식별자이다.)
- 속성의 수
: 단일식별자( 하나의 속성으로 구성된다 )
: 복합식별자 ( 두개 이상의 속성으로 구성된다 )
- 대체여부
: 본질식별자( 업무에 의해 만들어지는 식별자 )
: 인조식별자 ( 인위적으로 만든 식별자 )