관계형 데이터베이스에서, one-to-many(일대다), many-to-one(다대일), many-to-many(다대다)는 엔터티(테이블) 간의 관계를 설명하는 세 가지 주요 유형의 관계이다.
- One-to-Many (일대다) 관계:
- 한 쪽 엔터티(테이블)의 레코드가 다른 쪽 엔터티에서 여러 레코드와 관련된 경우이다.
- 예를 들어, 하나의 부서에 여러 개의 직원이 속하는 경우가 일대다 관계이다. 부서는 한 쪽에 위치하고, 여러 개의 직원은 다른 쪽에 위치한다.
- Many-to-One (다대일) 관계:
- 일대다 관계의 반대로, 다수의 레코드가 다른 테이블의 하나의 레코드와 관련된 경우이다.
- 위의 예에서 직원(다수)과 부서(하나)의 관계가 다대일 관계이다.
- Many-to-Many (다대다) 관계:
- 두 엔터티(테이블) 간에 양쪽 모두에서 다수의 레코드가 서로 관련된 경우이다.
- 예를 들어, 학생과 강의 간의 관계가 있습니다. 하나의 학생이 여러 개의 강의를 수강하고, 한 강의는 여러 학생에게 수강될 수 있다.
- 이러한 관계는 보통 중간 테이블이나 링크 테이블을 사용하여 나타낼 수 있습니다. 이 테이블은 두 엔터티 간의 관계를 표현하며, 각각의 레코드는 두 엔터티 간의 관계를 나타낸다.
이러한 관계를 통해 데이터베이스 설계 시 데이터의 일관성과 효율성을 유지할 수 있다. 각 관계는 특정 비즈니스 요구사항에 따라 선택되고, 적절한 관계를 설정하여 데이터베이스의 정확성과 효율성을 최적화할 수 있다.
[markdown 언어를 이용하여 그림으로 표현하기]
One-to-Many (일대다) 관계:
[부서 테이블]
---------------------
| 부서ID | 부서이름 |
---------------------
| 1 | 영업부 |
| 2 | 개발부 |
| 3 | 인사부 |
---------------------
[직원 테이블]
---------------------
| 직원ID | 이름 | 부서ID |
---------------------
| 101 | 철수 | 1 |
| 102 | 영희 | 2 |
| 103 | 민수 | 1 |
---------------------
[부서 테이블]
---------------------
| 부서ID | 부서이름 |
---------------------
| 1 | 영업부 |
| 2 | 개발부 |
| 3 | 인사부 |
---------------------
Many-to-One (다대일) 관계:
[직원 테이블]
---------------------
| 직원ID | 이름 | 부서ID |
---------------------
| 101 | 철수 | 1 |
| 102 | 영희 | 2 |
| 103 | 민수 | 1 |
---------------------
다대다(Many-to-Many) 관계:
[학생 테이블]
---------------------
| 학생ID | 학생이름 |
---------------------
| 1 | 철수 |
| 2 | 영희 |
| 3 | 민수 |
---------------------
[강의 테이블]
---------------------
| 강의ID | 강의이름 |
---------------------
| 101 | 수학 |
| 102 | 영어 |
| 103 | 과학 |
---------------------
[학생-강의 링크 테이블]
---------------------
| 학생ID | 강의ID |
---------------------
| 1 | 101 |
| 1 | 102 |
| 2 | 102 |
| 3 | 101 |
| 3 | 103 |
---------------------
'Computer Science' 카테고리의 다른 글
B-tree의 시간복잡도(검색,삽입,삭제) (0) | 2024.05.29 |
---|---|
[자료구조] 기존 bst와 avl 트리를 개선한, B-tree에 관하여 (0) | 2024.05.28 |
[데이터베이스] View에 대하여 (개념 및 정의) (0) | 2024.02.25 |
[데이터베이스] Null Value에 대하여(null은 뭘 뜻할까?) (0) | 2024.02.24 |
[데이터베이스] DDL/ DML에 대하여 (0) | 2024.02.23 |