2016-03-19 7 views

答えて

0

あなたのDB構造には、リンクの可能性を持っていません。

テーブルには、別のテーブルにリンクできるキーがありません。

1対多および多対多の関連付けを識別し、それらをキーとして適切な方法で表現する必要があります。

例:あなたは、これらすべてをうまくする必要が

ideleve | idcourse 

私は好きですが、テーブルで表現しなければならないこと、そのテーブルの学生とテーブルのコースは、多対多の関係を持っていると仮定任意のクエリを設計するための構造上の関係

あなたのご意見に続き、私は答えを更新します。現実には、私はこの質問を終わらせることにしなければなりません。問題の設定

例:

Each student is identified by: 
id | name | surname | born_date 

Each course is identified by 
id | course_title 

Students can enroll in multiple courses 

Courses can be held in 1st, 2nd semester or both maintaining the same id and title 

There are up to 3 exams per course per semester 

Notes of each exam can go from 1 to 5 with 1 being the lowest 

Students have to take all the exams, if they do not take an exam their vote is considered 0 for that exam 

はこれが可能につながったでしょう:あなたは、列名から理解することができます暗黙的な関係を持つ

DB構造

table students 
id_student | name | surname 

table courses 
id_course | course_title 

table exams 
id_student | id_course | semester | exam | grade 

を。

は、その後、あなたは...コーディングで

を開始することができます。しかし、ここで私は、学生、コース、試験やgardesとその関係上の仮定の全体の多くを作っています!

DBを設計するには、エンティティと関係の分析が必要です。

あなたが言っているように、あなたが言っているように、この分析は複雑ではありませんが、実行しなければならないプログラムは非常に簡単ですが、誰もそれを行うことはできません。最終的にはあなたが行うことができ、問題を明確にあなたの最後のコメントに続いて

:表試験の

DB構造

table students 
id_student | name | surname | birthdate 

table courses 
id_course | course_title | year | semester 

table exams 
id_student | id_course | year | semester | test | exam | grade 

例は次のようになります。

id_student | id_course | year | semester | test | exam | grade 
-------------------------------------------------------------- 
    2701  | K409  | 2015 | 1  | 1 | NULL | 4 
    2701  | K409  | 2015 | 1  | 2 | NULL | 4 
    2701  | K409  | 2015 | 1  | 3 | NULL | 4 
    2701  | K409  | 2015 | 0  | NULL | NULL | 3 
    2701  | K405  | 2015 | 1  | 1 | NULL | 4 
    2701  | K405  | 2015 | 1  | 2 | NULL | 4 
    2701  | K405  | 2015 | 1  | 3 | NULL | 4 
    2705  | K405  | 2015 | 0  | NULL | NULL | 3 
    2705  | K409  | 2015 | 2  | 1 | NULL | 4 
    2705  | K409  | 2015 | 2  | 2 | NULL | 4 
    2705  | K409  | 2015 | 2  | 3 | NULL | 4 
    2705  | K409  | 2015 | 0  | NULL | NULL | 3 
    2705  | K407  | 2015 | 2  | 1 | NULL | 4 
    2705  | K407  | 2015 | 2  | 2 | NULL | 4 
    2705  | K407  | 2015 | 2  | 3 | NULL | 4 
    2705  | K407  | 2015 | 0  | NULL | NULL | 3 

あなたは試験にコースをリンクすることができます/複数列キーによるテスト:

id_course-year-semester 

試験/テストへのリンク学生と:あなたが持っている試験/テスト用テーブルを通してコースに

id_student 

リンク学生:

id_student | id_course-year-semester 

学生がAコースに登録するときことを意味このような記録は、試験/テストテーブルになります。

id_student | id_course | year | semester | test | exam | grade 
-------------------------------------------------------------- 
    2701  | K409  | 2015 | 1  | NULL | NULL | NULL 

よろしく

+0

コースにはいくつの試験がありますか?どの学期にどのコースがありますか?しかし、コーステーブルには多くのコースがあります... corse_id | course_name |学期|試験など。問題はあまりにも漠然としてDBの設計に役立ちます。あなたは達成しようとしていることを説明する必要があります.... –

+0

問題を表現してください。問題が設定されていない場合、どのように答えを設計できますか?あなたは何を達成しようとしていますか?テーブルの話をする前に実際の生活コンテストを説明してください... –

+0

コースは、1学年、2学期、または両方で同じIDとタイトルを保持することができます:これは2科目で同じコースが取られます。学期ごとにコースごとに:各学期の各コースについて、テストを行います。試験は昨年行われます。今混乱はテーブルの試験にある id_student | id_course |学期|試験|学期の学期が試験に属するのか、学期に属するのかを知ることは不可能です。それを修正するには? – stack

関連する問題