모델 작성 중 질문 드립니다!
안녕하세요 강의 듣고 토이프로젝트 진행중인 학생입니다!
사용자가 아이템을 보유하고 있고, 장착버튼을 누르면 사용자의 캐릭터가 해당 아이템을 장착하는 기능을 만들고자 합니다. (아바타 개념)
<Item 테이블 (하나의 모델만 사용)>
![]()
아이템 구매 시 해당 테이블에 데이터 값이 추가됩니다.
처음 설계했을 때엔 Item 모델을 만들고 사용자가 다수의 아이템을 갖는 1:N관계로 설정한 후에
아이템 column에 equipped를 넣어 true/false로 장착 여부를 판별하여
사용자의 캐릭터가 장착하고 있는 모자는 아이템 데이터들중에 UserId가 사용자의 아이디이고, itemType이 'hat'이고 equipped가 true인 아이템을 골라내어 보여주고, 옷은 itemType이 'clothes'이고 equipped가 true인 아이템을 찾아 보여주는 식으로 진행을 하고 있었습니다.
이렇게 되니 사용자의 아바타를 보여줄 때에 각 itemType별로 filter를 돌려 equipped 여부에 따라 값을 리턴하는 방식으로 코드를 짜게 되었는데, 너무 많은 데이터 사이에서 걸러내어 서버에 무리가 가게 되는 것은 아닌지 걱정되어 질문글 드립니다.
후에 다른 user의 아바타 또한 볼 수 있도록 만들고자 하는데, 그럴 때마다 item 테이블에서 해당 유저의 아이템들을 조회하여 타입별 equipped 여부를 파악하여 가져온다고 생각하니까 더더욱 서버에 무리가 가지 않을까 고민이 되었습니다 ㅠㅠ
제가 여태 하던 방식대로 item 모델에 equipped 여부를 넣어 해당 값을 가지고 있는 데이터를 가져오는 방식으로 진행하는게 나을지,
아니면 item 모델은 아이템을 구매하여 추가하고, 가지고 있는 아이템 목록을 불러오는 기능만 수행하도록 하고
따로 각 부위별로 어떤 아이템을 장착하고 있는지 데이터를 기록하는 equipment 모델을 만들어주어 아이템 장착, 장착해제는 해당 모델에서 이루어지도록 하는게 맞는지.. 어떤 방식이 서버에 덜 무리가 갈지가 궁금합니다!
<Item 테이블 (equipment 모델과 같이 사용 시)>

<Equipment 테이블>
![]()
equipment 모델을 만들 경우 따지고보면 item모델에 있는 아이템 중에서 선택한 아이템의 id값을 따로 기록해두는 셈이 되는데... 이런 식으로 아이템을 다루는 모델을 중복하여 두개를 사용해도 되는 것인지 잘 모르겠습니다.ㅠㅠ 기존 방법대로 하나의 테이블에서 equipped 컬럼을 넣어주어 해당 값으로 장착여부를 판별하는 것이 나을까요?
ㅠㅠ상황을 자세히 설명을 드리느라 내용이 복잡해졌는데.. 궁금한 포인트는 새로운 모델을 추가하여 데이터를 수정하고 불러들이는 것을 간소화하는 것 / 모델을 추가하지 않고 하나의 모델 내에서 진행을 하는 것 둘중 어느것이 바람직한 방법인지 여쭤보고 싶습니다!
조언 주시면 감사하겠습니다!
답변 3
1
사실 게임을 만들때는 단순히 DB 말고 중간에 캐시서버를 두고 클라이언트에도 일부 정보를 분배합니다. 말 그대로 DB에 무리가 많이 가기 때문입니다.
단순한 원리로는 User 테이블, Item 테이블을 두고 User가 어떤 Item을 갖고있는지 다대다 관계가 있는 Equipment 테이블을 가운데 두는 게 이론 상 맞는 것 같습니다. Equipment 테이블에는 equipped와 어느 부위에 장착했는지에 대한 컬럼이 추가적으로 있을 수 있고요. 이론 상으로는 다대다 관계인데 실제로는 성능 문제로 인하여 다른 방식으로 구현하기도 합니다.
next 10 이상에서는 redux dev tool 구동이 안되나요?
0
272
1
세션 갱신 문의 건
0
482
7
배포 진행 후 Highlight updates components render 표시
0
445
1
똑같은 기능을 하는 테이블
0
447
4
관계형
0
312
2
프론트 서버를 이용하지 않는경우
1
299
3
인피니트 스크롤링 사용시 오류
0
278
0
계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.
0
433
2
req.user가 언제 생성되나요??
0
330
2
Cannot read property 'id' of null 에러
0
333
1
리트윗한 게시글 불러오는 sequelize
0
252
1
result.data에서 images인 이유
0
281
2
takeLatest에 대한 질문입니다.
1
342
2
프론트에서 express를 사용하지 않을때 동적라우팅
0
501
6
getInitialProps가 클라이언트에서 수행되는 이유?
0
258
1
리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.
0
445
2
스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다
0
585
2
할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)
0
365
1
nodejs mvc 패턴
0
975
4
사용하고 보니, 람다 구성이 궁금합니다!
0
266
1
제로초님
0
445
1
새로고침 로그인 풀림 문제.
0
247
1
안녕하세요. 강의 너무 감사합니다
0
157
1
제로초님
0
170
1





