고양이와 코딩
[웹 풀사이클 데브코스] 7주차 Day 4 - 도서 정보 API 설계 및 구현 본문
이 프로그램을 사용해서 db를 만들어 보려고 합니다 !
데브코스는 강의도 알차지만, 개발하는데 있어 편리하게 사용할 수 있는 다양한 툴도 많이 배워갈 수 있어서 좋은 것 같아요 ... ( ´・ᴗ・` )
이렇게 왼쪽에 테이블을 작성하면, 오른쪽에 알아서 생성이 됩니다 ! (신기.. )
기존에 PUT으로 작성해 두었던 좋아요 관련 명세를, 좋아요 추가는 POST로, 좋아요 취소는 PUT으로 변경 해 주었는데요.
Table likes {
user_id integer
liked_book_id integer
}
likes 테이블에 좋아요 한 책 id값과, 그 책에 좋아요를 누른 user_id 값을 따로 만들어서 관리 해 줄것이기 때문에
POST, DELETE를 사용합니다 !
유저가 1번 책에 좋아요를 누르면 데이터베이스에 user_id와 liked_book_id가 들어가고, 좋아요를 취소하면 삭제 해 주면 되겠죠 !
이런식으로 API, TABLE을 만들면서 당연하게도 테이블 사이의 관계가 많아질수록 고려해야할 조건이 많아진다는 생각이 들었습니다.
그래서 오늘은 프로젝트의 규모가 커지고 데이터가 많아질수록 RDBMS에서 생각해야 할 점을 정리하고 포스팅을 마무리 하려고 합니다!
RDBMS 테이블 간 관계에서 고려해야 할 사항들
데이터 일관성 문제, 오류가 발생하는 것을 막고 올바른 관리와 설계를 위해 주의해야 할 점들 !
1. 정확한 관계 정의
- 일대일(One-to-One), 일대다(One-to-Many), 다대다(Many-to-Many) 관계 등의 정확한 관계 유형을 파악하고 정의합시다
2. 외래 키 관리
- 테이블 간 관계를 설정할 때 외래 키(FK)를 올바르게 관리해야 합니다. 이를 통해 데이터 일관성과 무결성을 유지할 수 있어요
3. 정규화(Normalization)
- 데이터베이스 정규화를 통해 중복을 최소화하고 데이터를 효율적으로 저장하는 것이 중요합니다!
이를 통해 업데이트 이상(Update Anomalies)을 방지할 수 있습니다.
4. 인덱스 사용
- 적절한 인덱스를 생성하여 검색 속도를 향상시키고 데이터베이스 성능을 최적화해야 합니다
5. CASCADE 옵션
- 외래 키 관계에서 DELETE 또는 UPDATE 시의 동작을 설정할 때 CASCADE 옵션을 사용해야 할 수 있습니다!
이를 통해 관련된 데이터가 일관되게 관리됩니다
6. 중요한 제약 조건
- NOT NULL, UNIQUE, CHECK 등의 제약 조건을 적절하게 활용하여 데이터의 무결성을 유지합니다.
7. 성능 고려
- 테이블 간 관계는 성능에도 영향을 줍니다. JOIN 연산과 같은 연산의 비용을 고려하여 효율적인 관계 구조를 설계합시다.
8. 실시간 업데이트와 동시성 관리
- 데이터베이스가 실시간으로 업데이트 되는 경우, 동시성 문제를 고려하여 트랜잭션 관리와, 락(Lock) 설정을 적절히 고려해야 합니다!
'데브코스 TIL' 카테고리의 다른 글
[웹 풀사이클 데브코스 TIL] 8주차 Day 1 - API 설계, crypto를 사용한 암호화 (1) | 2024.01.02 |
---|---|
[웹 풀사이클 데브코스] 7주차 Day 5 - API 점검, Express-generator (2) | 2023.12.29 |
[웹 풀사이클 데브코스] 7주차 Day 2 - 면접 관련 질문 정리 (0) | 2023.12.26 |
[웹 풀사이클 데브코스 TIL] 7주차 Day 1 - 쿠키, 세션, JWT, 그리고 httpOnly (0) | 2023.12.25 |
[웹 풀사이클 데브코스 TIL] 6주차 Day 5 - 유효성 검사 (2) | 2023.12.22 |