엔터티(Entity)
- "개체" 라고 표현하며 정보의 세계에서 의미있는 하나의 정보 단위를 뜻함
- 데이터베이스에서 레코드가 개체에 해당
엔터티와 인스턴스
- 엔터티는 인스턴스(Instance)의 집합
- 인스턴스는 데이터베이스 테이블에 저장된 특정한 데이터 내용의 전체 집합 즉, 하나의 행(row)을 의미
- 하나의 인스턴스가 갖는 각각의 특징을 속성(Attribute)라고 하고 이는 테이블의 열(column)에 해당
엔터티의 특징
- 업무에서 필요로 하는 정보
- 식별 가능 여부 : 인스턴스가 식별자에 의해 한 개씩만 존재하는지 검증
- 인스턴스의 집합 : 기본적으로 2개 이상의 인스턴스로 엔터티 구성
- 업무 프로세스에 의해 활용되어야 함
- 속성을 포함해야 함 : 주식별자만 존재하고 일반 속성이 없는 경우 엔터티 X
- 관계의 존재 : 다른 엔터티와의 연관성
엔터티의 분류
- 유/무형에 따른 분류
- 유형 엔터티
- 물리적인 형태가 존재
- 안정적이고 지속적 - 개념 엔터티
- 개념적인 정보로 구분 - 사건 엔터티
- 특정한 이벤트에 종속
- 업무 수행에 따라 발생되는 엔터티로 비교적 발생량이 많으며 각종 통계에 이용
- 유형 엔터티
- 발생 시점에 따른 분류
- 기본/키 엔터티
- 독립적인 생성 가능
- 다른 엔터티의 부모 역할 = 고유한 주식별자를 가짐 - 중심 엔터티
- 기본 엔터티로부터 발생
- 처리해야 하는 데이터의 양이 많음
- 다른 엔터티와의 관계를 통해 많은 행위 엔터티 생성 - 행위 엔터티
- 두 개 이상의 부모 엔터티로부터 발생
- 자주 내용이 바뀌거나 데이터의 양 증가
- 기본/키 엔터티
엔터티 네이밍 방식
- 가능한 업무에서 사용하는 용어 사용
- 축약어 사용 X
- 단수 명사 사용하고 띄어쓰기 X
- 모든 엔터티는 유일한 이름 부여 = 엔터티 이름 중복 X
- 엔터티 생성 의미대로 이름 부여
속성(Attribute)
- 인스턴스가 가진 어떠한 성질
- 더이상 분리되지 않는 최소의 데이터 단위
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합
- 한 개의 엔터티는 두 개 이상의 속성으로 구성
- 한 개의 속성은 한 개의 속성값을 가짐
속성의 특징
- 업무에서 필요로 함
- 더 이상 분리되지 않는 그 자체로 독립성 유지 ➡️ 가장 작은 단위
- 엔터티를 설명하고 인스턴스의 구성요소가 됨
- 정규화 이론에 기반을 두고 정해진 주식별자에 함수적 종속성을 가져야 함
- 하나의 속성은 한 개의 값만 가짐
속성의 분류
- 특징에 따른 분류
- 기본 속성
- 업무로부터 추출된 모든 속성
- 가장 많은 종류 차지 - 설계 속성
- 데이터 모델링, 업무의 규칙화 등을 위해 새로 만들거나 변형하여 정의하는 속성 - 파생 속성
- 다른 속성에 영향을 받아 발생하는 속성
- 데이터 정합성(정확성)을 유지하기 위해서는 가급적 파생적 속성을 적게 정의하는 것이 좋음
- 기본 속성
- 엔터티 구성 방식에 따른 분류
- PK(Primary Key) 속성
- 엔터티를 식별할 수 있는 속성
- 주식별자 - FK(Foreign Key) 속성
- 다른 엔터티와의 관계에 포함된 속성 - 일반 속성
- PK, FK에 포함되지 않는 속성
- PK(Primary Key) 속성
도메인
- 각 속성이 가질 수 있는 값의 범위
- 엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약 사항 등 지정
속성의 명명
- 가능한 업무에서 사용하는 용어 사용
- 축약어 사용 X
- 서술형보다 명사형 사용
- 수식어가 많이 붙지 않고 명확하게 의미 파악 > 명시적인 형태
- 전체 데이터 모델에서 유일하게 작성
🌟 관계(Relationshiop)
- 사전적으로 정의하면 "상호 연관성이 있는 상태"
- 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
관계의 종류
- 존재에 의한 관계 : 소속/포함의 형태
- 행위에 의한 관계 : 행동/행위의 결과
UML(Unified Modeling Language) - 통합 모델링 언어
- 표준화된 범용 모델링 언어
- 추상화된 시스템을 특정한 모델로 표현해주는 언어
- ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 표현
- 클래스 다이어그램에서는 이를 구분하여 연관 및 의존 관계로 표현
관계 표기법
- 관계명(Membership)
- 엔터티가 관계에 참여하는 형태 지칭
- 관계시작점 - 관계끝점
- 관계 표기법
![]() |
![]() |
- 관계차수(Degree/Cardinality) 🌟
- 1:1(ONE TO ONE) 관계 표시
- 관계에 참여하는 각 엔터티는 관계를 맺는 다른 엔터티에 대해 하나의 관계로 연결 - 1:M(ONE TO MANY) 관계 표시
- 관계에 참여하는 각 엔터티는 관계를 맺는 다른 엔터티에 대해 하나 혹은 그 이상의 관계로 연결
- 이 방향은 한쪽 방향에만 해당 - M:M(MANY TO MANY) 관계 표시
- 1:M 관계가 양방향에서 모두 발생하는 경우
- 1:1(ONE TO ONE) 관계 표시
관계선택사양(Optionality)
- 데이터 모델 관계에서는 '선택참여관계(Optional)'가 핵심
- 필수 조건
- 필수 사항은 실선으로 표시
- 상대 Entity에 대한 해당 조건을 만족하는 Entity가 반드시 존재할 경우 표시
- | 로 표현 (IE)
- 선택 조건
- 선택 사항은 점선으로 표시
- 상대 Entity에 대한 해당 조건을 만족하는 Entity가 존재할 수도 혹은 아닐 수도 있는 경우 표시
- o 로 표현 (IE)
관계 정의 시 체크 사항
- 두 엔터티 사이에 관심 있는 연관 규칙 존재 여부
- 두 개의 엔터티 사이에 정보의 조합 발생 여부
- 업무 기술서, 장표에 관계 연결 규칙 존재 여부
- 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb) 존재 여부
식별자(Identifier)
- 집합체를 구분할 수 있는 구분자
- 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에서 엔터티를 대표할 수 있는 속성
- 하나의 엔터니는 반드시 하나의 유일한 식별자가 존재
주식별자(PK) 특징
- 유일성
- 주식별자에 의해 엔터티 내에서 모든 인스턴스들을 유일하게 구분 - 최소성
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수 - 불변성
- 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 - 존재성
- 주식별자가 지정되면 반드시 데이터 값이 존재 ➡️ NULL 값 허용 X
식별자 분류
- 대표성 여부
- 주식별자
- 엔터티 내에서 각 인스턴스를 구분할 수 있는 구분자
- 다른 엔터티와 참조 관계 연결 O - 보조 식별자
- 엔터티 내에서 각 인스턴스를 구분할 수 있는 구분자
- 대표성을 갖지 못해 참조 관계 연결 X
- 주식별자
- 스스로 생성 여부
- 내부 식별자
- 엔터티 내부에서 정의 - 외부 식별자
- 다른 엔터티와의 관계를 통해 다른 엔터티로부터 받아옴
- 내부 식별자
- 속성의 수
- 단일 식별자
- 복합 식별자
- 대체 여부
- 본질 식별자
- 업무에 의해 만들어지는 식별자 - 인조 식별자
- 원조 식별자가 복잡한 구성을 갖고 있기 때문에 인위적으로 만든 식별자
- 본질 식별자
식별자 표기법
주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성
- 명칭, 내역 등과 같이 특정한 이름으로 기술되는 것은 가능하면 주식별자로 사용 X
- 복합으로 주식별자를 구성하는 경우 너무 많은 속성 포함 X
➡️ 주식별자 속성이 너무 많을 경우 인조식별자를 통해 단순화
식별자 관계
- 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우 NULL 값 없어야 함
- 자식 엔터티의 주식별자로 부모 주식별자가 상속되는 경우
비식별자 관계
- 부모 엔터티로부터 속성을 받았지만 자식 엔터티의 주식별자로 사용하지 않고 일반 속성으로만 사용
- 받은 속성이 필수가 아니어도 무방하기 때문에 부모 식별자가 없는 자식 식별자로 생성되는 경우
- 엔터티 별로 데이터 생명 주기를 다르게 관리할 경우
- 여러 개의 엔터티가 하나로 통합되어 표현되었는데, 각 엔터티가 별도의 관계를 갖는 경우
- 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단할 경우
식별자 관계와 비식별자 관계의 모델링
- 식별자 관계 선택 프로세스
- 식별자와 비식별자의 관계 비교
분류 | 식별자 관계 | 비식별자 관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 엔터티의 주식별자 구성에 포함 | 자식 엔터티의 일반 속성에 포함 |
표기법 | 실선(IE) / 버티컬바 | (Barker) | 점선(IE) |
연결 고려사항 | - 반드시 부모 엔터티에 종속 - 자식 주식별자 구성에 부모 엔터티 주식별자 속성이 필요한 경우 사용 - 상속받은 주식별자 속성을 타 엔터티에 이전 필요 |
- 자식 주식별자 구성을 독립적으로 구성할 경우 사용 - 자식 주식별자 구성에 부모 주식별자 부분 필요 - 상속 받은 주식별자 속성을 다른 엔터티에 차단 필요 - 부모 쪽의 관계 참여가 선택 관계 |
'스파르타 코딩클럽 > [강의] SQLD 자격증 대비반' 카테고리의 다른 글
[SQLD 자격증 대비반] 챕터 7. 관계형 데이터베이스와 DDL (0) | 2024.02.27 |
---|---|
[SQLD 자격증 대비반] 챕터 5. 데이터베이스 성능 (0) | 2024.02.22 |
[SQLD 자격증 대비반] 챕터 4. 성능 데이터 모델링과 정규화 (0) | 2024.02.21 |
[SQLD 자격증 대비반] 챕터 2. 데이터 모델링 (0) | 2024.01.02 |
[SQLD 자격증 대비반] 챕터 1. SQL과 데이터베이스 (0) | 2023.12.18 |