ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데브코스]42일차 TIL
    TIL/교육 내용 정리 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 정규형에서는 어떠한 이상 현상이 발생할까?

    1. 삽입 이상
      학생이 새 과목을 수강 신청할 때 반드시 학생의 학과와 교수명을 알아햐 한다. ( 불필요한 정보 )
    2. 삭제 이상
      100번 학생이 C124 과목을 취소하면, 해당 과목에 대한 정보가 모두 사라진다.
    3. 갱신 이상
      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
Designed by Tistory.