Programming/Postgres DB
[PostgresDB-2] 8-2. Relationship ( 1:N) 실습
midnightcoder
2022. 12. 15. 15:12
여기서는 3 종류의 Table을 만들어서, 관계를 형성한다
user, photos, comments 3가지 table을 만들 예정 (instargram 컨셉)
users 테이블 생성 및 데이터 추가

-- users 테이블 생성
CREATE TABLE users (
id SERIAL PRIMARY KEY, -- PK 선언(SERIAL: 자동 생성 타입)
nickname VARCHAR(50),
email VARCHAR(100)
);
-- users 레코드 등록
INSERT INTO
users(nickname, email) -- nickname과 email만 넣어줌(id자동)
VALUES
('cloudstudying_kr', 'mail@cloudstudying.kr'),
('hongpark_cs', 'sehongpark@cloudstudying.kr'),
('haesamq', 'haesamq@naver.com')
;
photos 테이블 생성 및 데이터 추가

-- photos table 생성
CREATE TABLE photos(
id SERIAL PRIMARY KEY,
filename VARCHAR(255),
user_id INTEGER REFERENCES users(id) --FK: 사진 게시자의 PK로 연결
);
-- photos 레코드 등록
INSERT INTO
photos(filename, user_id)
VALUES
-- 1번 유저의 사진 업로드
('cat-on-road.jpg', 1),
('sunset-over-the-ocean.jpg', 1),
('andromeda-galaxy.jpg', 1),
-- 2번 유저의 사진 업로드
('white-tiger.jpg', 2),
('nero-the-black-cat.jpg', 2)
;
-- photos recode 조회
SELECT
*
FROM
photos
;
comments table 생성 및 데이터 추가

-- comments 테이블 생성
CREATE TABLE comments (
id SERIAL PRIMARY KEY, -- PK
body VARCHAR(1000),
user_id INTEGER REFERENCES users(id), -- FK: 댓글 작성자
photo_id INTEGER REFERENCES photos(id) -- FK: 댓글이 달린 사진
);
-- comments 레코드 등록
INSERT INTO
comments(body, user_id, photo_id)
VALUES
-- 1번 사진의 댓글들
('meow', 1, 1), -- 유저#1
('nyaong', 2, 1), -- 유저#2
('냐옹', 3, 1), -- 유저#3
-- 2번 사진의 댓글들
('sunset', 1, 2), -- 유저#1
('falling slowly', 2, 2), -- 유저#2
-- 3번 사진의 댓글들
('Andromeda galaxy', 1, 3), -- 유저#1
('mysteriouse..!', 3, 3) -- 유저#3
;
-- comments recode 조회
SELECT
*
FROM
comments
;
현재 table간의 관계

