1) 엔터티 (Entity, Table)
- 정의 : 관리할 가치가 있는 실세계의 객체 또는 개념 (사람, 사물, 사건, 장소 등)
- 특징
- 반드시 식별자를 가진다 (유일성)
- 속성(Attribute)들로 구성된다
- 두 개 이상 인스턴스의 집합
- 다른 엔터티와 관계(Relationship)로 연결된다
- 통계/코드성 엔터티는 관계 생략 가능
- 발생 시점 분류
- 기본(키) 엔터티 : 최초 발생, 독립적 존재, 부모 역할 가능 (예: 고객, 상품)
- 중심 엔터티 : 반복되는 행위/상태 관리, 트랜잭션 중심 (예: 주문, 계약)
- 행위 엔터티 : 이벤트/행위를 기록, 로그성 (예: 주문상세, 결제내역, 배송기록)
- 예시 : 고객, 주문, 상품
2) 식별자 (Identifier, Key)
- 정의 : 엔터티 내 인스턴스를 유일하게 구분할 수 있는 속성(들)
- 식별자의 분류 체계
- 대표성 기준
- 주식별자
- 유일성 : 주 식별자에 의해 엔터티 내의 모든 인스턴스 들은 유일하게 구분됨
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
- 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함. (NULL 불가)
- 보조식별자
- 엔터티의 인스턴스를 유일하게 식별할 수 있는 속성(들) 중에서 주식별자로 선택되지 않은 나머지 후보 식별자
- PK 대신 써도 유일성이 보장됨. (대체 가능)
- 주식별자
- 생성(엔터티 자체 스스로) 기준
- 내부 식별자 : 해당 엔터티 자체에서 만들어진 식별자
- 외부 식별자 : 다른 엔터티(부모)로부터 받아온 식별자 (FK 포함)
- 속성의 수 기준
- 단일 식별자 : 하나의 속성으로 구성
- 복합 식별자 : 둘 이상의 속성을 조합해서 구성
- 시스템 대체 기준
- 본질 식별자 : 업무적으로 원래 의미가 있는 값
- 인조 식별자 : 업무적 의미는 없지만, 시스템에서 새로 만든 값
- 대표성 기준
- 특징
- ERD에서 밑줄로 표시
- 단일 속성 또는 복합 속성 가능
- 설계 속성에 해당하는 경우가 많음 (예: 고객 ID)
- 식별자 관계와 비식별자 관계
- 식별자 관계
- 강한 연결관계 (실선)
- 자식의 주식별자 구성에 포함됨
- 조인하지 않고, 자식 테이블의 PK만 봐도 부모를 알 수 있음.
- 비식별자 관계
- 약한 연결관계 (점선)
- 자식의 일반 속성에 포함됨
- 자식 테이블의 PK는 일반 속성임. 부모를 알기 위해 조인해야 함.
- 식별자 관계
- 예시 : 고객 ID, 주민등록번호
3) 속성 (Attribute, Column)
- 정의 : 엔터티가 가진 특성/성질을 나타내는 데이터 항목
- 특징
- 한 엔터티는 두 개 이상의 속성을 가진다
- 한 속성은 반드시 한 개의 속성값(원자값)을 가진다 (→ 제1 정규형과 연결)
- 엔터티의 속성 집합 → 테이블의 칼럼으로 변환
- 분류 (특성 기준)
- 기본 속성: 현실에 존재하는 본래 속성 → 고객명, 생년월일
- 설계 속성: 모델링 과정에서 인위적 추가 (주로 식별자) → 고객 ID, 주문 ID
- 파생 속성: 다른 속성에서 계산 가능 (저장 비권장) → 나이(=오늘-생년월일), 합계금액(=단가 ×수량)
- 예시 : 고객명, 생년월일, 주소
4) 속성값 (Attribute Value)
- 정의 : 속성이 실제로 가지는 구체적인 값 (인스턴스에 채워지는 데이터)
- 특징
- 원자값 → 한 속성은 반드시 한 개의 속성값만 가짐 (제1 정규형 조건)
- 속성값은 도메인 내 값이어야 함 (허용된 범위 내 값)
- 속성값은 NULL일 수도 있음
- 예시
- 속성 : 고객명 → 속성값: “홍길동”
- 속성 : 생년월일 → 속성값: “1990-01-01”
5) 도메인 (Domain)
- 정의 : 속성이 가질 수 있는 속성값의 범위
- 특징
- 속성의 유효 값 집합을 정의 (데이터 타입 + 제약조건)
- 데이터 무결성 보장 (잘못된 값 방지)
- DBMS에서는 데이터 타입, CHECK 제약, ENUM 등으로 표현 가능
- 예시
- 속성 : 성별 → 도메인 : {‘M’, ‘F’}
- 속성 : 나이 → 도메인 : 0~150 범위의 정수
- 속성 : 이메일 → 도메인 : VARCHAR(100), ‘@’ 포함 형식
6) 인스턴스 (Instance, Row)
- 정의 : 엔터티에 실제 저장된 데이터 값 (한 행, Row)
- 특징
- 엔터티 = 집합, 인스턴스 = 개별 원소
- 한 엔터티는 두 개 이상의 인스턴스 집합을 가진다
- DB에서 레코드(Row)로 구현됨
- 예시 : 고객 엔터티의 데이터 → “고객 ID=001, 홍길동, 900101-1234567, 서울시 …”
7) 관계 (Relationship)
- 정의
- 엔터티와 엔터티 같은 연관성
- 현실 세계의 업무 규칙을 데이터 모델로 표현한 것
- 종류(발생 근거 기준)
- 존재에 의한 관계
- 한 엔터티가 존재해야 다른 엔터티가 성립
- 부모 - 자식 구조, FK 상속
- ex > 부서 - 사원, 고객 - 주문
- 행위에 의한 관계
- 특정 업무 행위(이벤트) 발생으로 성립
- 주로 중심 엔터티와 연계
- ex> 주문 - 상품 : 주문 행위가 있어야 주문상세 발생, 학생-과목 : 수강 신청 시 수강 관계 생성
- 존재에 의한 관계
- 일반적 관계 분류
- 일대일 (1:1)
- 일대다 (1:N, 가장 흔함)
- 다대다 (M:N, 중간 엔터티(교차, 맵핑 엔터티) 필요)
- 관계의 구성요소
- 관계명 : 관계의 이름 (동사 표현이 원칙)
- 관계 차수 : 두 엔터티 간 참여하는 수량 (1, N, M)
- 관계 선택 사양 : 필수관계(1.. N), 선택관계(0.. N)
- 예시
- 고객 - 주문 - 상품
- 고객이 주문을 한다.
- 차수 : 고객(1) ↔주문(N)
- 선택성
- (0.. N) 고객은 주문을 할 수도, 하지 않을 수도 있음
- (1.. 1) 주문은 반드시 고객이 있어야 함
- 주문은 상품을 포함한다.
- 차수 : 주문(N) ↔ 상품(M)
- 선택성
- (M.. N) 주문상세라는 중간 엔터티로 분해
'SQL Professional' 카테고리의 다른 글
| [독학! SQLP] NULL에 관하여! (0) | 2025.08.19 |
|---|---|
| [독학! SQLP] DCL? DDL? DML? TCL? (0) | 2025.08.19 |
| [독학! SQLP] 정규형? 정규화? 반정규화? (0) | 2025.08.19 |
| [독학! SQLP] 학습용 Oracle 설치 가이드 (1) | 2025.08.19 |
| [독학! SQLP] 데이터 모델? 데이터 모델링? 데이터 독립성? (4) | 2025.08.18 |