2013-06-11 2 views
1

나는 모든 학생들의 성적을 포함하는 학교용 소프트웨어를 만들고 있는데, 그 학교의 모든 것들과 그 모든 것들을 확인하도록하고있다. 학생들과 정보를 담고있는 4 가지 등급의 각 데이터베이스에 대한 테이블을 가지고 있습니다 - 클래스 블로그의 URL과 같은 클래스 데이터도 저장해야합니다. 모든 학생들과 함께 배치 할 수 없기 때문에 데이터를 저장하는 것이 가장 좋은 방법이 무엇인지 궁금합니다. 다음은 데이터베이스의 테이블입니다.데이터베이스의 클래스 데이터를 구성하는 가장 좋은 방법은 무엇입니까?

Teachers (stores teachers & their emails, passwords, etc) 
Alpha (stores all the alpha kids) 
Beta (stores all the beta kids) 
Gamma (gamma kids) 
Delta (delta kids) 

미리 감사드립니다!

+6

"데이터 정규화"또는 "데이터 정규화"에 대한 기본 연구를 수행하십시오. 학생들은 4 개의 테이블을 가지지 않을 것이며 학생 테이블과 성적 테이블을 가질 것입니다 (1-12 점 이상이 필요하면 등) 학생은 grade_id를 갖게됩니다. – Jessica

+0

about * Alpha * kids 여기에 대해 농담을하십시오 –

답변

1

개인적으로, 나는 각 학년을위한 테이블을 가지지 않을 것입니다. 왜? 학년과 관계없이 모든 데이터가 동일하기 때문입니다. "date_student_graduted"또는 "age_of_student"와 같은 열을 추가하려는 경우에는 ...이 테이블 중 4 개를 모두 업데이트해야합니다.

대신 모든 학생을 저장하고 등급을 나타내는 열이있는 1 개의 표를 만드십시오.

학생을 특정 수업과 연관 시키려면 각 학생과 수업에 특정 ID를 부여하여 관계를 만듭니다 (이미이 작업을 수행하고있을 것입니다).

"classes_id"와 같은 것을 말하는 열을 students 데이터베이스에 작성한 다음 학생이 떨어져있는 클래스 ID를 넣습니다.

예를 들어, 클래스와 그 클래스 내의 모든 학생을 선택하려면 먼저 클래스를 선택하고 데이터베이스에 들어가는 루프를 가지며 class_id가 해당 클래스와 일치하면 각 학생을 선택합니다 현재 클래스 ID.

//Pseudo code 

//select all classes 
$classes = mysql_query('SELECT * FROM classes'); 

foreach($classes as $class) { 

    $class_id = $class['class_id']; 

    $students = mysql_query("SELECT * FROM students where class_id='$class_id' "); 

    echo "list of students in the class $class[name] <br>"; 

    foreach($students as $stu) { 

    echo "$stu[name] <br>"; 

    } 




} 
+0

고마워요,하지만 클래스 블로그 URL과 같은 클래스 전체 데이터를 어떻게 저장합니까? – russellsayshi

+0

다른 테이블에 있음. 열 : 아이디, class_name을, class_grade, class_blog_url, created_time, 등 – Oscar

관련 문제