개발자

게시글과 첨부파일의 DB 구조

2024년 01월 19일조회 455

안녕하세요 궁금한게 있어서 질문을 드립니다. 게시글이랑 첨부파일의 Database 구조에 대해서 궁금한게 있어서요 하면서도 잘 모르겠어서요 -----1번 구조----- 게시판 테이블 게시판 아이디(PK) 파일 아이디(FK) 파일 테이블 파일 아이디(PK) 파일 경로 -----2번 구조----- 게시판 테이블 게시판 아이디(PK) 파일 테이블 파일 아이디(PK) 게시판 아이디(FK) 파일 경로 제 친구는 1번으로 짯는데, 2번으로 해도 되는데 굳이 1번으로 짠 이유가 무엇일까요? 제가 생각하기에는 게시판을 눌러서 PK로 연결되어있는 파일들을 한번에 조회 할 수 있으니까 1번 구조가 유리하다고 생각해서 1번으로 짯나? 했구요. 2번으로 보자면 게시글 1 : 파일 N 이니까 일대다 구조로 각 게시판에 대해서 여러 파일 정보를 가질 수 있고, 보통 한 게시글에는 여러개의 파일이 들어가니까 한 파일이 여러 게시글에 사용되지 않는다는 가정에는 2번이 효율적인것 같거든요 보시는 분들께는 간단한 문제 일수도 있는데 힌트라도 부탁 드립니다 ㅠㅠ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

인기 답변

장성호님의 프로필 사진

1번은 게시판 테이블 외 다른 테이블도 파일 테이블을 이용할 수 있습니다. 대신 1대1입니다. 따라서 게시글 1개 건에 대해 파일 1개만 가져올 수 있습니다. 2번은 게시판 전용 파일입니다. 대신 작성자님의 말씀처럼 1대N으로 여러 파일을 한 게시글에 엮을 수 있습니다. 개인적으로는 2번이 낫다고 생각합니다. 파일 여러 개 넣는 건 보기 쉬운 요구사항이라서요! 조금 더 발전시키면 이렇게 할 수도 있을 거 같아요. 1. 게시판 테이블 - 게시판 ID 2. 게시판의 파일 테이블 - 게시판 ID, 파일 ID 3. 파일 테이블 - 파일 ID, 폴더 ID 4. 폴더 테이블 - 폴더 ID, 부모 폴더 ID 파일과 폴더 테이블은 독립적으로 가져가고, 이에 대한 의존성이 생기는 데이터는 자기들이 따로 매핑테이블을 가져가는 방식입니다. 관리가 빡세긴 할텐데 백오피스 시스템이나, S3 같은 곳에서 폴더를 날리는 등의 요구사항이 있으면 도움이 될 거에요! 아니면 4번 테이블은 없이 지금처럼 파일 경로로 하셔도, 경로 정책만 잘 정의되어 있으면 될 것 같아요. 경로는 찾을 때 LIKE + INDEX 로 빠르게 찾는거 될 것 같네요

인기 답변

great님의 프로필 사진

1번 구조로도 여러개의 첨부파일을 참조가능합니디. 다만 게시판 테이블은 파일아이디만 참조하고 파일테이블이 파일아이디와 스퀀스의 복합키면 되겠지요 2번 구조는 위에서 말씀해주신대로 특정게시판 데이터에 종속적이 되겠네요 설계에 답은 없습니다 상황에 따라 달라질수 있습니다

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 01월 19일

1번과 2번 구조 모두 사용 가능하지만, 각각의 사용 시나리오와 요구사항에 따라 적절한 설계를 선택해야 해요. 1번 구조는 보통 "하나의 게시글이 하나의 파일만을 가질 때" 사용됩니다. 이 경우에는 게시판 아이디(PK)와 파일 아이디(FK)로 직접 연결되어 있어서 1:1 관계가 되죠. 이 구조에서는 한 게시글에 여러 파일을 첨부하는 것이 어렵습니다. 반면, 2번 구조는 "하나의 게시글에 여러 개의 첨부파일이 있을 때" 유용합니다. 각 첨부파일은 고유한 PK를 가지며, FK로 해당하는 게시글 아이디를 참조하므로 1:N 관계를 형성합니다. 이 구조에서는 한 게시글에 여러 파일을 첨부할 수 있습니다. 따라서 "게시글 1 : 파일 N' 의 일대다 관계를 만들고 싶다면, 2번 구조가 더 적합합니다. 이 경우, 개별 게시물마다 다수의 파일을 손쉽게 조회/관리할 수 있습니다. 하지만 설계 시 항상 고려해야 할 사항은 실제 애플리케이션의 요구사항과 사용 사례에 가장 적합한 구조를 선택하는 것입니다. 어떤 상황에서는 파일이 하나의 게시글에만 속해야 하는 경우도 있을 수 있고, 반대로 하나의 파일이 여러 게시글에 속할 수 있는 상황도 있을 수 있습니다. 따라서 이런 요구사항을 잘 파악하고 그에 맞는 DB 구조를 설계해야 합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!