Basic_Database: 2 [ 1:1 1:n N:M ]
# 이글은 교내 튜터링 목적으로 작성된 글입니다.
기초적인 데이터베이스 내용을 다루고 있으며 가벼움 주의!
관계란?
DataBase에서 관계는 설계자가 객체를 바라보는 관점에 초점을 두게 됩니다.
DataBase에서 관계는 설계자가 객체를 바라보는 관점에 초점을 두게 됩니다.
DB를 정확하게 설계하기 위해서는 엔티티간의 관계를 명확하게 설정을 해야 할 것입니다. 또한 개발자의 관점 또는 객체의 성질, 프로젝트의 목적에 따라 관계는 달라질 수 있습니다. 최대한 정답에 근접하게 관계를 설정하기 위해서는 기본적인 1:1, 1:N, N:M 관계의 개념을 이해할 필요가 있을것 입니다.
1) 1:1 관계
-
양측 엔티티에서 서로 상대 엔티티를 바라볼 때 반드시 단 하나씩의 관계를 가지는것을 뜻합니다.
예시1) 한 사원은 하나의 차량만을 회사 주차장에 등록해야 한다.
이때 사원과 차량의 관계는 1:1 입니다.
예시2) 국가 - 수도 , 부서-부서장 등등...
국가-수도 관계에서 1:1 관계의 예외사항이 존재하기도 합니다. 예를들어 남아공 같은 경우는 행정수도: 프리토리아 , 입법수도: 케이프 타운, 사법수도: 블룸폰테인과 같이 3개의 수도를 갖고 있게 되는데, 일반적으로 수도는 높은확률로 한개만 존재하기 때문에 국가-수도 관계는 1:1 관계로 설정할 수 있습니다.
2) 1:N 관계
-
양측 엔티티에서 부모 엔티티는 자식 엔티티를 여러개 연결할 수 있으며, 자식 엔티티는 부모 엔티티 하나와 연결되는 관계입니다.
예시1) 사원들이 등록한 주차장을 예로 들어 주차장은 여러대의 차량과 연결되어 있지만 차량들은 하나의 주차장에만 소속된다.
이때 주차장과 차량의 관계는 1:N 관계가 형성됩니다. [주차장_1 : 차량_N]
** 일반적이지 않은 예시를 들려다 보니 명확하게 표현이 어려운점 죄송합니다..> ERD 다이어그램 실선? 점선?
2.1) 실선 ( Identifying )
- 부모 테이블의 기본키(PK)가 참조키(FK)로써 자식테이블의 PK로 존재하는경우 (부모-자식관계 명확)
-> 부모 테이블의 기본키가 자식테이블에서도 기본키로 존재하는 경우를 뜻합니다.Ex) 게시판 댓글
-
회원 엔티티의 PK인 회원번호는 댓글 엔티티에서 FK이자 PK로 존재하기 때문에 실선(Identifying)으로 연결할 수 있습니다.
추가설명) 일반적으로 댓글 정보는 [댓글ID-작성자ID] 쌍을 이루게 됩니다. 만약 댓글ID만 기본키로 잡혀있다면 이 글의 작성자가 누구인지 검색해야 할 때 효율적이고 빠른 검색이 힘들 수 있습니다. 또한 댓글은 일반적으로 작성자에 의해서 쓰여지기 때문에 작성자의해 생성된다는 점 참고하시면 좋을것 같습니다.
2.2) 점선
- 부모 테이블의 기본키(PK)가 참조키(FK)로써 자식테이블의 일반속성으로 존재하는 경우 (부모없이도 자식이 생기는 경우)
Ex) 부서-사원 관계
-
부서와 사원의 관계는 1:N의 관계이며 부서엔티티의 PK는 사원엔티티에서 FK로 존재하고 있다. 이때 부서ID는 왜 사원엔티티에서 PK로 존재하는것이 아닌 일반속성으로 설정이 되어있는가?
"사원은 꼭 부서에 소속되어 있어야 하는것은 아니다."
-
사원은 꼭 부서에 소속되어 있어야 하는것은 아니다. 조금더 명확하게 들어가 보겠습니다. 일반적으로 신입사원이 회사에 입사를 했다고 가정할 때 사원은 바로 부서에 소속될 수 있지만 부서에 일정 기간 동안 소속되어 있지 않은 상태에서 사원 신분일 수 있습니다.
이때 사원이 부서에 소속되어 있지 않을 때 부서ID는 사원테이블에서 Null값을 가지게 되는데기본키는 절대적으로 Null값을 가져서는 안된다.
즉, 개체무결성 원칙을 위반하게 되는 경우가 발생하므로 사원테이블에서 부서ID는 FK이자 일반속성으로 존재시키는것이 좋습니다.
3) N:M 관계
-
N:M관계는 양측 엔티티 서로간의 관계가 1:N으로 맺어지는 관계입니다.
한번 예를 들어볼까요?"학원은 여러 학생들이 존재합니다. 또한 학생도 여러 학원을 등록할수 있습니다."
어떠신가요? 한번 다른 예를 들어보겠습니다.
- 강의는 여러 학생들이 수강 합니다. 또한 학생도 여러 강의를 수강할 수 있습니다.
- 쇼핑몰에서 회원은 여러 상품들을 주문할 수 있으며 한 상품 또한 여러 회원들이 주문할 수 있습니다.
이렇듯 N:M관계는 양측 엔티티가 쌍방향적으로 1:N관계를 갖는것을 확인할 수 있습니다.
Note!) N:M 관계를 테이블로 연결짓을 때는 각 테이블의 기본키를 외래키로 참조하는 매핑테이블이 탄생하게 됩니다.
Author And Source
이 문제에 관하여(Basic_Database: 2 [ 1:1 1:n N:M ]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kingksy777/BasicDatabase-2-11-1n-NM저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)