모델링이란
- 모델링 (Modeling) : 현실세계를 대상으로 일종의 모델(Model)을 만드는 것
- 약속된 표기법을 따라야 한다
모델링의 특징
1. 추상화 (Abstraction)
2. 단순화 (Simpification)
3. 명확화 (Clarify)
- 중복(Duplication) 최소화
- 비유연성(Inflexibility) 최소화
- 데이터 정의와 데이터의 사용 프로세스를 분리해야 한다
- 데이터 독립성 : 데이터를 사용하는 사용자 영역과 데이터를 저장하는 디스크나 메모리 영역을 서로 분리하는 것
- 비일관성(Inconsistency) 최소화
모델링의 세가지 관점
1. 데이터 관점(대상, What)
2. 프로세스 관점(처리방법, How)
3. 데이터와 프로세스의 상관 관점(대상과 처리방법의 상관관계, Interaction)
- CRUD(Create, Read, Update, Delete) 분석을 기반으로 한다
모델링의 세가지 단계
1 .개념적 데이터 모델링 (Conceptual Data Modeling)
- 엔티티(Entity)와 속성(Attribute)를 도출한다
2. 논리적 데이터 모델링 (Logical Data Modeling)
- 키(key), 속성(Attribute), 관계(Relationship) 등을 표현
3. 물리적 데이터 모델링 (Physical Data Modeling)
- DBMS의 성능이나 보안, 가용성 등을 고려하려 설계
ANSI-SPARC에서 정의한 3단계 스키마 구조
ANSI-SPARC (American National Standards Institute, Standards Planning And Requirements Committee)
1. 외부 스키마(External Schema)
- 사용자 관점
- 데이터베이스 스키마를 정의
- 다중 사용자 뷰를 제공
2. 개념 스키마 (Conceptual Schema)
- 설계자 관점
- 데이터와 그 관계를 정의
- 통합된 뷰를 제공
3. 내부 스키마 (Internal Schema)
- 개발자 관점
- 테이블, 칼럼, 인덱스 등을 정의
- 물리적 뷰를 제공
ERD
ERD (Entity Relationship Diagram) : 데이터 모델링에 대한 문서화 방법
- 엔터티들 간의 관계를 특별한 표기법으로 나타냄
- Entity : Entity는 박스로 나타냄 (이름은 박스 상단에 표시)
- Attribute : 박스안에 리스트 형태로 표현 (주식별자(PK)와 일반 속성은 칸막이로 구분)
- 카디널리티 : O, |, 까치발 등으로 관계를 나타냄 (1:1, 1:다, 다:다) / O: 관계 있을 수도 없을 수도 있다(Null 포함)
- 관계 : 관계는 박스를 연결한 선 (비식별자 관계는 점선으로 표현)
엔터티 (Entity)
ㅇTable: Entity를 물리적으로 구현한 것 (Entity는 개념적 정의)
ㅇEntity : Database의 구성요소 중 독립 적으로 식별 가능한 객체 (Object)
엔터티의 특징
- 식별이 가능하도록 유일한 식 별자를 가져야 한다
- 영속적으로 존재하는 인스턴스(Instance)가 두 개 이상인 집합을 이루어야 한다
- 하위 요소로 반드시 속성을 가져야 한다
- 엔터티는 다른 엔터티와 한 개 이상의 관계(Relation ship을 가져야 한다)
- 단 통계성 엔터티와 코드성 엔터티의 경우 관계를 생략할 수 있다
- 업무에서 필요로 하지 않더라도 데이터로 존재한다면 엔터티로 정의될 수 있다 (X)
- 업무에서 필요로 하고 관리 대상일 때만 엔터티로 정의
엔터티의 분류
1. 발생시점/상속 관계에 따른 엔터티 분류
- 기본 엔터티(Fundamental ENTITY) = KEY 엔터티
: 해당 업무에 기본적으로 존재하는 정보.
상위엔터티 없이 독자적으로 생성. (사원, 부서 엔터티) - 중심 엔터티(Main ENTITY)
: 업무에 핵심적인 역할을 하는 정보.
상위 엔터티로부터 생성. (접수, 계약 엔터티) - 행위 엔터티(Action ENTITY)
: 기본과 중심 엔터티을 근간으로 업무가 흘러가면서 발생되는 엔터
티 (주문내역, 계약진행 엔터티)
기본, 중심 엔터티를 묶어서 핵심엔터티라고 한다.
2. 물리적 형태의 존재 여부에 따른 분류
- 유형 엔터티(Tangible ENTITY) = KEY 엔터티
: 물리적 형태가 존재하는 엔터티
ex) 사원, 물품 - 개념 엔터티(Conceptual ENTITY)
: 물리적 형태 없이 개념적으로 정의되는 엔터티
ex) 부서, 상품분류, 강의 - 사건 엔터티(Event ENTITY)
: 업무 수행에 따라 발생하는 행위나 이벤트를 나타내는 엔터티
ex) 주문, 대여, 수강
+) 교차 엔터티 (Intersection Entity)
- 다대다 (M:N 관계)를 해소하기 위해 만들어진 엔터티
- 방법: 교차 엔터티를 적용해 교차(연관) 정보를 저장하는 테이블을 별도로 만듬

- 고객 ---0|<- 배당 ->|0--- 주식

-- 고객 일반 정보
CREATE TABLE customer(
id VARCHAR2(100) PRIMARY KEY,
password VARCHAR2(100) NOT NULL,
name VARCHAR2(100) NOT NULL,
address VARCHAR2(100) NOT NULL
)
-- 주식 일반 정보
CREATE TABLE stock(
symbol VARCHAR2(100) PRIMARY KEY,
price NUMBER NOT NULL
)
-- 고객과 주식의 관계정보 ( 교차엔티티 )
CREATE TABLE shares(
id VARCHAR2(100),
symbol VARCHAR2(100),
quantity NUMBER NOT NULL,
CONSTRAINT erd_shares_pk PRIMARY KEY(id,symbol),
CONSTRAINT erd_customer_fk FOREIGN KEY(id) REFERENCES customer(id),
CONSTRAINT erd_stock_fk FOREIGN KEY(symbol) REFERENCES stock(symbol)
)
속성 (Attribute)
ㅇ Entity 안에 상세한 설명 (하위요소)
ㅇ Entity에 대한 자세하고 구체적인 정보를 나타낸 것 / 업무와 관계되어 필요한 것들
ㅇ ex) 엔티티 : 회원 / 속성 : 아이디, 이름, 전화번호
ㅇ 해당 엔터티를 정의하는데 필수적인 것들로 최소화 해야 한다.
ㅇ 의미상으로 더 이상 분리되지 않는 최소의 데이터 단위
ㅇ 주식별자 : PK(Primary Key)
ㅇ 엔터티를 ERD러 표현 할 때, PK속성과 일반 속성은 칸막이로 구분
속성의 분류
1. 속성의 특성에 따른 분류
- 기본 속성 : 엔터티가 본래부터 가지고 있어야 하는 속성
- 설계 속성 : 엔터티가 본래부터 가지고 있지는 않지만 설계 시 필요하다고 판단하여 부여된 속성
- 파생 속성 : 다른 속성 부터 계산되거나, 특정 규칙에 따라 변형되어 만들어진 속성
2. 속성의 구성방식에 따른 분류
- PK (Primary Key, 기본키) 속성 : 해당 Entity를 유일하게 식별할 수 있는 속성
- FK (Foreign Key, 외래키) 속성 : 관계를 통해 다른 엔티티의 속성을 가져와 포함시킨 속성
- 일반 속성 : 키가 아닌 나머지 일반 속성
속성값
ㅇ 속성이 가질 수 있는 특정 값
ㅇ 하니의 Entity 인스턴스에서 각각의 속성은 한 개의 속성값만 가져야 한다.
인스턴스 (Instance)
ㅇ엔터티(구조)에 맞게 실제로 저장된 데이터 1개
ㅇ진짜 데이터들
엔터티 / 인스턴스 / 속성 값
- 한 개의 Entity (Table)은 두 개 이상의 Instance (Row)를 가진다
- 한 개의 Entity (Table)는 두 개 이상의 Attribute (Column)을 가진다
- 한 개의 속성은 한 개의 속성 값만 가진다
도메인 (Domain)
- 속성이 가질 수 있는 값으 범위(값의 데이터 타입과 크기)
- 데이터의 제약 사항
관계 (Relationship)
ㅇEntity와 Entity 간에 맺고 있는 연관성을 의미
UML의 클래스 다이어 그램
ㅇ존재적 관계
- 일종의 소속관계를 가지는 경우 (ex 사원 , 부서) / 존재 자체로 서로 연관성을 갖는 관계
UML : 연관 관계 (Association) : Entity 들이 항상 서로 관련되어 있는 존재적 관계를 나타냄
- 연관관계는 실선으로 표현
- 클래스의 멤버 변수로 선언되어 사용

ㅇ행위적 관계
- 한 엔터티가 특정 행위나 이벤트를 일으킬 경우에 연관성이 발생하는 관계 (ex 고객, 주문)
UML : 의존 관계 (Dependency) : 한 클래스가 다른 클래스의 행위에 의존하는 행위적 관계
- 의존관계는 점선으로 표현
- 클래스의 메소드(Operation) 내에서 파라미터 등으로 사용

* ERD에서는 존재적 관계와 행위적 관계를 구분하지 않는다
관계명 (Membership)
관계의 이름을 나타낸다 (존재적 관계와 행위적 관계를 기술한다)

관계차수(Cardinality)
1:1(일대일), 1:M(일대다), M:N(다대다) 와 같이 관계를 맺는 엔터티 인스터스의 차수

* ERD에서는 존재적관계와 행위적 관계를 구분하지 않는다
* ERD에서의 실선과 점선은 식별자 관계와 비식별자 관계를 구분할 때 사용
관계선택사양(Optionality)
- 필수적 관계인지 선택적 관계인지를 나타냄 (Null 가능 여부)
- 필수적 관계 : Null 가능 x
- 선택적 관계 : Null 가능 O
- 까치발 기호에 O표시로 나타냄
식별자 (Identifier)
ㅇ속성 중 유일하게 구별할 수 있는 속성 (Key 와 유사)
- Key : 슈퍼키(Super key), 후보키(Candidate Key), 기본키(Primary Key), 대체키(Alternate Key), 외래키(Foregin key)
- 후보키 : 유일성과 최소성을 만족하는 속성들 (PK,AK 모두 후보키 이다)
식별자 구분 방법
대표성 여부
ㅇ주식별자 (PK : Primary Identifier): 해당 Entity를 유일하게 구별해주는 식별자 PK(Primary Key)
- 다른 엔터티와 참조관계를 연결할 수 있다
- 유일성. 최소성, 불변성, 존재성 (Null 불가) => Unique Key + Not Null 조건
ㅇ보조식별자 (AK : Alternate Identifier): 해당 엔터티를 유일하게 구분은 할 수 있지만 대표성은 가지지 않음
- 다른 엔터티와 참조관계를 연결할 수 없다

스스로 생성 가능 여부
ㅇ내부식별자 (Internal Identifier): 엔터티 내부에서 스스로 만들어지는 식별자)
ㅇ외부식별자 (Foregin Identifier): 관계를 통해 다른 엔터티 부터 반아오는 식별자 (외래키 FK(Foreign Key))
속성의 수
ㅇ단일 식별자 (Single Identifier): 식별자를 구성하는 속성이 하나인 식별자
ㅇ복합 식별자 (Composite Identifier): 식별자를 구성하는 속성이 둘 이상인 식별자
대체 여부
ㅇ본질 식별자 (Original Identifier): 업무에 존재하는 본래의 식별자
ㅇ인조 식별자, 대리식별자 (Surrogate Identifier): 업무에 존재하지는 않으나 원조식별자가 너무 복잡해서 인위적으로 만든 식별자


식별자와 비식별자
ㅇ식별자: 엔터티 간의 강한 연결 관계를 표현 (실선)
- 부모엔터티 인스턴스가 소멸할 때 자식 엔터티 인스턴스도 같이 소명하는 경우 표현
ㅇ비식별자: 엔터티 간의 약한 연결 관계 (점선)
- 부모와 자식 엔터티 인스턴스가 다른 생명주기를 가질 때 사용
'IT Study > SQL' 카테고리의 다른 글
| 데이터 베이스의 기초 (용어 정리) (0) | 2025.09.05 |
|---|---|
| [생활코딩 SQL][Database] 관계형 데이터 모델링(part1,2) (0) | 2022.11.28 |
| [생활코딩 SQL][MYSQL] JOIN (0) | 2022.11.19 |
| [생활코딩 SQL][MYSQL] order by, group by (0) | 2022.11.19 |
| [생활코딩 SQL][10~13] MYSQL의 CRUD (0) | 2022.11.14 |