Programming/Postgres DB
[PostgresDB-2] 9-2. Relationship ( 1:1, M:N) 일대일, 다대다 [실습]
midnightcoder
2022. 12. 21. 03:19
- 일대일 관계 실습
개인 설정(SETTINGS) 테이블
setting table을 만들고, 기존에 user table과 아래와 같이 연결

테이블 생성 및 데이터 등록 쿼리
-- settings 테이블 생성
CREATE TABLE settings(
id SERIAL PRIMARY KEY, --PK
private BOOLEAN, -- BOOLEAN: 참(TRUE) / 거짓(FALSE)
adding_photos VARCHAR(15),
user_id INTEGER UNIQUE REFERENCES users(id) --FK : 개인설정 유저(N:1)
);
-- settings 레코드 등록
INSERT INTO
settings(private, adding_photos, user_id)
VALUES
(FALSE, 'MANUAL', 1), -- 유저#1
(FALSE, 'AUTO', 2), -- 유저#2
(TRUE, 'AUTO', 3) -- 유저#3
;
SELECT
*
FROM
settings
;
여기서 FK를 설정할때, UNIQUE는 1:1 관계라는걸 나타낸다 (없으면, one to one 관계가 아님)

여기서, user_id 가 3인 데이터를 추가로 입력하려고 시도 할 경우 error가 발생한다.
why?
-- settings 레코드 추가 등록
INSERT INTO
settings(private, adding_photos, user_id)
VALUES
(TRUE, 'AUTO', 3) -- 유저#3 추가
;

1 대 1연결을 위해서 UNIQUE 를 써줘서, 동일한 user_id가 더 들어갈 수 없다.
출처 : 홍팍의 'SQL 데이터 분석, 활용!'