## 공부정리
1장 데이터 모델링의 이해 2편
4) 관계
5) 식별자
#4 관계
1 관계와 페어링(Pairing)
관계 : 엔티티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
페어링 : 엔티티 내 인스턴스간 개별적 관계 -> 이것의 집합을 관계로 표현
인스턴스의 집합 → 엔티티 페어링의 집합 → 관계
2 관계의 분류
1) ERD(Entity Relationship Diagram)
존재에 의한 관계, 행위에 의한 관계 => 구분 없이 단일화된 표기법 사용
2) UML(Unified Modeling Language)
연관 관계(연관(존재적)관계는 항상 이용하는 관계), 의존 관계(상대방 행위에 의한 발생하는 관계) => 실선과 점선 표기번으로 구분
3 관계의 표기법
1) 관계명
엔티티가 관계에 참여하는 형태, 각 관계는 2개의 관계명 및 관점을 가짐
2) 관계차수(Cardinaty)
1 : 1(일대일), 1 : M(일대다), M : M(다대다) => 관계 엔티티 이용
3) 관계선택사양
필수참여(Mandatory), 선택참여(Optional) (필수는 |, 선택은 O 로 표시)
4 관계 읽기
1) 1 : 1(일대일) 관계차수
2) 1 : M(일대다) 관계차수
3) M : M(다대다) 관계차수
4) 관계의 분류
5) 관계 읽는 방법
- 기준엔터티를 한개 또는 각으로 읽는다.
- 대상엔터티의 관계참여도, 즉 개수를 읽는다.
- 관계선택사양과 관계명을 읽는다.
6) 관계의 정의
두 개의 엔터티 사이에 간심있는 연관규칙이 존재하는가?
두 개의 엔터티 사이에 정보의 조합이 발생하는가?
업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
#5 식별자
1 식별자의 개념
하나의 엔터티에 구성되어 있는 여러 개 속성 중 엔터티를 대표할 수 있는 속성을 의미
하나의 엔터티는 반드시 하나의 유일한 식별자가 존재
2 식별자의 분류
분류 | 식별자 | 설명 |
대표성 | 주식별자 | - 엔터티 내에서 각 인스턴스를 구분가능 - 타 엔터티와 참조관계를 연결가능(primary key에 해당) |
보조식별자 | - 엔터티 내에서 각 인스턴스를 구분가능 - 대표성을 갖지 못해 참조관계 연결에 사용되지 않음(candidate key에 해당) |
|
목적 | 내부식별자 | - 자연스럽게 존재하는 식별자(본질식별자) |
외부식별자 | - 관계를 통해 유입되는 타 엔터티의 식별자(foreign key에 해당) - 주식별자 속성 또는 일반 속성으로 포함될 수 있음 |
|
속성 수 | 단일식별자 | - 하나의 속성으로 구성된 식별자 |
복합식별자 | - 둘 이상의 속성으로 구성된 식별자 | |
본질 | 본질식별자 | - 업무에 의해 만들어지는 식별자 |
인조식별자 | - 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 |
3 식별자의 특징
- 유일성 : 주식별자에 의해 엔터티 내의 모든 인스턴스들을 유일하게 구분함
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성 : 주식별자가 지정되면 그 식별자의 값은 변하지 않아야 함
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함(Not Null)
4 주식별자 도출 기준
- 유일성을 갖는 속성 중 해당 업무에서 자주 이용되는 속성을 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정 X
→ 구분자가 존재하지 않을 경우 새로운 식별자 생성(일련번호, 코드 등)
- 복합식별자를 구성할 경우 너무 많은 속성이 포함되지 않아야 함
→ 주식별자 개수가 많을 경우 새로운 인조식별자를 생성
5 식별자 관계와 비식별자 관계
1) 식별자 관계(실선)
- 자식이 부모의 기본키(PK)를 상속받아 기본키로 사용하는 경우
- 강한 연결관계, 부모에 종속, Not Null, 1 : 1, 1 : N 관계
- 문제점 : 자식의 주식별자 속성이 지속적으로 증가할 수 있음 -> 복잡, 오류 가능성
2) 비식별자 관계(점선)
- 부모로부터 속성을 받아 일반 속성으로 사용하는 경우(약한 종속)
- 문제점 : 부모까지 조인, 불필요 현상 발생 -> SQL 구문이 길어져 성능 저하
'SQL 공부일지' 카테고리의 다른 글
SQL 공부 일지 6일차 230818 (1) | 2023.08.19 |
---|---|
SQL 공부 일지 5일차 230816 (1) | 2023.08.17 |
SQL 공부 일지 4일차 230814 (0) | 2023.08.14 |
SQL 공부 일지 3일차 230812 (0) | 2023.08.12 |
SQL 공부 일지 1일차 230809 (0) | 2023.08.09 |