[SQL/캡스톤디자인] 데이터베이스 과제 1주차
캡스톤디자인 9조로, 학습 AI의 개발 내용 중 백엔드, 프론트엔드,python(flask). DB 중 DB를 맡게 되었다.
첫 번째로 DB를 다뤄본 적이 극히 드물기 때문에, 먼저 어떤 타입의 DB를 쓰는지가 중요했던 것 같다.
먼저 고려해야 하는 것은, 관계형 DBMS를 사용을 해야 할지, 비관계형 DBMS을 사용할지의 대해 생각을 해보았고, 먼저, 가능한 두 개의 기술 스택 다 채용하는 것으로 결정을 하였다.이에 대한 근거로는 정형데이터를 주로 다룰 수 있는 DBMS의 MYSQL이 있고 MYSQL은 RDBMS으로 사용자의 정보,결제,인증 정보를 관리하는 데 있어, 아주 매우 효율적으로 사용이 가능하다는 정보를 파악하였다. 특히 무결성 보장,로그인/결제시스템의 안정성을 보장할 수 있다.
두 번째로 NOSQL의 mangoDB이다. 해당 DB는 고정된 스키마가 없어 유연하게 사용이 가능하고, 확장성이 넓으며, 빠르게 변화하는 구조를 대응이 가능하다 단지, 따로 스키마를 검토하지 않고, 중복성에 대해서 강한 검사를 지원하지 않기에, 만약에 해당 부분을 고려하지 않는다면, 사용성(사용자가 해당 기능을 사용할 때의 로딩이 길게 걸릴 수 있음.)이 매우 떨어질 수 있다. 따라서, mangoDB에서는 중복데이터나 무결성이 위배되지 않기 위해서, 스키마가이드와 정기 점검 계획을 수립해주어야한다.
테이블 설계 초안 (MYSQL)
- 사용자(USER_INFO)
| 컬럼명 | 타입 | 설명 | | — | — | — | | user_id | INT | 유저고유번호(PR_AutoCrated) …① | | username | VARCHAR | 아이디 | | PW | VARCHAR | 비밀번호 | | F_name | VARCHAR | 실명 | | Created_at | DATETIME | 계정생성일 | | lastly_login_at | DATETIME | 최근 로그인 시간 |
- ※결제(payments)
| 컬럼명 | 타입 | 설명 |
|---|---|---|
| payment_id | INT | 결제 고유 번호 |
| user_id | INT | 유저고유번호(USER_INFO_PK_AutoCreated … ①) |
| amount | DECIMAL | 결제 금액 |
| payment_method | VARCHAR | 결제 방식 |
| payment_date | DATETIME | 결제 날짜 및 시각 |
| subscription_exp | DATETIME | 구독 만료일 |
③컨텐츠 관리(노트관리)
| 컬럼명 | 타입 | 설명 |
|---|---|---|
| content_id | INT | 콘텐츠 고유 번호 |
| title | VARCHAR | 콘텐츠 제목 |
| description | TEXT | 콘텐츠 설명 |
| Content_created_at | DATETIME | 콘텐츠 등록일 |
| author | VARCHAR | 콘텐츠 작성자(USER_INFO_PK_AutoCreated…①) |
테이블 설계 초안 (mangoDB)
- 사용자(USER_INFO) 학습 로그
* 학습시간,노트 열람, 퀴즈 응시, 피드백
- 사용자 활동 이력 / 이벤트 로그
* 클릭한 버튼,페이지 전환,스크롤 UI상호작용 기록(버그색출 및 UX개선)
- 노트 내용 (비 정형 텍스트)
*MYSQL에 노트 제목, 등록일등 정형된 데이터를 기록, 비정형 텍스트는 mangoDB에 저장
- AI 학습 결과(log기록)
* AI 모델이 사용자(user)가 입력한 데이터를 기반으로 학습 상태를 추론하고, **해당 사용자에게 재학습이 필요한 영역을 파악한 후, 개인 맞춤형 피드백(feedback)을 제공한 결과를 기록하는 로그이다.
두 데이터베이스의 직접적인 연결은 불가능하여, MYSQL과 mangodb의 테이블이 구축이 완료되었다면, 파이썬의 Flask에서 독립적으로 연결 후, 동일한 스키마,테이블명의 대해서 키로 데이터를 조합시킴.
해당 내용의 대해서 예상 시각도는 아래와 같음.