-
[데브코스]42일차 TILTIL/교육 내용 정리 2024. 5. 20. 14:55더보기
좋아요 추가 / 취소
추가 or 취소 각각 API를 들고 가려니깐 굳이..? method PUT 겹친다.
+ 좋아요를 누르면 발생하는 일
-> 회원이 가지고 있는 좋아요 목록에 하나가 추가 되는 것.
따라서 어떻게 ?
- 좋아요 추가 PUT -> POST 변경
- 원래 좋아요를 누르면 수정하려고 했지만,
- 테이블을 따로 만들어 user_id가 좋아요 누른 liked_book_id를 POST해서 새롭게 생성. ( 1:N 관계 )
데이터베이스는 배열로 담을 수 있다 vs 없다?
결론적으로는 없다.
제 1 정규형에 위반 되기 때문이다.
제 1 정규형이란 릴레이션에 속하는 속성의 속성 값이 모두 원자값 만으로 구성 되어야 한다.
학번 교수명 학과 과목번호 성적 100 홍길동 컴퓨터공학과 C123, C124 A, B 200 이순신 전자공학과 C123 B 위 릴레이션처럼 이루어져 있다면 제 1 정규형을 만족하지 못한 것. why?
학번이 100인 학생의 과목번호와 성적이 2개로 이루어져 있기 때문이다. So
속성 값을 분리해주어야 함.
학번 교수명 학과 과목번호 성적 100 홍길동 컴퓨터공학과 C123 A 100 홍길동 컴퓨터공학과 C124 B 200 이순신 전자공학과 C123 B 제 1 정규형에서는 어떠한 이상 현상이 발생할까?
- 삽입 이상
학생이 새 과목을 수강 신청할 때 반드시 학생의 학과와 교수명을 알아햐 한다. ( 불필요한 정보 ) - 삭제 이상
100번 학생이 C124 과목을 취소하면, 해당 과목에 대한 정보가 모두 사라진다. - 갱신 이상
100번 학생이 교수를 변경할 때 홍길동인 행을 모두 찾아서 변경해주어야 한다.
위 같은 현상이 발생하는 이유는 기본키(PK)가 아닌 속성들이 기본키에 완전 함수 종속되지 못하고 부분 함수 종속되어 있기 때문이다. 즉, 기본키의 일부 속성에만 의존하고 있기 때문이다.
해결 방법
- 해당 데이터에 대한 별도의 테이블을 구성하고 join을 통해 구성
- 배열 형태의 데이터를 통쨰로 String으로 변환 후 DB에 저장하고 꺼내올 때는 String 파싱하여 List에 담아서 보내는 것.
출처 : https://rebro.kr/160
'TIL > 교육 내용 정리' 카테고리의 다른 글
[데브코스] 44일차 TIL (0) 2024.05.22 [데브코스] 43일차 TIL (0) 2024.05.21 [데브코스] 30일차 TIL (0) 2024.05.07 [데브코스] 28일차 TIL (0) 2024.05.05 [데브코스] 27일차 TIL (0) 2024.05.04 - 좋아요 추가 PUT -> POST 변경