관계는 엔티티끼리 상호 연관성이 있는 상태를 의미한다.
- 관계는 데이터 모델 내에 존재하는 엔티티 간 논리적인 연관성을 의미한다.
관계는 "부서"엔티티와 "사원"엔티티의 관계와 같이 "존재에 의한 관계" 가 있고,
"고객"엔티티와 "주문"엔티티의 관계와 같이 "행위에 의한 관계" 가 있다.
관계를 사전적으로 정의하면 상호 연광성이 있는 상태로 말할 수 있다.
이것을 데이터 모델에 대입하여 정의하면
"엔티티 인스턴스사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태"라고 할 수 있다.
관계는 엔티티와 엔티티 간 연관성을 표현하기 때문에 엔티티의 정의에 따라 영향을 받기도 하고, 속성 및 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.
관계의 페어링은 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것이고 이것의 집합을 관계로 표현한다는 것이다.
1:1 관계란 어느 엔티티쪽에서 상대 엔티티를 보더라도,
반드시 단 하나씩 관계를 가지는 것 을 말한다.
하나의 부모 엔티티에 연결된 자식 엔티티는 하나밖에 올 수 없는 관계
Ex) 사원번호 - 주민번호
- 사원번호, 주민등록번호는 모두 고유한 사원을 가리킨다.
- 사원번호 하나엔 하나의 주민등록번호만 대응될 수 있다.
Ex) 전화번호 - 유저
- 각 전화번호가 단 한 명의 유저와 연결되어 있고, 그 반대도 동일하다면
1:1 관계이다.
Ex) 남자 - 여자
예를 들어, 우리나라에서 결혼 제도는 일부일처제로,
한 남자는 한 여자와, 한 여자는 한 남자와 밖에 결혼을 할 수 없다.
- 남편 또는 부인을 2명 이상 둘 수 없는데, 이러한 관계가 1:1 관계다.
1:N 관계란 한쪽 엔티티가 관계를 맺은 엔티티 쪽에 여러 객체를가질 수 있는 것을 의미한다.
1:N 관계는 매우 흔한 방식으로, DB를 설계할 때 자주 쓰인다.
하나의 부모 엔티티에 연결된 자식 엔티티가 여러 개가 될 수 있는관계
Ex) 부모 - 자식
- 부모는 자식을 1명만 낳을수도 있고, 2명, 3명, 4명, 10명 그 이상도 낳을 수 있다.
- 여러 명의 자식(N)의 입장에서 한 쌍의 부모(1)중 어떤 부모에 속해 있는지 표현해야하므로 부모 테이블의 PK를 자식 테이블에 FK로 집어 넣어 관계를 표현한다.
-> PK(Primary Key) : 각 엔티티를 식별할 수 있는 대표키, 테이블에서 중복되지 않는(Unique) 값, Null일 수 없다.
-> FK(Foreign Key) : 다른 테이블의 기본키를 참조, 모든 필드는 참조하는 기본키와 동일한 도메인(값의 종류&범위)을 갖는다.
모든 필드 값은 참조하는 기본키와 동일하거나 null 일 수 있다.
즉, 부모 테이블(1)에서는 내 자식들이 누구인지 정보를 넣을 필요가 없고, 자식 테이블(N)에서만 각각의 자식들이 자신의 부모 정보(FK)를 넣음 으로써 관계를 표현할 수 있다.
Ex) 부서 - 사원
- 부서에 여러 사원이 속한다. 사원은 여러 부서를 가질 수 없다.
Ex) 회원 - 게시글
- 회원은 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있다.
Ex) 상품 - 제조업체
- 각 상품은 한 제조업체가 공급하고, 제조업체 하나는 여러 상품을 공급한다.
N:M 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말한다.
즉, 서로가 1:N 관계로 보고 있는 것이다.
하나의 부모 엔티티와 연결된 자식 엔티티가 여러 개가 될 수 있고 여러 개의 부모 엔티티와 연결된 자식 엔티티가 하나가 될 수 있는 관계
Ex) 사원 - 업무
- 한명의 사원이 A업무, B업무를 동시에 할 수도 있고, A업무를 여러 사원이 같이 할 수도 있다.
Ex) 여행상품 - 고객
- 고객 한 명은 여러 개의 여행상품을 구매할 수 있고, 여행 상품 하나가 여러 개의 고객을 가질 수 있다.
Ex) 회원 - 상품
- 한 회원은 쇼핑몰의 여러 상품들을 가질 수 있다.
판매중인 상의, 하의, 모자, 신발 등- 반대로 한 티셔츠도 여러 회원들이 가질 수 있다.
내가 구매한 상의, 엄마가 구매한 상의, 친구가 구매한 하의 등
데이터 모델링에서 M:N관계는 완성되지 않는 모델로 간주되어
M:N관계를 1:N 관계로 전환시켜주는 작업을 필요로 한다.: N:M 관계는 관계(Relation)로 변환하라.
Ex) 회원 - 상품
- 한 회원은 쇼핑몰의 여러 상품들을 가질 수 있다.
판매중인 상의, 하의, 모자, 신발 등- 반대로 한 티셔츠도 여러 회원들이 가질 수 있다.
내가 구매한 상의, 엄마가 구매한 상의, 친구가 구매한 하의 등-> 주문(주문번호(PK), 회원번호(FK), 상품번호(FK), 주문수량)
관계선택사양(Optionality)는 관계차수로 연결된 엔티티간 필수적인 관계인지, 선택적인 관계인지를 정의하는 중요한 단계이다.
관계(Relation)
: 개체 간 의미 있는 연관성
- 요구사항 문장에서 개체 간의 연관성을 의미 있게 표현한 동사를 찾아라!
- 찾아낸 관계에 대해 매핑 카디널리티와 참여특성을 결정하라!
-> 매핑 카디널리티: 일대일(1:1), 일대다(1,N), 다대다(N:M)
-> 참여특성: 필수적 참여 / 선택적 참여- 필수적 참여: 개체가 반드시 참여해야 하는것을 의미.
Ex – 학생 개체가 수업개체와의 수강 관계에 필수적 참여- 선택적 참여: 개체중 일부만 관계에 참여해도 되는 것을 의미.
Ex – 도서 개체가 고객 개체와의 구매 관계에 선택적으로 참여