2012-03-09 2 views
1

내 소프트웨어 엔지니어링 코스에서는 더 큰 프로젝트의 일부로 HSQLDB를 사용하여 데이터베이스를 구현해야합니다. 불행히도 아직 데이터베이스 디자인을 채택하지 않았으며 우리 그룹의 5 명 중 3 명이 과정을 중단하여이 부분을 맡겼습니다. enter image description hereSQL 데이터베이스 ER 다이어그램

는 우리가해야하는 과목의 목록이며, 각 과정은 많은 모듈을 포함 : 지금 현재로

, 나는 우리의 프로젝트에 대한이 ER 다이어그램을 마련했습니다. 모든 계정은 어떤 코스에 등록 될 수 있으며 코스의 각 모듈에 액세스 할 수있게 해줍니다. 점수는 등급이 매겨지며 마크는 계정에 저장됩니다.

제가 생각해 본 다이어그램이 상당히 잘 표현한다고 생각합니다. 그러나 저는 방금이 사실을 알기 시작했습니다. 그래서 나는 아직도 불안정합니다.

이 점이나 개선 될 수있는 부분에 대해 잘못 나온 점이 있습니까?

P.s - 모듈 테이블에 나타났습니다. 실제로는 module_grade에 있어야하는 grade가 포함되어 있습니다.

+0

HW이므로 가능한 개선점을 찾는 데 도움이되는 몇 가지 질문을하겠습니다. 학생 (AKA 계정)이 필수 과목을 통과하지 못하면 어떻게됩니까? 그들은 학교를 그만 두었습니까? 학생이 등록하지 않은 코스의 모듈을 가져 가지 못하게하려면 어떻게합니까? 학기 또는 분기를 추적해야합니까? 'course_grade' 엔티티의 목적은 무엇입니까? 왜 '학년'은 부동 데이터 유형이 아닌 다른 유형입니까? 'Module' 엔티티에서 복합 기본 키를 사용하면 어떤 이점을 얻을 수 있습니까? (그 문제는 인덱스로 해결할 수 있습니까?) – gangreen

+0

우리는 다음 반복에서 실패를 구현할 계획이며, 우리 중 5 명은 5 명의 사람 프로젝트가되어야한다고 생각합니다. 학생들은 별도의 인터페이스를 통해 관리자 계정별로 코스에 추가됩니다. DB에 액세스하기위한 인터페이스가 완료되었습니다. 우리는 이미 스텁을 구현했습니다. 학기, 분기 아니오. course_grade에 10 진수를 넣는 것을 잊어 버렸습니다. module_grades의 합계입니다. 나는 왜 학년이 부유해야하는지 또는 부끄러워서는 안되는지 전혀 모른다. 나는 십진법으로 전환하라는 지시를 받았다. 모듈의 PK는 내가 깨달은 것입니다. – Tanner

+0

조금 더 기다려주세요 ... 누군가가 당신을 위해이 문제를 해결할 것입니다. ;) –

답변

0

Course_grade 테이블은 모델에서 쓸모가 없습니다. 모듈 대신 course_grade 및 module_grade에 등급 정보를 저장해야합니다. 모듈을 마스터 데이터라고 생각하면 (모든 학생에게 사용하기를 원하는 것입니다.) 학생의 특정 정보를 그 안에 저장해서는 안됩니다.

적어도 학생이 정보를 얻었을 때 확인할 수 있도록 적어도 등급 정보가있는 테이블 안에 타임 스탬프를 모델에 추가합니다. 학년을 제공 한 사람이 사용할 수있는 정보가 있다면 아마도 그 정보도 함께 저장해야합니다.

SQL을 사용하여 모델에 액세스하는 경우 course_grade 및 module_grade의 외래 키 열을 고유 한 것으로 변경하는 것이 좋습니다. 이렇게하면 쿼리를 훨씬 더 읽기 쉽도록 만들 수 있습니다. course_id에서 cg_course_id로 이름을 바꾸는 코스 용 등급 일 수도 있습니다.

+0

'module_grade'는'module'과'account_course'에 FK를 가져야한다고 생각합니다. 그리고 PK는 트리플 (number, course_id, acc_id)'입니다. 이것은 학생이 자신이 등록한 코스의 모듈에만 등록하고 성적을받을 수 있도록하기위한 것입니다. –

관련 문제