일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- constraint
- 일기
- 30일글쓰기
- 직장인일기
- 회사생활
- Update
- 환생
- 인덱스
- 보울룸
- 테이블삭제
- ROWNUM
- null
- 30일챌린지
- 넷플릭스
- ERD
- 회사싫어
- where절
- Drop
- data
- SQLD
- rename
- 직장생활
- 빅데이터
- 전생
- 홈트
- SQL
- INSERT
- 도전
- 책리뷰
- 데이터모델링
- Today
- Total
최보름달
[SQL] 관계(Relationship) 본문
관계의 정의
- 엔티티의 인스턴스 사이의 논리적인 연관성으로서 존재하는 형태로서나 행위로서 서로에게 연관성이 부여된 상태.
관계의 패어링
- 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔티티 사이에 두 개 이상의 관계가 형성될 수 있다.
- 각각의 엔티티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 패어링 이라고 함.
- 엔티티가 인스턴스의 집합을 논리적으로 표현한 것이라면, 관계는 관계 패어링의 집합을 논리적으로 표현한 것.
관계의 분류
- 존재에 의한 관계 ex) 사원이 부서에 '소속한다' 는 어떤 이벤트가 있어서가 아니라 A사원이 존재하기에 소속되는 것.
- 행위에 의한 관계 ex) 고객이 '주문한다'는 어떠한 행위에 의해 발생하는 것.
UML(Unified Modeling Language)에는 클래스다이어그램 관계 중 연관관계와 의존관계가 있다.
- 연관 관계: 항상 이용하는 관계. 존재적 관계
- 의존 관계: 상대방 클래스의 행위에 의한 관계.
ERD에서 연관관계는 실선, 의존관계는 점선으로 표현한다.
관계의 표기법
- 관계명: 관계의 이름
- 관계차수: 1:1, 1:N, M:N
- 관계선택사양: 필수관계, 선택관계
관계명
- 관계시작점과 관계끝점에 이름을 붙인다.
- 관계이름이 능동적이거나 수동적으로 명명된다.
- 관계명 이름짓는 방법 : 애매한 동사를 피하고 현재형으로 표현한다.
관계차수(cardinality)
- 두 개의 엔티티간 관계에서 참여자의 수를 표현하는 것.
- 한 개가 참여하는 경우 실선을 그대로 유지하고, 다수가 참여한 경우 까마귀 발과 같은 형태로 그려준다.
관계선택사양
- 반드시 지하철 문이 닫혀야만 지하철이 출발한다 -> 필수참여관계
- 지하철 안내방송시스템 (출발과 상관없이 방송해도 문제 없므로) -> 선택적 관계. ERD에서 선택참여하는 쪽을 원으로 표시함.
관계를 정의할 때 체크리스트
- 두 개의 엔티티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔티티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
관계 읽는 방법
- 관계에 참여하는 기준 엔티티를 하나 또는 각(each)로 읽는다.
- 대상 엔티티의 관계참여도(개수)를 읽는다.
- 관계선택사양과 관계명을 읽는다.
* kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다
'문송한 회사생활 > SQL 공부' 카테고리의 다른 글
[SQL] 성능 데이터 모델링 (0) | 2020.07.19 |
---|---|
[SQL] 식별자 (Identifiers) (0) | 2020.07.19 |
[SQL] 속성(Attribute) (0) | 2020.07.15 |
[SQL] 엔티티(Entity) (0) | 2020.07.15 |
[SQL] 좋은 데이터 모델의 요소 (0) | 2020.07.15 |