이번 프로젝트 DB 피드백을 정리한 내용입니다. 각각 DB 상황에 따라 다를 수 있습니다.
AS-IS | TO-BE | 배운 점 |
소셜 로그인 ( 카카오, 네이버 ) | 로컬 로그인 + 소셜 로그인 | 카카오, 네이버 없는 사용자가 있을 수 있으니까 기본적으로 로컬 로그인 기능 구현은 구현하기 |
board 테이블의 board_content 컬럼의 데이터 타입 VARCHAR2(4000) | CLOB으로 변경 | HTML 태그도 사용하는 경우에는 길이가 길어지기 때문에 VARCHAR2(4000)은 부족할 수 있다. 따라서 CLOB이라는 데이터 타입을 사용하자 |
태그 테이블과 board 테이블 연결 관계 | 태그와 board 테이블의 연결 관계는 해제하고 board 테이블에 태그명이라는 컬럼 추가 | 태그 테이블은 조회 용도로만 가져오기, board 테이블에 사용자가 입력한 태그는 #java#html#css등으로 #를 구분자로 해서 하나의 컬럼에 입력받기 |
신고 분류 테이블과 신고 테이블을 별도로 구분 | 신고 테이블에 신고 유형과 어떤 글에서 신고를 받았는지 그 몇 번 게시글을 참조하는지를 알려주는 컬럼 추가 | 테이블을 따로 빼는 이유는 관리자가 테이블에 항목을 추가,수정,삭제할 수 있게 하기 위함. 신고의 경우 따로 신고 항목이 추가,수정 될 예정이 없이 때문에 신고 분류 테이블로 나누지 않고 신고 테이블에 합치기 |
board 테이블에서 제목과 내용을 NotNull로 저장하기 | null로 변경 | 임시 저장 기능이 있는 경우에는 제목과 내용을 입력하지 않고 저장했을 수도 있기 때문에, 제목과 내용은 null로 둔다. |
글 작성하기 페이지에서 사진 첨부해서 대표 이미지 지정하기 | 대표 이미지를 설정하는 화면을 따로 구현할 것 | 토스트 ui의 경우 사진을 넣어도 board_content에 들어가기 때문에, 대표 이미지가 필요한 경우에는 따로 대표 이미지를 입력할 수 있는 화면 구현을 해야한다. |
댓글 테이블 | 댓글 깊이, 참조 댓글 번호 컬럼 추가 | 대댓글 기능이 있는 경우, 댓글 깊이과 해당 댓글이 몇번 원글(원댓글)을 참조하는지 알 수 있는 참조 댓글 번호 컬럼이 필요하다. * connect by 구문을 사용하기, 계층형 쿼리문을 이용하기 |
신고 테이블 | 사용자에게 받은 신고는 관리자 판단하에 블라인드 처리 시키자! | 사용자 입장에서 생각해보자! |
첨부 파일 테이블 | 원본명 + 수정명 컬럼 삭제 | 이미지 저장하기 기능이 없는 경우, 해당 테이블은 삭제 가능하다. FileURL = FilePath로 저장 파일 경로 컬럼에 수정명까지 저장하면 된다. |
프로젝트를 위한 DB 설계에 그치는 것이 아니라, 사용자 입장에서도 생각해보고, 여러가지 경우의 수까지 생각해서 DB 설계를 해야겠다.
728x90
'📓 Study > Tech Interview' 카테고리의 다른 글
🏖RESTful과 📋REST API란 무엇인가요? (0) | 2021.07.22 |
---|---|
🍪쿠키와 🗃세션의 차이점 (0) | 2021.07.16 |
🍎🔖@어노테이션 (Annotation) (0) | 2021.07.09 |
🔗GET과 📝POST의 차이점에 대해서 설명해주세요. (0) | 2021.07.07 |
제네릭에 대해서 설명해주세요. (0) | 2021.07.02 |
댓글