realtionship
관계란 테이블간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적인 연결이다.
RDB(관계형 데이터베이스)의 모든 테이블에는 행에서 고유하게 식별 가능한 기본키(PK)속성이 있으며, 외래키(FK)를 사용해서 각 행에서 서로 다른 테이블간의 관계를 설정할 수 있다.
many to one relationship
관계형 데이터베이스에서 외래키 속성을 사용해 모델간 N:1 관계 설정

예를 들어 고객 테이블이 있고 고객이 주문을 할때 주문테이블에 주문 정보가 생성된다면, 각 주문 데이터에 고객정보의 기본키를 저장한다. 이처럼 관계형 데이터베이스에서 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키를 외래키(foreign key,FK)라고 한다. 고객테이블의 PK는 주문테이블에서 FK가 된 것이다.
RDB에서 관계
1. 1:1 (one-to-one relationships)
한 테이블의 레코드 하나가 다른 테이블의 레코드 단 한개와 관련
2. N:1 (many-to-one relationship)
한 테이블의 0개 이상의 레코드가 다른 테이블의 레코드 한개와 관련된 경우
기준 테이블에 따라 1:N 이라고도 한다.
-> 주문테이블의 0개 이상의 레코드가 고객 테이블의 레코드 한개(고객ID)와 관련되어 있다. (주문이 없을 때 0개)
-> 고객(1)은 여러 주문(N)을 진행할 수 있다.
-> 만약 고객이 단 하나의 주문만 생성할 수 있으면 1:1 관계가 된다.
3. M:N (many-to-many relationships)
한 테이블의 0개 이상의 레코드가 다른 테이블의 0개 이상의 레코드와 관련된 경우
양쪽모두 N:1관계를 가진다.
M:N 관계를 위해 스키마를 디자인할 때에는, Join 테이블을 만들어 관리한다.
1:N 관계와 비슷하지만, 양방향에서 다수의 레코드를 가질 수 있다.
Foreign Key (외래키, FK)
키를 사용하여 부모 테이블의 유일한 값을 참조한다. (참조 무결성)
관계형 데이터베이스에서 한 테이블의 필드 중 다른테이블의 행을 식별할 수 있는 키
외래 키는 참조하는 테이블에서 1개의 키(속성 또는 속성의 집합)에 해당하고, 참조하는 측의 관계 변수는 참조되는 측의 테이블의 키를 가리킨다.
외래키의 값이 반드시 부모테이블의 기본키 일 필요는 없지만 유일한 키여야 한다.
(참조하는 테이블 = 주문테이블, 참조되는 테이블 = 고객테이블)
참조하는 테이블의 속성의 행 1개의 값은, 참조되는 측 테이블의 행 값에 대응된다.
이 때문에 참조하는 테이블의 행에는, 참조되는 테이블에 나타나지 않는 값을 포함할 수 없다.
참조하는 테이블의 행 여러 개가, 참조되는 테이블의 동일한 행을 참조할 수 있다.
'Back-end > Django' 카테고리의 다른 글
Django User 모델 참조 : settings.AUTH_USER_MODEL / get_user_model() (0) | 2022.10.05 |
---|---|
Django Relationship field - 1:N , FK, article-comment 구현 (0) | 2022.10.05 |
쿠키(cookie), 세션(session) (0) | 2022.09.15 |
Authentication(인증) - accounts.User (0) | 2022.09.15 |
django - Model, CRUD, admin (0) | 2022.09.02 |