join이란 두 테이블을 연결하여 원하는 값을 출력하는 키워드이다
기본 문법
select 필드명1, 필드명2... from 테이블명1 [inner, left, right]join 테이블명2
on 테이블1.연결할필드 = 테이블2.연결할필드 [where] 조건문
🖥️ 예제
select m.userid, name, gender, mbti from member as m join profile p on m.userid = p.userid;
🖥️ 예제
select m.userid, name, gender, mbti from member as m left join profile p on m.userid = p.userid; -- left join
select m.userid, name, gender, mbti from member as m right join profile p on m.userid = p.userid; -- right join
이상 현상
1NF(제 1정규화)
2NF(제 2정규화)
3NF(제 3정규화)
비정규화
완벽한 예제라고 보기는 애매하긴하지만... 이전 JAVA 스프링 프로젝트때 좋아요 기능구현을 해야했는데
처음에는 ERD 중 FEED 게시판 테이블에 like_cnt(좋아요 카운트)를 넣어 좋아요 기능을 구현하려고 하였다.
하지만 생각해보니 이런식으로 하면 누가 좋아요를 눌렀는지 확인을 할 수 없어 기능을 구현하지 못하는 에러가 발생하였고 좋아요 테이블을 하나 추가하는쪽으로 방향을 틀어 개발을 진행하였다.
아래는 해당 기능 작업 시 작성한 erd이다.
기존feed테이블에 like_count가 있는 모습을 확인할 수 있다.
아래 테이블로 수정하였는데 tbl_feed_like 테이블을 추가하여 feed_id, member_id를 각각 fk로 설정해줘 join할 수 있게 작업해주었다.
멋지네요 SQLD 공부해보세요