관계형 데이터베이스(Oracle, MySQL, etc)는 엔티티끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙음
Entity
란 DataBase에서 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것
관계는 두 엔티티가 서로 관련이 있을 때 말하는데 1:1
, 1:N
, N:M
관계를 맺을 수 있다
특정 엔티티에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 경우 맺는 관계
ex) 우리나라에서는 일부일처제로, 한 남자는 한 여자와, 현 여자는 한남자와만 결혼을 유지할 수 있음
-> 남편 또는 부인을 2명 이상 둘수 없다
한쪽 엔티티가 관계를 맺은 엔티티쪽의 여러 객체를 가질 수 있는 것 의미
DB 설계시 자주 사용 하는 방식으로, 중간 테이블을 만들지 않음
부모와 자식관계를 생각하면, 부모는 자식을 1명이상 가질 수 있다
-> 이를 부모가 자식을 소유(has a 관계)한다고 표현
반대로 자식입장에서는 부모(아버지+어머니)를 하나만 가질 수 있다
여러 명의 자식(N)의 입장에서 한쌍의 부모(1)중 어떤 부모에 속해 있을지 표현해야 하므로, 부모 테이블이 PK를 자식 테이블에 FK로 집어 넣어 관계를 표현 함
즉 부모 테이블에서는 자식들이 누구인지 정보를 넣을 필요가 없지만, 자식 테이블에서는 각각 자식들의 자신의 부모 정보를 넣음으로써 관계를 표현할 수 있다
양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말함
-> 서로를 1:N 관계로 보고 있음
학원과 학생의 관계를 예로 들면, 한 학원에서는 여러명의 학생이 등록할 수 있으므로 1:N
반대로 학생도 여러개의 학원을 수강할 수 있으므로 1:N
-> 학원과 학생은 N:M
관계를 가진다
서로가 서로를 1:N, 1:M 관계를 가지기에, 서로의 기본키를 자신의 외래키 칼럼으로 가지고 있음
보통 중간테이블을 두어서 관리한다