728x90
SMALL
- 이번에는 엔티티의 속성, 관계, 식별자 등에 대해 정리해 보겠습니다.
속성(Attibutes)
- 데이터 모델링 과정에서 엔티티를 정의한 후, 그 다음 과정은 각 엔티티의 세부 특성을 나타내는 '속성'을 식별하는 것이라고 볼 수 있습니다.
- 속성은 데이터 모델의 근본적인 구성 요소 중 하나로, 데이터베이스에서 관리되는 데이터의 성격과 특성을 정의합니다.
✅ 속성이란?
- 속성은 데이터베이스 시스템에서 엔티티를 구성하고, 엔티티의 특성을 설명하는, 더 이상 쪼개지지 않는 데이터의 최소 단위입니다.
- 예를 들어, '직원' 엔티티의 경우 '이름', '주소', '전화번호' 등이 이에 해당합니다.
- 각 속성은 엔티티의 구체적인 정보를 나타내며, 이 정보를 통해 엔티티의 인스턴스를 구별할 수 있습니다.
✅ 속성값이란?
- 속성값은 속성에 할당된 구체적인 데이터를 의미합니다.
- 예를 들어, '직원' 엔티티의 '이름' 속성에 할당된 '홍길동', '이순신' 등이 속성값입니다.
- 속성값은 해당 엔티티의 인스턴스마다 다를 수 있으며, 이를 통해 각 인스턴스는 고유한 정보를 가지게 됩니다.
- 만약 하나의 속성이 여러 개의 속성 값을 가지는 경우에는 별도의 엔티티로 분리하는 것이 바람직합니다.
✅ 엔티티 요소들 간의 관계
- 한 개의 엔티티는 두 개 이상의 인스턴스를 가집니다.
- 한 개의 인스턴스는 두 개 이상의 속성을 가집니다.
- 한 개의 속성은 하나의 속성값을 가집니다!
✅ 속성의 분류 2가지!
1. 어떤 특성을 가지고 있냐
기본 속성: 엔티티가 본래 가지고 있는 속성으로, 분석을 통해 바로 정의되는 속성입니다. 일부 설계 속성과 파생 속성을 제외한 모든 속성이 기본 속성입니다.
설계 속성: 업무 수행을 위해 인위적으로 도입된 속성입니다. 예를 들어 '학생'이라는 엔티티에선 '학번'이 설계 속성이 될 수 있습니다.
파생 속성: 다른 속성으로부터 계산이나 유추될 수 있는 속성입니다. 예를 들어 '이벤트' 엔티티의 '이벤트 응모 건수'나, 상품의 '재고' 등이 파생 속성이 될 수 있습니다.
2. 어떤 구성방식을 가지고 있냐
PK(Primary Key) 속성: 엔티티 내에서 각 인스턴스를 유일하게 식별할 수 있는 속성입니다.
FK(Foreign Key) 속성: 다른 엔티티와의 관계를 표현하기 위해 사용되는 속성입니다. 다른 엔티티의 PK 값과 일치하거나 NULL 값을 가질 수도 있습니다.
일반 속성: PK, FK를 제외한 나머지 속성입니다.
✅ 도메인이란?
- 도메인은 속성값이 가질 수 있는 범위나 집합을 의미합니다. 즉, 속성에 할당될 수 있는 모든 가능한 값의 집합입니다.
- 예를 들어, '성별' 속성의 도메인은 '남', '여'로 제한될 수 있습니다.
- 도메인은 데이터의 유효성, 무결성을 보장하는 데 중요한 역할을 합니다.
- 각 속성에 적절한 도메인을 설정함으로써, 데이터 입력 시 오류를 줄이고, 데이터의 정확성을 높일 수 있습니다.
✅ 용어 사전이란?
- 용어사전은 데이터 모델링 과정에서 사용되는 모든 엔티티, 속성, 도메인 등의 용어와 그 정의를 체계적으로 정리한 문서입니다.
- 데이터 모델을 이해하고 사용하는 데 있어 필수적인 참조 자료로, 프로젝트 팀 내외의 구성원들이 동일한 용어를 일관된 의미로 사용할 수 있도록 합니다.
관계(Relationship)
- 데이터 모델링에서 '관계'는 엔티티 간의 연관성을 나타내는 핵심 개념입니다.
- 관계를 통해 엔티티들 사이의 데이터 흐름과 상호작용을 정의하고, 복잡한 비즈니스 로직과 데이터 구조를 효과적으로 모델링할 수 있습니다.
✅ 관계란?
- 관계는 두 개 이상의 엔티티 사이에 존재하는 논리적인 연결을 의미합니다.
- 관계는 엔티티들이 어떻게 상호작용하는지, 어떤 정보를 주고받는지를 명시적으로 표현하며, 데이터 모델의 구조와 무결성을 결정하는 데 중요한 역할을 합니다.
✅ 존재 관계란?
- 존재 관계(Existential Relationship)는 한 엔티티의 존재가 다른 엔티티의 존재에 의존하는 관계를 말합니다.
- 일반적으로 '부모-자식' 관계로 표현되며, 자식 엔티티의 인스턴스가 부모 엔티티의 인스턴스 없이는 존재할 수 없음을 나타냅니다.
- 예를 들어, '부서' 엔티티와 '직원' 엔티티 사이에 존재하는 관계에서, 특정 '직원'은 반드시 하나의 '부서'에 속해야 합니다.
✅ 행위 관계란?
- 행위 관계(Action Relationship)는 엔티티 간의 관계가 특정 행위나 이벤트에 의해 정의되는 경우를 말합니다.
- 예를 들어, '고객'과 '주문' 엔티티 사이의 관계에서, '고객'이 '주문'을 하는 행위를 통해 두 엔티티는 연결됩니다.
✅ 관계를 표기하는 요소 3가지!
- 관계명: 관계를 설명하는 명칭으로, 두 엔티티 사이의 연관성을 직관적으로 이해할 수 있게 합니다.
- 관계차수: 관계가 연결하는 엔티티의 수를 나타냅니다. 일대일(1:1), 일대다(1:N), 다대다(M:N) 등이 이에 해당합니다.
- 관계선택사양: 관계의 필수성 여부를 나타내며, 특정 엔티티의 인스턴스가 다른 엔티티와 관계를 맺어야 하는지 여부를 명시합니다. 선택적(Optional) 또는 필수적(Mandatory) 관계로 구분됩니다.
식별자(Identifiers)
- 데이터 모델링 과정에서 엔티티를 구분하고, 엔티티의 인스턴스 간의 관계를 명확히 하는 데 필수적인 요소가 바로 '식별자'입니다.
- 식별자는 데이터베이스 내에서 각 인스턴스를 고유하게 식별할 수 있는 하나 이상의 속성의 집합입니다.
✅ 식별자란?
- 식별자는 엔티티의 각 인스턴스를 구별하기 위해 사용되는 대표적인 속성(또는 속성들의 조합)입니다.
- 이는 엔티티 내에서 각 인스턴스가 서로 다른 값을 가지도록 보장합니다.
✅ 주식별자란?
- 주식별자(Primary Identifier)는 엔티티 내에서 각 인스턴스를 유일하게 식별할 수 있는 주된 속성입니다.
- 주식별자의 값은 엔티티 내의 모든 인스턴스에 대해 고유해야 하며, 변경되거나 빈 값이 될 수 없습니다.
✅ 주식별자의 특징 4가지!
- 유일성: 주식별자에 의해 모든 인스턴스들이 유일하게 구분됩니다.
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 합니다.
- 불변성: 지정된 주식별자의 값은 자주 변하지 않아야 합니다. 변하게 되면 이전 기록이 말소됩니다.
- 존재성: 주식별자가 지정되면 반드시 값이 들어와야 합니다.
✅ 식별자의 분류 4가지!
1. 대표성을 띠고 있냐
주식별자(Primary Identifier): 다른 엔티티와 참조 관계로 연결되는 대표 식별자입니다.
보조식별자(Alternate Identifier): 주식별자 외에 인스턴스를 식별할 수 있는 추가적인 속성입니다. 다른 엔티티와 참조 관계로 연결되어 있지 않습니다.
2. 스스로 생성되었냐
내부식별자(Internal Identifier): 시스템 내부에서 스스로 생성되어 관리되는 식별자입니다.
외부식별자(Foreign Identifier): 외부 엔티티나 사용자에 의해 부여되는 식별자입니다.
3. 속성의 개수가 몇 개냐
단일식별자(Single Identifier): 단일 속성으로 구성된 식별자입니다.
복합식별자(Composite Identifier): 두 개 이상의 속성을 조합하여 만들어진 식별자입니다.
4. 대체 가능하냐
원조 식별자(Original Identifier): 업무에 의해 만들어지는 식별자입니다.(본질식별자)
대리 식별자(Surrogate Identifier): 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는, 인위적으로 만들어진 식별자입니다.(인조식별자)
✅ 식별자 관계와 비식별자 관계
- 식별자 관계(Identification Relationship): 자식 엔티티의 주식별자가 부모 엔티티의 식별자를 포함하는 관계입니다. 이는 자식 엔티티가 부모 엔티티 없이는 존재할 수 없음을 의미하고, 단일이냐, 복합이냐에 따라 1:1 관계이거나, 1:M 관계가 될 수 있습니다.
- 비식별자 관계(Non-Identification Relationship): 부모 엔티티의 식별자가 자식 엔티티의 주식별자가 아닌 일반 속성이 되는 관계입니다. 자식 엔티티는 부모 엔티티와 독립적으로 식별될 수 있으며, 두 엔티티 간의 연결은 선택적일 수 있습니다.
728x90
LIST
'자격증 > SQLD' 카테고리의 다른 글
SQL 기본 (1) (0) | 2024.02.19 |
---|---|
데이터 모델과 SQL (2) (0) | 2024.02.15 |
데이터 모델과 SQL (1) (1) | 2024.02.12 |
데이터 모델링의 이해 (3) (2) | 2024.02.10 |
데이터 모델링의 이해 (1) (5) | 2024.02.09 |