문제은행 DB 설계 분투기 1 - erdcloud 사용법

양태환·2023년 9월 5일

인턴기

목록 보기
1/14
post-thumbnail

이 글은 인턴 기간 동안 문제은행 DB를 만들어보며 공부한 것들을 기록하고 공유하고자 쓴 글입니다!

지금은 개념설계 중

erdcloud 사용법

일단 DB에 관계자는 누가있는지, 해당 DB의 테이블들은 대략적으로 무엇무엇이 있을지를 구상했고

erdcloud를 사용하여 ERD를 그려보라고 하셔서 사용법을 알아봤습니다. 찾아본 블로그 링크

erdcloud.com에서 erd 다이어그램을 그리려고하니까 phisical name과 logical name이라는 개념이 있었습니다.

어떤 정확한 차이인지 궁금해서 erdcloud 공식 사용법을 찾아보았죠.

대강 알겠지만 정확하게는 모르겠어서 정확한 뜻이 정리된 블로그를 추가로 찾아보았습니다.

- 논리적 이름(logical name)과 물리적 이름(phisical name)

논리적 이름은 설계상의 이름으로 의미를 설명할 때 사용해서 한글도 가능한 이름이고
물리적 이름은 실제 db접근 때 사용되는 이름이라고 합니다.

예시 사진 참고
예시 사진


문제은행 db를 만드는 중인데 여러 고민 거리들이 있었습니다.
응시자 정보에 응시 여부를 넣을 것인지 아니면 다른 곳에 따로 나눌것인지,
부정행위 탐지 프로퍼티는 어디에 넣을 것인지 등등이 있었죠.

이런 것들은 넘어가도 괜찮으니 넘어가고

erdcloud를 사용하면서 식별관계와 비식별관계라는 낯선 단어가 등장하더군요.
그래서 찾아봤습니다. - 참조한 블로그 링크

- 식별 관계(identifying relationship)와 비식별 관계(Non-identifying relationship)

식별 관계는 외래키가 기본키로 사용되는 관계를 말하고
비식별 관계는 외래키가 기본키로 사용되지 않는 관계를 말합니다.
ps. 각각의 장단점도 알고있으면 더 좋겠죠?
(외래키는 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트)

- erd cloud에서 테이블끼리 생성한 관계를 어떻게 삭제하는지 모르겠네요

관계를 만드는 줄을 눌러서 삭제하는 게 아니라 기본키를 참조한 외래키의 행을 누른 후 오른쪽에 뜨는 휴지통을 눌러 삭제하면 관계가 삭제됩니다.


이렇게 다 만들어 사수님께 컨펌을 받고 나서

그런데 이제 제가 그린 ERD를 잠깐 컨펌을 받았을 때, 문제들에 대한 그룹핑 테이블이 주가 되는 것보다는
문제 테이블 자체가 주가 되고 그룹핑은 후순위가 되는 게 맞는 것 같다고 하셔서
DB의 형태를 조금 바꿔보았습니다.

그래서 '광고희망기업과의 계약번호' 와 '문제번호'가 엮인 테이블을 추가로 만들어
일단 해당 계약번호로 문제들을 묶으면서도 문제 테이블이 주가 되게끔 만들었습니다.

그리고 나서 해시태그로 문제들을 묶는 게 더 깔금하고 좋죠

그래서 이렇게 v1짜리 문제 관련 DB 설계는 어느정도(?) 마무리가 된 것 같습니다.



이젠 문제은행v2. 시험 응시 관련 DB를 생각해보죠

profile
당신의 오류 제가 잡아드립니다.

0개의 댓글