본문 바로가기
DB/Modeling_Example

중학교 성적관리 프로젝트(part 2)

by Mr.DonyStark 2023. 10. 20.

중학교 성적관리 프로젝트(part 1) 이어서....

□ 상황
 ○ 과목, 학년별 담당 선생님이 따로있음
 ○ 시엄은 중간/기말고사 두가지임
 ○ 학생들은 학년, 반에 배정되며 반별로 학생들에게 고유 번호를 부여함
 ○ 각 반에는 담임 선생님이 배정되어 있음. 선생님 중에는 담임을 맡지 않는 선생님도 있음
 ○ 한 번의 학생은 대략 40명 정도이고 남녀 공학임
 ○ 석차는 남녀 공통 1등부터 순서대로 정함


▼▼▼▼▼▼1단계 : 키워드 추출▼▼▼▼▼

○ 과목 선생

○ 담당 선생
○ 시험 - 중간고사, 기말고사
○ 학생, 학년, 반, 배정, 고유번호(반별)
○ 담임, 선생님
○ 한반의 학생 40명
○ 남녀 공학
○ 석차(남녀 공통 1등부터 순서대로)


▼▼▼▼▼2단계 : 명사/동사에 따른 테이블 분류▼▼▼▼▼


○ 마스터 테이블(명사) = 기준 테이블
   * 한번 선정되어 모델링되면 수정이 될 일이 적음
   * 때문에 파악할 때 정확히 분석하여 모델링을 진행해야함
   * 코드성 인 고정 테이블은 모델링 후 데이터를 적재한후 봉인(Insert, update 방지)함
 - 학생(40명 가량, 반/반별 고유번호 존재), 학년, 반
 - 과목 선생님(담임/비담임)
 - 성적(석차 = 반/학년별 석차)   [테이블 내 속성정도로 인지, but 인터뷰 중 중요하다는 사실이 파악되면 마스터 테이블로 모델링]
 - 중간고사, 기말고사
○ 관계 테이블(동사)
 - 시험
 - 반 배정

 

□ 프록시저 생성

 ○ 프록시저란 저장 프로시저 또는 스토어드 프로시저(stored procedure)는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합을 의미.

 ○  즉, 특 작업을 위한 쿼리들의 블록이자 함수임

 ○ 프록시저를 지정하고 활용함으로써 쿼리작성 및 데이터 적재, 수정, 삭제 등을 효율적으로 진행할 수 있음

 ○ 아래 쿼리문은 특정 테이블에 데이터를 적재할수 있는 프록시저를 생성하는 것임. 

   * 프록시저 생성시 클래스를 생성하며 클래스안에 파라미터(매개변수)를 지정해야함

--프록시저 클래스 설정
CREATE PROCEDURE SP_Insert_SchoolClass
	@SchoolGradeID	tinyint,
	@SchoolClassID	tinyint,
	@SchoolClassName varchar(50)
AS
BEGIN
	insert into tb_schoolclass (SchoolGradeID, SchoolClassID, SchoolClassName)
	values (@SchoolGradeID, @SchoolClassID, @SchoolClassName)
END
GO

--생성된 프록시저 실행문 [형식 : exec + 프록시저명 + 파라미터]
--프록시저 실행
--프록시저 파일명 기재 후 파라미터(매개변수)만 기재
--프록시저 실행 및 파라미터 기재하여 데이터 삽입
--1학년
exec SP_Insert_SchoolClass 1,1,'1반'
exec SP_Insert_SchoolClass 1,2,'2반'
exec SP_Insert_SchoolClass 1,3,'3반'
--2학년
exec SP_Insert_SchoolClass 2,1,'1반'
exec SP_Insert_SchoolClass 2,2,'2반'
exec SP_Insert_SchoolClass 2,3,'3반'
--3학년
exec SP_Insert_SchoolClass 3,1,'1반'
exec SP_Insert_SchoolClass 3,2,'2반'

--조회
select*from tb_schoolclass

□ 테이블 추가 : 과목 테이블, 과목개강 테이블(관계이자 동사), 선생 테이블