모델링이란?
- 데이터 베이스에서의 모델링이란 '현실 세계를 단순화하여 표기하는 기법'이다.
- 특징
- 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현한것. 즉, 아이디어나 개념을 간략하게 표현하는 것이다.
- 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미이다.
- 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미이다.
- 모델링의 세가지 관점
- 데이터 관점(What, Data) : 데이터 위주의 모델링으로 어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터간에 어떤 관계가 있는지에 대해 모델링하는 방법
- 프로세스 관점(How, Process) : 프로세스 위주의 모델링으로 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링하는 방법
- 데이터와 프로세스의 상관 관점(Data vs Process, Interaction) : 데이터와 프로세스의 관계를 위주로 한 모델링으로 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법
- 모델링의 세가지 단계
- 개념적 데이터 모델링 : 전사적 데이터 모델링 수행시 행해지며 추상화 레벨이 가장 높은 모델링이다. 이 단계에서는 업무 중심적이고 포괄적인 수준의 모델링이 진행된다.
- 논리적 데이터 모델링 : 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계이다.
- 물리적 데이터 모델링 : 실제 데이터베이스를 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계이다.
- 3단계 스키마 구조
- 외부 스키마 : 사용자의 관점 - Multiple User's View 단계로 각 사용자가 보는 데이터베이스의 스키마를 정의한다.
- 개념 스키마 : 통합된 관점 - Community View of DB 단계로 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것이다. 데이터베이스에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타낸다.
- 내부 스키마 : 물리적인 관점 - Physical Representation 단계로 물리적인 저장 구조를 나타낸다. 실질적인 데이터의 저장 구조나 컬럼 정의, 인덱스 등이 포함된다.
- 3단계 스키마 구조가 보장하는 독립성
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다.
- 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다.
- IE/Crow's Foot 표기법
- ERD 작성 순서
- 엔티티를 도출하고 그린다
- 엔티티를 적절하게 배치한다.
- 엔티티간의 관계를 설정한다.
- 관계명을 기입한다.
- 관계의 참여도를 기입한다.
- 관계의 필수/선택 여부를 기입한다.
엔티티(Entity)
엔티티의 사전적인 의미는 독립체이다. 데이터베이스에서 엔티티는 식별이 가능한 객체라는 의미를 가지고 있다.
예를들어 회원이라는 엔티티는 '아이디', '비밀번호', '이름', '핸드폰 번호', '주소' 와 같은 속성을 가질 수 있고, 홍길동이라는 회원이 있다면 회원 엔티티의 인스턴스가 된다. ( Entity : Table, Instance : Row, Attribute : Column)
- 엔티티의 특징
- 업무에서 쓰이는 정보여야 한다.
- 유니크함을 보장할 수 있는 식별자가 있어야 한다.
- 2개 이상의 인스턴스를 가지고 있어야 한다.
- 반드시 속성값을 가지고 있어야 한다.
- 다른 엔티티와 1개 이상의 관계를 가지고 있어야 한다.
- 엔티티의 분류
- 유형 엔티티 : 물리적인 형태, 안정적, 지속적 - ex) 상품, 회원
- 무형 엔티티 : 물리적인 형태 없음, 개념적 - ex) 부서, 학과
- 사건 엔티티 : 행위를 함으로써 발생, 빈번함, 통계자료로 이용 가능 - ex) 주문, 이벤트 응모
- 발생 시점의 분류
- 기본 엔티티 : 독립적으로 생성됨, 자식 엔티티를 가질 수 있음 - ex) 상품 회원
- 중심 엔티티 : 기본 엔티티로부터 파생, 엔티티 생성 - ex) 주문
- 행위 엔티티 : 2개 이상의 엔티티로부터 파생 - ex) 주문 내역, 이벤트 응모 이력
속성(Attribute)
속성은 의미상 더이상 쪼개지지 않는 레벨이어야 하고, 프로세스에 필요한 항목이어야 한다.
- 속성 값 : 각각의 속성은 속성값을 가질 수 있으며, 속성값은 엔티티에 속한 하나의 인스턴스를 구체화하여 보여주는 데이터이다. 하나의 속성은 한개의 속성값만 가질 수 있다.
- 엔티티, 인스턴스, 속성의 관계
- 한개의 엔티티는 두개 이상의 인스턴스를 갖는다.
- 한개의 인스턴스는 두개 이상의 속성을 갖는다.
- 한개의 속성은 하나의 속성값을 갖는다.
- 분류
- 특성에 따른 분류
- 기본 속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
- 설계 속성 : 업무에 존재하지 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
- 파생 속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
- 구성 방식에 따른 분류
- PK 속성 : 엔티티의 인스턴스를 식별할 수 있는 속성
- FK 속성 : 다른 엔티티의 속성에서 가져온 속성
- 일반 속성 : PK, FK를 제외한 속성
- 특성에 따른 분류
- 도메인 : 속성이 가질 수 있는 속성값의 범위를 도메인 이라고 한다. 예를들어 학생이라는 엔티티가 있을때 학점이라는 속성값은 0.1~4.5 사이의 도메인을 가질 수 있다.
관계(Relationship)
엔티티와 엔티티간의 관계를 의미하며, 어떠한 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눌 수 있다.
- 존재 관계
- 엄마와 아기처럼 존재 자체로 연관성이 있는 관계를 의미한다. 예를 들어 직원과 부서, 학생과 학과 엔티티가 있다.
- 행위 관계
- 특정한 행위를 함으로써 연관성이 생기는 관계이다. 예를들어 회원과 주문, 학생과 출석부 엔티티가 있다.
- 표기법
- 관계명 : 관계의 이름
- 관계 차수 : 관계에 참여하는 수 ( 1:1, 1:N, N:M)
- 관계 선택 사항 : 필수인지 선택인지 여부
식별자(Identifiers)
모든 엔티티는 인스턴스를 가지고 있고 인스턴스는 속성으로 자신의 특성을 나타낸다고 했다. 식별자는 이런 속성중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미한다.
- 주 식별자 : PK에 해당하는 속성으로 하나의 속성이 주식별자가 될 수있고, 여러개의 속성이 주식별자가 될 수도 있다.
- 유일성 : 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
- 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
- 불변성 : 속성값이 되도록 변하지 않아야 한다.
- 존재성 : 속성값이 NULL일 수 없다.
- 분류
- 대표성 여부
- 주식별자
- 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자.
- 다른 엔티티와 참조 관계로 연결
- 보조 식별자
- 인스턴스를 식별할 수는 있지만 대표 식별자가 아니다.
- 다른 엔티티와 참조 관계로 연결되지 않음
- 주식별자
- 스스로 생성되었는지 여부
- 내부 식별자 : 엔티티 내부에서 스스로 생성된 식별자
- 외부 식별자 : 다른 엔티티에서 온 식별자. 다른 엔티티와의 연결고리 역할
- 단일 속성의 여부
- 단일 식별자 : 하나의 속성으로 구성된 식별자
- 복합 식별자 : 두개 이상의 속성으로 구성된 식별자
- 대체 여부
- 원조 식별자 : 업무 프로세스에 존재하는 식별자. 가공되지 않은 원래의 식별자(본질 식별자)
- 대리 식별자 : 주 식별자의 속성이 두개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조 식별자)
- 대표성 여부
'Database' 카테고리의 다른 글
SQL 기본(GROUP BY, HAVING, ORDER BY, JOIN) (0) | 2023.09.02 |
---|---|
SQL 기본 (SELECT, WHERE) (0) | 2023.08.19 |
데이터 모델과 SQL (0) | 2023.08.19 |
[MySQL] 인덱스 스캔 방식의 종류 및 특징 (0) | 2023.03.28 |
[Database] 인덱스의 개념, 장단점 (0) | 2023.03.28 |