혹시 둘 중에 어떤게 더 나은 DB설계일까요? 0 1 714

by 웹린이 [2021.01.21 16:26:05]


1.png (12,106Bytes)
2.png (6,605Bytes)

안녕하세요, 고수분들께는 너무 쉬운 질문일수도 있지만...

 

현재 학생이 등록한 시점부터 매년마다 치루는 연말고사 성적을 입력하는 DB설계를 하고 있는데요! 

학생정보, 학생점수가 주요 데이터값입니다

 

원래는 아래 이미지처럼

학생정보테이블과 학생점수를 입력받는 테이블 2개를 만들어서 서로 조인을 걸려고 했는데요!

 

그런데 학생수가 100명도 채안되고 변동사항이 크게 없을거라면... 

첨부이미지2처럼 한개로 만들어도 될까요? 대신 매년 컬럼 하나씩 추가해야된다는 단점이 있지만요..

 

어떤게 더 나은 DB설계인지 궁금합니다!

===================================================================================

by 마농 [2021.01.21 17:04:25]

테이블을 나누는게 좋습니다.
다만 성적 테이블의 PK를 성적번호라는 인조키를 만들지 말고.
(학생번호, 연도)의 결합키를 사용하는게 어떨까 생각됩니다.

SELECT a.학생번호
     , a.학생이름
     , a.학생주소
     , MIN(CASE b.해당년도 WHEN '2019' THEN b.해당점수 END) "2019점수"
     , MIN(CASE b.해당년도 WHEN '2020' THEN b.해당점수 END) "2020점수"
  FROM 학생 a
  LEFT OUTER JOIN 성적 b
    ON a.학생번호 = b.학생번호
   AND b.해당년도 IN ('2019', '2020')
 GROUP BY a.학생번호
     , a.학생이름
     , a.학생주소
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입