본문 바로가기
> 프로그래밍 언어/SQL

[SQL 데이터 분석, 활용!] 섹션 2. 일대다, 다대다 관계

by 자몽주스 2023. 2. 13.
728x90
반응형

[개념은 호옹~, 실습 빡]

SQL 데이터 분석, 활용!

참고사이트:

SQL, 데이터 분석! | CloudStudying

일대일, 다대다 관계 
일대일, 다대다 관계. 무엇? 

일대일 관계:

일대일로 데이터가 연결된 것

 

양방향에서 1대1로 연결되는 것

 

FK의 위치:

범위가 더 작거나

사용빈도가 더 적은쪽에

FK 를 준다

다대다 관계:

두 데이터 연결이

다수와 다수로 이어지는 것

 

양방향으로 다수와 다수로 연결되는 것

 

쇼핑몰에서 여러 고객이 있고

다양한 상품이 있으면

고객은 다양한 상품을 주문할 수 있고

상품 또한 다양한 고객에게

주문될 수 있다

실제 구현 시,

중간 테이블을 놓고

FK를 둬서 양 측을 연결한다

 

인스타그램을 예시로 들면

좋아요가 중간테이블이고

양 측으로 사용자와 사진이

 다대다 연결되는 것

인스타그램 DB #4

 

인스타그램 유저 설정을 일대일관계

좋아요 테이블

다대다 관계로 만들기

설정 테이블 만들기

IDPK

USER_IDFK

로 만들어서

USERS 테이블의 ID 에 연결

(일대일 연결)

PRIVATE 는 참/거짓

체크 ON / OFF라서

BOOLEAN 타입을 써준다

ADDING_PHOTOS 는 VARCHAR

즉, 문자로 넣어준다

USER_ID 는 FK로서

FK 는 개인설정유저를 가리킴

1 대 1 로 연결

※근데 UNIQUE 라는 설정을 추가해준다※

UNIQUE 를 넣어주지 않으면

1 대 1 연결이 아니라 

多 대 1 연결이 된다

-- settings 테이블 생성
CREATE TABLE settings (
  id            SERIAL       PRIMARY KEY,                -- PK
  private       BOOLEAN,                                 -- true/false
  adding_photos VARCHAR(15),                             -- AUTO, MANUAL
  user_id       INTEGER      UNIQUE REFERENCES users(id) -- FK: 개인설정 유저(1:1 연결)
);

-- settings 레코드 등록
INSERT INTO
  settings(private, adding_photos, user_id)
VALUES
  (FALSE, 'MANUAL', 1), -- 유저#1
  (FALSE, 'AUTO',   2), -- 유저#2
  (TRUE,  'AUTO',   3)  -- 유저#3
;

세팅 레코드 생성해준다

 인스타그램 DB #5

-좋아요 테이블 만들기-

하나의 유저는 여러개의 좋아요 가능

하나의 사진에는 여러개의

좋아요가 달릴 수 있는 것 

LIKE 테이블을 통해서

多 대 多 관계

LIKE 테이블 생성

LIKES 레코드 생성

일대일, 다대다 관계 요약

 

728x90
반응형