본문 바로가기
✨ Club/이대솔브닥웹사이트 - 뀨엘 | Frontend(React,Next.js)

💽mySQL + 솔브닥 api📊 이대백준랭작프로그램 [뀨업] 2

by 정람지 2024. 4. 7.

우리 로고임ㅋㅋ만듦

💽 과제 정리 

JDBC를 사용한 데이터베이스 응용 프로그램


📊 프로젝트 설명

- 데이터베이스의 DBMS와 자바 응용 프로그램을 연결시켜주는 응용 프로그램 인터페이스 JDBC를 이용하여 MySQL 데이터베이스로/부터 정보를 삽입(insert), 갱신(update), 삭제(delete), 검색하는 자바 응용 프로그램을 작성
- 데이터베이스 관리 시스템이 필요한 기관을 선택하여 데이터베이스를 구축하고 데이터베이스를 이용한 사용자 친화적인 응용 프로그램을 구현


- 데이터베이스에 대한 지식이 없는 사용자도 쉽게 데이터베이스를 관리할 수 있도록 기능(메뉴)을 제공
- Index와 views를 생성하고 사용하는 것을 포함시켜야 한다
- 네 가지 데이터베이스 쿼리(insert, delete, update, select)를 사용해야 한다.
- 그래픽 또는 문자 기반의 사용자 인터페이스 둘 다 사용할 수 있다. 사용자 편의를 제공하는 프로그램을 구현했는지 여부는 평가의 요소에 포함된다.
- 데이터베이스를 구축하는 메뉴 또는 SQL 문장 포함하지 않음
◼ 데이터베이스 구축 SQL 문은 SQL 스크립트로 제출

 

- 요구사항
(1) 5개 이상의 테이블을 가지고 있어야 하고 각 테이블들의 컬럼(Attribute)의 수를 합하면 20개 이상이어야 한다.  ⃣
(2) 초기화를 위해 적어도 30개의 레코드(투플)를 가지고 있어야 한다. (모든 테이블들의 레코드 수의 총합이 30개 이상)  ⃣
(3) 기본 키(primary key), 외래 키(foreign key), not null 제약조건(not null constraints)를 포함해야 한다  ⃣
(4) 적어도 2개의 뷰를 정의해야 한다. (레포트에 view를 사용한 이유를 설명)  ⃣
(5) 모든 테이블과 뷰의 이름들은 “DB2024_”라는 접두어를 가지고 있어야 한다.  ⃣
(6) 적어도 4개의 인덱스를 정의해야 한다.  ⃣
(7) 인덱스를 사용하는 쿼리들을 포함해야 한다.  ⃣
(8) 뷰를 사용하는 쿼리를 포함해야 한다.  ⃣
(9) 트랜잭션(transaction)을 포함해야 한다.  ⃣

(10) 중첩된 쿼리(nested query)들을 가지는 쿼리들을 포함해야 한다.  ⃣
(11) 조인 쿼리(join query)들을 가지는 쿼리들은 포함해야 한다.  ⃣
(12) 매개 변수를 가지면서 동적으로 만드는 쿼리를 포함해야 한다. 다시 말해, 사용자로부터 입력 값을 받고 사용자가 입력한 값으로 쿼리를 생성한다.  ⃣
(13) 그래픽 또는 문자 기반의 사용자 인터페이스를 사용해야 한다. 사용하기 쉽고 사용하기에 도움이 되는 정보를 가지고 있는 메뉴를 제공해야 한다.  ⃣
(14) 데이터베이스에 삽입(insert)을 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.  ⃣
(15) 데이터베이스에 갱신(update)을 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.  ⃣
(16) 데이터베이스에 삭제(delete)를 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.  ⃣
(17) 데이터베이스에 검색(select)을 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.  ⃣


📊  제출 항목

- SQL 스크립트
사용할 데이터베이스의 이름, 암호와 ID를 “DB2024+Team+번호” (예: DB2024Team00)으로 정한다.

(1) 초기 데이터베이스를 생성하고 데이터를 삽입하는 SQL 스크립트: create.sql
(create.sql의 시작에 “use databasename”을 포함시킨다. “databasename”은 데이터베이스의 이름이다.)
(2) 모든 테이블과 데이터를 데이터베이스로부터 삭제하는 SQL 스크립트: dropdb.sql
(dropdb.sql의 시작에 “use databasename”을 포함시킨다.“databasename”은 각자의 데이터베이스의 이름이다.)
(3) 주석을 사용하여 데이터베이스의 테이블을 설명한다.


- 자바 코드:
(1) .java 소스 파일로 제출
(2) 다른 발표자의 코드와의 충돌을 피하기 위해 자바 클래스들은 “팀이름+번호”와 같은 유일한 패캐지 이름이여야 한다.

예) DB2024Team00

(3) 데이터베이스 연결 정보를 포함해야 한다.
데이터베이스 URL: 로컬호스트를 사용하고 포트 번호는 3306이다 “localhost:3306”
데이터베이스 이름: DB2024Team00
데이터베이스 ID: DB2024Team00
데이터베이스의 암호: DB2024Team00
(4) 자바 코드 안에 주석을 사용해서 코드를 이해하기 쉽게 설명한다.


- 레포트:

(1) 선택한 기관의 데이터베이스 필요성 설명 및 요구 분석
(2) ER 다이어그램과 간단한 설명
(3) 데이터베이스 스키마 다이어그램.
 테이블과 컬럼 그리고 관계(relationoships)들을 보여준다
 MS Visio, MySQL Workbench 등을 사용해서 작성할 수 있다.
(4) 자바 코드의 클래스(class)와 메서드(method)에 대한 설명(Javadoc output을 사용할 수 있음)
(5) 필요할 경우, 응용프로그램 설치 및 사용 방법, 연결을 위한 구성(configuration)에 대한 지시 사항 등을 제공해야 한다.
(6) 위의 17개의 요구 사항을 만족함을 보이는 자세한 설명을 보여주어야 한다. 요구 사항과관련된 부분은 코드를 보여주어야 하고 사용자 인터페이스와 관련이 있다면 스크린 캡쳐를 보여주어야 한다.
(7) 요구조건 외의 팀만의 강점이 있다면 기술한다.
(8) 팀의 구성원의 담당 부분을 작성한다. 


- 발표 자료
(1) PPT 자료
(2) 데이터베이스 자바 응용프로그램 시연 동영상 (4분)

 


📊  제출

 제출: 사이버 캠퍼스 제출
마감일: 6월 7일(금요일) 오후 11시


📊  프로젝트 발표

- 프로젝트 중간 발표: 4월 17일(수요일)/ 4월 22일(월요일)
중간 발표 내용
 팀 (구성원) 소개
 프로젝트 주제: 데이터베이스 대상 선정
 데이터베이스 관리 응용프로그램의 메뉴 outline - 요구 명세서 작성 및 분석
 데이터베이스 스키마 포함 가능
 프로젝트 개발 일정


◼ 발표시간: 8분(준비시간 포함)
◼ 마감일: 4월17일(수요일) 오후 11시


- 프로젝트 최종 발표: 6월 10일(월요일), 6월 12일(수요일)
◼ 발표시간 10분
◼ 발표 및 응용 프로그램 시연: 7분(준비시간 포함)
◼ 질문 시간: 3분


💽 과제 기획 - mine

📊  프로젝트 개요

이화여자대학교 백준(솔브닥) 랭킹을 올리기 위한 의욕 고취 프로그램

 

📊  프로젝트 기능

순위 기능

- 현재 순위

- 직전 등수 단체의 이름과 문제 차이 수 

 

오늘의 문제 기능

- 오늘의 추천 문제 (안 푼 문제 중 많이 푼 순 정렬 - 10 문제)

- 찜하기 기능 ( 내가 풀겠다고 클릭하면 오늘의 문제에서 삭제됨. 대신 하루 지나서도 안 풀리면 재등록)

 

알고리즘별 안 푼 문제 보기 기능

- 각 알고리즘 태그(분류) 별로 안 푼 문제 보기 기능( 많이 푼 순 정렬 )

 

티어별 안 푼 문제 보기 기능

- 각 태그별로 안 푼 문제 보기 기능( 많이 푼 순 정렬 )

 

📊  테이블

노노노 갈아엎기

겹치는 속성 투머치 

 

 

<순위>

등수 단체이름 푼 문제 수

 

 

<오늘의 문제>

문제ID (1-10) 문제 번호 문제 제목 티어 푼 사람 수

 

 

<문제 - ALL>

문제 번호 문제 제목 이대가풀었는지 티어 알고리즘 태그(분류) 푼 사람 수

 

<문제 - 안 푼 문제>

문제 번호 문제 제목 티어 알고리즘 태그(분류) 푼 사람 수

 

 

<티어 - unrated>

<티어 - Bronze>

<티어 - Silver>

<티어 - Gold>

<티어 - Platinum>

<티어 - Diamond>

<티어 - Ruby>

문제 번호 문제 제목 이대가풀었는지 티어 푼 사람 수

 

 

<알고리즘 분류 - 자료구조>

<알고리즘 분류 - 구현>

<알고리즘 분류 - 그리디>

<알고리즘 분류 - 문자열>

<알고리즘 분류 - 그래프>

<알고리즘 분류 - 기하>

<알고리즘 분류 - DP>

<알고리즘 분류 - 수학>

문제 번호 문제 제목 이대가풀었는지 알고리즘 분류 푼 사람 수

 

📊  충족 조건

(1) 5개 이상의 테이블을 가지고 있어야 하고 각 테이블들의 컬럼(Attribute)의 수를 합하면 20개 이상이어야 한다. ✅
(2) 초기화를 위해 적어도 30개의 레코드(투플)를 가지고 있어야 한다. (모든 테이블들의 레코드 수의 총합이 30개 이상)


(3) 기본 키(primary key), 외래 키(foreign key), not null 제약조건(not null constraints)를 포함해야 한다

- 기본 키 넣기

- <문제 - ALL> - <문제 안 푼 문제> 외래키 연결

- <문제 - 안 푼 문제>  - <티어> , <알고리즘분류> 외래키 연결

- 기본키, 문제 id 등 not null 제약조건 걸기


(4) 적어도 2개의 뷰를 정의해야 한다. (레포트에 view를 사용한 이유를 설명)  ⃣
(5) 모든 테이블과 뷰의 이름들은 “DB2024_”라는 접두어를 가지고 있어야 한다.


(6) 적어도 4개의 인덱스를 정의해야 한다.  ⃣
(7) 인덱스를 사용하는 쿼리들을 포함해야 한다.  ⃣
(8) 뷰를 사용하는 쿼리를 포함해야 한다.  ⃣
(9) 트랜잭션(transaction)을 포함해야 한다.  ⃣

(10) 중첩된 쿼리(nested query)들을 가지는 쿼리들을 포함해야 한다.  ⃣
(11) 조인 쿼리(join query)들을 가지는 쿼리들은 포함해야 한다.  ⃣

- 어케어케하면 쓸 수 있지 않을까


(12) 매개 변수를 가지면서 동적으로 만드는 쿼리를 포함해야 한다. 다시 말해, 사용자로부터 입력 값을 받고 사용자가 입력한 값으로 쿼리를 생성한다.

- <오늘의 문제> 찜하기 기능


(13) 그래픽 또는 문자 기반의 사용자 인터페이스를 사용해야 한다. 사용하기 쉽고 사용하기에 도움이 되는 정보를 가지고 있는 메뉴를 제공해야 한다.


(14) 데이터베이스에 삽입(insert)을 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.

- <오늘의 문제> 사람들이 문제를 풀어서 그 문제가 삭제되면 새 문제 삽입


(15) 데이터베이스에 갱신(update)을 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.

- 일정 주기로 <문제> 갱신하기 (사람들이 문제 풀었을 수 있으니까)


(16) 데이터베이스에 삭제(delete)를 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.

- <오늘의 문제> 사람들이 문제를 풀면 그 문제를 삭제

- <문제 - 안 푼 문제> 에서도 삭제


(17) 데이터베이스에 검색(select)을 하기 위한 인터페이스와 쿼리를 가지고 있어야 한다.

-  <단체>에서 이화여자대학교 찾기

- <문제> 에서 안 푼 문제 걸러내기 

- 등등 많을 듯 


💽 과제 기획 - final

 

 

DB2024Team00


💽 역할 분담 

- 자바 (프론트)

 

- api 따와서 맨 처음에 넣는 작업 (<문제 - ALL> / <순위> )

- 후가공 (티어 / 알고리즘 분류)

- 후가공 2 (순위 - 직전 순위 / 등등)

- 후가공 3 ( 오늘의 문제)


💽 협업 띵킹

SQL 깃헙에 안 올라가던데

일단 노션에다 정리