양쪽 Entity 모두가 서로에게 1:N 관계를 갖는 구조
N:M 구조에서는 보통 새로운 table(Mapping table)을 통해 관계를 맺음.
하나의 Entity가 관계를 맺은 Entity의 여러 객체를 가질 수 있는 구조
두 table간의 관계를 mapping cardinality로 표현
1:N 구조에서는 보통 primary key - foreign key를 사용하여 관계를 맺음
Foreign(외래키)는 두 table을 연결할 때 한 table의 외래키가 다른 하나의 table의 기본키
위 예시와 같은 상황에서 고객의 정보가 변경되어도 주문내역 table은 수정할 필요가 없어 효율적인 데이터베이스 운영이 가능함
두 개 이상의 테이블을 서로 연결하여 하나의 결과를 만들어 보여주는 것
두 테이블에 모두 있는 내용만 join되는 방식
왼쪽 table의 모든 행에 대해서 join을 진행
[SQL JOIN 예시]
id | title | a_id |
---|---|---|
1 | 알고리즘 | 2 |
2 | 자료구조 | 4 |
3 | 운영체제 | 3 |
4 | 프로그래밍 | 2 |
5 | SQL | Null |
id | name | 전공 설명 |
---|---|---|
1 | John | Design |
2 | Hyuk | CS |
3 | Jessi | Programming |
select * from book inner join author on book.a_id = author.id;
id | title | a_id | name | 전공 설명 |
---|---|---|---|---|
1 | 알고리즘 | 2 | Hyuk | CS |
2 | 자료구조 | 2 | Hyuk | CS |
3 | 운영체제 | 3 | Hyuk | CS |
4 | 프로그래밍 | 3 | Jessi | Programming |
두 table에 공통된 데이터가 존재하는 행에 대해서만 데이터를 검색합니다.
select * from book left join author on book.a_id = author.id;
id | title | a_id | name | 전공 설명 |
---|---|---|---|---|
1 | 알고리즘 | 2 | Hyuk | CS |
2 | 자료구조 | 2 | Hyuk | CS |
3 | 운영체제 | 3 | Hyuk | CS |
4 | 프로그래밍 | 3 | Jessi | Programming |
5 | SQL | Null | Null | Null |
왼쪽 vedio table의 모든 데이터를 포함한 데이터를 검색합니다.