안녕하세요. 저는 모바일 개발자인데 앱 개발 중 DB 설계가 필요해 조언을 구합니다.(DB를 처음 해봅니다. ㅜㅜ)
1. 대학생 정보가 필요합니다. 그리고 각 학생이 지금까지 수강한 과목 리스트가 필요합니다. 또 각 학생이 지금까지 구매한 책 정보가 필요합니다.
그래서 다음과 같이 생각해봤습니다.
인덱스 | 학번 | 이름 | 연락처 | 주소 |
1 | 1111 | 가가가 | 010.. | .. |
2 | 2222 | 나나나 | 010.. | .. |
3 | 3333 | 다다다 | 010.. | .. |
4 | 4444 | 라라라 | 010.. | .. |
<학생 정보 테이블>
학생인덱스 | 과목명 | 교수 | 강의실 |
1 | 영어 | aa | .. |
1 | 수학 | dd | .. |
1 | DB | cc | .. |
2 | DB | ee | .. |
2 | 알고리즘 | ss | .. |
<수강과목 테이블>
학생인덱스 | 도서 | 출판사 | 저자 |
1 | 영어책 | .. | .. |
1 | DB책 | .. | .. |
2 | DB책 | .. | .. |
2 | 알고리즘책 | .. | .. |
2 | 수학책 | .. | .. |
<구입도서 테이블>
제가 필요한 정보를 가지고 생각한 테이블입니다. 근데 이렇게 하면 학생 수가 많을 때 '수강과목 테이블'과 '구입도서 테이블'이 엄청 커지는데 이런식으로 구성 하는게 맞는지 궁금합니다. 아니면 다른식으로 테이블을 구성할 수 있는지 궁금합니다.
2. 각 학생의 수업 시간표 정보가 필요한데 이건 어떻게 테이블로 구성해야할지 전혀 감이 안잡힙니다. 그리고 테이블로 구성된다면 어떤식으로 쿼리해서 가져올지도 조언 부탁드립니다.
ex> 1번 학생 : 월 9:00~11:00 영어, 월 15:00~17:00 DB, 화 11:00~13:00 수학 ...
3. 학교 측에서 특정 학과 학생들에게 공지사항 푸시를 보내려고 합니다.
학과인덱스 | 학과이름 | 학생인덱스 |
1 | 컴공 | 1 |
1 | 컴공 | 2 |
. | 컴공 | 3 |
2 | 기계공학 | |
2 | 기계공학 |
<학과정보 테이블>
위처럼 테이블을 구성하고 특정 학과 인덱스로 쿼리를 날려서 나온 학생 인덱스로 푸시를 날리면 되는건가요?
4. 3번에서 날린 공지사항은 영구적으로 저장될 필요가 없습니다. 그래서 다음과 같은 흐름으로 이어진다면
학교측 클라이언트에서 컴공 학생들에게 'DB 수업이 취소되었다'는 푸시를 날리기위해 서버에 요청 ->
3번 처럼 '학과정보 테이블'에서 나온 학생 인덱스 결과를 통해 학생측 클라이언트로 푸시 날림, 공지사항 내용은 '공지사항 테이블'에 저장 ->
학교측 클라이언트는 15분 뒤 공지사항을 지우라고 서버에 요청, '공지사항 테이블'에서 해당 공지 삭제 ->
15분 이전에 푸시를 누를 학생은 '공지사항 테이블'에 남아있는 공지사항 데이터를 받아오고 15분이 지나서 푸시를 누른 학생은 받아올 수 없음(클라이언트 측에서 이 시나리오는 상관없습니다.)
이런 시나리오를 위해 '공지사항 테이블'을 사용하는데 올바른 방법인지 조언 부탁드립니다.
내용이 조금 긴데 읽어 주셔서 감사하고 어떠한 조언이라도 감사히 듣겠습니다.(혹시 사이트나 게시판 성격에 맞지 않는 글이라면 삭제하겠습니다.)